Frage

Ich versuche, herauszufinden, die effizienteste und skalierbare Art und Weise eine Verarbeitungswarteschlange Mechanismus in einer SQL-Datenbank zu implementieren. Die kurze davon ist, dass ich ein paar ‚Domain‘ Objekte mit zugehörigen ‚Backlink‘ Statistiken habe. Ich möchte effizient ihre Back verarbeitet haben, welche Domains müssen herausfinden.

Domain Tabelle: id, domainname

Back Tabelle: id, DomainID, zählen, checkedTime

Die Back Tabelle viele Datensätze (eine Geschichte zu halten) hat zu einer Domain Rekord. Ich muss effizient Domains auswählen, die durch ihre Back verarbeitet haben. Dies könnte bedeuten, dass der Back Rekord mit dem jüngsten checkedTime weit genug in der Vergangenheit ist, oder dass es überhaupt für eine Domain Rekord kein Back Rekord. Domains müssen für die Verarbeitung von einer Vielzahl von Faktoren bestellt werden, von der ältesten checkedTime einschließlich der Bestellung zuerst.

Es gibt mehrere "Leser Verarbeitung Domänen. Wenn die gleiche Domain zweimal verarbeitet wird, es ist keine große Sache, aber es ist eine Verschwendung von CPU-Zyklen.

Der Arbeiter nimmt eine unbestimmte Zeit eine Domäne zu verarbeiten. Ich würde es vorziehen, eine Sicherung in dem Sinne zu haben, dass eine Kasse würde ‚verfallen‘ und nicht den Arbeitsprozess erfordert einen Datensatz explizit ‚checkin‘, wenn es fertig ist, falls der Arbeiter aus irgendeinem Grund fehlschlägt.

Das große Problem hier ist die Skalierung. Von Anfang an werde ich leicht über 2 Millionen Domains haben, und diese Zahl wird halten täglich wächst. Das bedeutet, meine Back Geschichte schnell wachsen, wie ich zu Prozess in einigen Fällen erwarte täglich, und andere Fälle wöchentlich für jede Domain. Die Frage wird, was ist der effizienteste Weg, Domains zu finden, die Backlinks Verarbeitung erfordern?

Vielen Dank für Ihre Hilfe!

War es hilfreich?

Lösung

habe ich beschlossen, Struktur Dinge ein wenig anders. Stattdessen Domänen zu finden, die auf der Grundlage der Kriterien von mehreren Tabellen verarbeitet werden müssen, bin ich die Zuweisung eines Datum, an dem jeweils metric Bedarf für eine bestimmte Domäne verarbeitet werden. Dies macht die Domänen zu finden viel einfacher von einer Abfrage benötigen verarbeiten.

beendete ich die Idee von Chargen bis mit dem ich Domains Prozess finden, markieren Sie sie, wie durch einen Batch-ID verarbeitet werden, dann wieder die Domänen an den Arbeitnehmer. Wenn der Arbeiter getan wird, gibt es die Ergebnisse, und der Ansatz wird gelöscht, und die Domänen werden natürlich für die Verarbeitung in der Zukunft wieder bereit sein.

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