문제

나는 명백한 인간의 상호 작용에 의해 각 단계마다 완전히 구동되는 워크 플로 시스템을 작성하고 있습니다. 즉, 과제는 사람에게 할당되며, 그 사람은 몇 가지 제한된 옵션을 선택하여 {승인, 거부, 전진}을 선택한 다음 다음 사람에게 보내거나 종료됩니다.

Oracle Streams/AQ가 일반 웹 애플리케이션 코드에서 관리하는 플랫 테이블에 제공 할 것이 있는지 궁금합니다. 각 동작 후 처리량은 상당히 제한되어 있으며 볼륨이 크게 높지 않으므로 대기열에 던져서 물건을 스로틀 할 필요는 없습니다. 대기열 구조를 도입하면 어떤 이점이 있습니까? 아니면 내 상황에 대한 과잉입니까?

도움이 되었습니까?

해결책

대기열 시스템이 유익한 이유는 여러 가지가 있지만, 그들이 당신의 상황에 적용되는지는 확실하지 않습니다. 단일 시스템이 모두 단일 데이터베이스에 저장된 것 같습니다. 따라서, 나는 대기열이 일반 테이블보다 어떤 이점을 제공 할 것이라고 생각하지 않습니다.

AQ가 혜택을 제공하는 상황 : - 서로 다른 시스템 (다중 데이터베이스)을위한 메커니즘으로 서로 대화 할 수 있습니다.

  • 느슨하게 결합 된 시스템이있는 경우 - 알려지지 않은 수의 가입자에게 보내는 메시지 제작자

설명과 같은 단일 시스템에서 상태를 관리하는 방법으로 Streams/AQ가 과도하게 될 것이라고 생각합니다.

다른 팁

대기열의 가장 큰 장점은 실제로 어려운 일관성 문제를 만들 수 있다는 것입니다 (프로세스를위한이 레코드 중 하나와 하나의 스레드를 표시). 대기하지 않고, 당신은 그런 종류의 행동을 시도하지만 보장 할 수는 없으며, 실패한 스레드를 업데이트하고 검사하는 많은 중간 상태를 수행해야합니다.

10G 이하에서 Oracle은 SKIP LOCKED 최종 사용자가 허용되지 않은 구문. 11G에서, 그 구문은 사람들이 AQ 구현을 요구하지 않고 해당 문제를 해결할 수 있도록 노출되었습니다.

AQ의 보조 장점은 큐 정리가 비동기식이라는 것입니다.

AQ의 큰 단점은 크기와 유지 보수입니다. 하나는 단일 지속적인 대기열 / 주제에 대한 7 개의 테이블 / iot의 순서를 작성하게되며 해당 데이터베이스 객체를 직접 유지 관리 할 수는 없지만 유지 관리를 수행해야합니다. DBMS_AQ 및 DBMS_AQADM 패키지.

응용 프로그램이 실제로 적고 몇 분의 대기 시간이 허용된다고 가정하면 두 가지를 피하고 구식 트리거를 사용하여 내 로지 테이블을 채 웁니다. 그런 다음 PL 작업으로 처리 할 것입니다. 추가 기능/복잡성을 피하기 위해 AQ가 가져옵니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top