Frage

Ich schreibe ein Workflow-System, das vollständig bei jedem Schritt durch explizite menschliche Interaktion angetrieben wird. Das heißt, eine Aufgabe zu einer Person zugeordnet ist, dass die Person wählt aus einigen begrenzten Möglichkeiten {genehmigen, ablehnen, vorwärts}, und dann wird es entweder an die nächste Person oder beendet wird.

gesendet

Einfach nur neugierig, wenn Oracle Streams / AQ etwas zu bieten über flache Tabellen hat durch regelmäßigen Web-Anwendungs-Code verwaltet. Die Menge der Verarbeitung nach jeder Aktion ist ziemlich begrenzt und das Volumen ist nicht sehr hoch, so ist es nicht wirklich eine Notwendigkeit, Gas Dinge, indem sie in eine Warteschlange zu werfen. Was sind einige der Vorteile der Verwendung einer Warteschlangenstruktur einzuführen, oder ist es übertrieben für meine Situation?

War es hilfreich?

Lösung

Es gibt viele Gründe, ein Warteschlangensystem ist von Vorteil, aber ich bin nicht sicher, ob sie in Ihrer Situation anwenden. Es klingt wie Sie in einer einzigen Datenbank ein einziges System alle gespeicherten haben. Als solches glaube ich nicht, Warteschlangen irgendeinen Vorteil gegenüber normalen Tabellen bieten würden.

Situationen, in denen AQ Vorteile bietet umfassen:  - als Mechanismus für verschiedene Systeme (mehr Datenbanken) miteinander

-to-talk
  • wann haben Sie lose gekoppelten Systemen - ein Hersteller von Nachrichten an eine unbekannte Anzahl von Abonnenten zu senden

Als ein Weg Zustand in einem einzigen System zu verwalten, wie Sie beschreiben, ich denke, Bäche / AQ sein Overkill würde.

Andere Tipps

Der große Vorteil mit Warteschlangen ist es Concurrency Probleme machen kann, die sonst sehr schwer sind (man zeigen, und nur ein Thread dieser Datensatz für die Verarbeitung) wirklich einfach. Ohne Warteschlangen, könnten Sie versuchen, aber nicht zu gewährleisten, dass die Art von Verhalten, und man müsste viel Zwischenzustand Aktualisierung am Ende tut und die Überprüfung für gescheiterte Threads.

In 10g und unten, implementiert Oracle die Transaktions dequeue Betrieb mit der SKIP LOCKED Syntax, die Endanwendern wurden nicht zugelassen. In 11g hat die Syntax ausgesetzt worden, damit die Menschen, dieses Problem zu lösen (Zeigen Sie mir den nächsten Datensatz) ohne AQ zu erfordern Implementierungen.

Ein sekundärer Vorteil von AQ ist, dass die Warteschlange cleanup asynchron ist.

Der große Nachteil von AQ ist seine Größe und Wartung - ein Ende nach oben zu schaffen in der Größenordnung von 7 Tischen / IOT für ein einziges beständige Warteschlange / Thema, und man kann diese Datenbankobjekte nicht direkt halten, aber Sie müssen tun Wartung durch die DBMS_AQ und DBMS_AQADM Pakete.

Wenn Ihre Anwendung ist wirklich so geringes Volumen und ein paar Minuten Latenz unter der Annahme, akzeptabel ist, würde ich beide zu vermeiden und alte Schule Trigger verwenden, um meine eigenen Logging-Tabellen zu füllen. Ich würde diese dann mit pl Jobs verarbeiten. Alle zusätzlichen Features / Komplexitäten AQ bringt zu vermeiden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top