2013-06-30 5 views
0

많은 컴퓨터가 쓰여지지만 각 컴퓨터가 평생 쓸 때만 대기열을 만들고 싶습니다. 그 목표를 달성하는 가장 좋은 방법은 무엇이라고 생각하십니까?여러 작성자와 하나의 판독기가있는 SQL Server에서 메시지를 대기열에 넣는 가장 좋은 방법

SQL Server 큐, 큐 또는 서비스 브로커 인프라로 사용되는 SQL Server 테이블에 대해 읽었습니다.

  • SQL Server 테이블 : 꽤 쉽게 만들 수 있지만 성능
  • 서비스 브로커의 두려워 : 더 복잡한 인프라를 제공합니다. 그것은 당신이 보낸 사람에 대한 서비스를 실행하고 내 모든 경우에만 하나의 메시지를 보낼 수 있기 때문에 내 경우에는 쓸모없는 보낼 대기열을 가지고있는 것 같습니다.

내 경우에는 어떤 해결책이 가장 좋을까요?

답변

0

각 컴퓨터에 서비스를 만들 필요가 없습니다. Service Broker 개체는 하나의 DB 서버로 제한 될 수 있습니다. 예를 들어 메시지를 삭제해야하는 컴퓨터가 100 대있는 경우 데이터베이스 서버에 대한 연결 문자열이 필요하며 해당 메시지를 대기열에 포함하는 저장 프로 시저를 실행해야합니다.
그 말은 서비스 브로커 큐가 과도기라고 생각합니다. 간단한 테이블만으로도 충분할 수도 있고 MSMSQ (DB에 연결할 필요가 없어 질 것입니다.)가 더 좋을 수도 있습니다.

0

생산 코드는 테이블을 대기열로 사용합니다. 우리는 Service Broker의 견고 함을 실제로 필요로하지 않으며 모든 코드는 이미 다른 것들을 위해 데이터베이스에 연결되어 있습니다.

우리의 코드는 초당 수 백 건 이상의 트랜잭션을 필요로하지 않으며, 큐가 초당 10,000 건 이상의 트랜잭션을 처리 할 수 ​​있다는 것을 보여 주었기 때문에 성능에 상당히 만족합니다. http://rusanu.com/2010/03/26/using-tables-as-queues/

내가 처음 그것을 읽기를 포기하지 않고 테이블을 설계하지 않을 :

다음은 큐으로 사용하기 위해 테이블을 설계하는 방법을 설명하는 좋은 기사입니다.

우리 회사는 수십 억 또는 수십만 건의 삽입을 필요로하는 디자인을 고려하고 있으므로 디스크 액세스가 필요하지 않은 Redis와 관련된 대체 대기열 전략도 고려하고 있습니다. 실패시 데이터 처리량이 필요한 경우 해당 메소드에도 고려 사항을 제공합니다.

0

전체 시스템을 "여러 작가와 한 독자"에서 "한 작가와 한 독자"로 전환하는 더 좋은 방법일까요? 나는 당신이 쓰기 요청을 받고 데이터베이스에 유일한 작가가 될 일부 서비스 (웹 또는 기타)를 만들 수 있음을 의미합니다. 이것은 일반적인 상황이며 많은 표준 솔루션을 제공합니다.