Ich werde das Bibliothekssystem einer Universität verwenden, um meinen Anwendungsfall zu erklären. Die Schüler registrieren sich im Bibliothekssystem und geben ihr Profil an: Geschlecht, Alter, Abteilung, vorher abgeschlossene Kurse, aktuell registrierte Kurse, bereits ausgeliehene Bücher usw. Jedes Buch im Bibliothekssystem definiert einige Ausleihregeln, die zum Beispiel auf dem Profil der Schüler basieren ein Lehrbuch für den Computeralgorithmus kann nur von Schülern ausgeliehen werden, die gegenwärtig in dieser Klasse registriert sind; ein anderes Lehrbuch darf nur von Studenten in der Mathematikabteilung ausgeliehen werden; Es könnte auch Regeln geben, so dass die Schüler höchstens 2 Computer-Vernetzungsbücher ausleihen können. Als Folge der Ausleihregeln sieht ein Student, wenn er im Bibliothekssystem sucht/blättert, nur die Bücher, die er ausleihen kann. Also, die Anforderung kommt wirklich auf die Linie der effizienten Generierung der Liste der Bücher, die ein Student ausleihen kann.Sollte ich Drools in dieser Situation verwenden?
Hier ist, wie ich das Design mit Drools Vision - jedes Buch wird eine Regel mit ein paar Einschränkungen Feld auf dem Schüler Profil als LHS, die RHS der Buchregel fügt einfach die Buch-ID zu einer globalen Ergebnisliste, dann Alle Buchregeln werden in eine RuleBase geladen. Wenn ein Schüler das Bibliothekssystem durchsucht/browtet, wird aus der RuleBase eine statusfreie Sitzung erstellt und das Profil des Schülers als Tatsache bestätigt, dann wird jedes Buch, das der Schüler ausleihen kann, seine Buchregel auslösen und Sie erhalten die vollständige Liste der Bücher Die Schüler können in der globalen Ergebnisliste ausleihen.
Ein paar Annahmen: Die Bibliothek wird mit Millionen von Büchern umgehen; Ich erwarte nicht, dass die Buchregel zu kompliziert ist, 3 einfache Feldbeschränkungen für jede Regel im Durchschnitt höchstens; Die Anzahl der Schüler, die das System handhaben muss, liegt im Bereich von 100 K, daher ist die Belastung ziemlich hoch. Meine Fragen sind: Wie viel Speicher werden Drools nehmen, wenn sie mit einer Million Buchregeln geladen sind? Wie schnell wird es sein, dass all diese Millionen Regeln ausgelöst werden? Wenn Drools die richtige Lösung ist, würde ich gerne einige Best Practices für die Entwicklung eines solchen Systems von erfahrenen Benutzern hören. Vielen Dank.
Da Ihre Rule Constraints tatsächlich in der Datenbank sitzen - warum nicht einfach SQL Queries verwenden, um zu erreichen, ob einem Benutzer erlaubt oder nicht erlaubt wird, diese Bücher zu bekommen. – Jasper