2012-04-03 13 views
8

Muszę uzyskać aplikację z droolami, ale wydaje się, że DROOLS nie może wykryć dużej liczby obiektów jednocześnie. Chcę wiedzieć, czy może rozumować nad danymi przechowywanymi w relacyjnej bazie danych, a nie w pamięci roboczej.może odrzucić powód nad danymi przechowywanymi w relacyjnej bazie danych (używając na przykład HIbernate)

dzięki za pomoc :)

+0

Podobne informacje: http://stackoverflow.com/questions/8509993 –

+0

dziękuję za przydatne łącze – fennou

+0

Czy chcesz, aby Drools utrzymywał dane, zamiast być w pełni w pamięci? Czy w sposób przejrzysty przeniknąć warstwę uporczywości i zapisać w niej wyniki? – aitchnyu

Odpowiedz

5

Twoje pytanie jest dość szeroki. Odpowiedź brzmi: aby zrozumieć dane, chyba że pracujesz z procedurami przechowywanymi, każda aplikacja (drools lub nie) będzie musiała załadować dane do maszyny JVM. Dane mogą następnie zostać wstawione do pamięci roboczej w aplikacji Drools (należy pamiętać, że nie powoduje to żadnych operacji kopiowania, ponieważ drools działa ze standardowymi POJO jako faktami) lub może być pobrane na żądanie według reguł, używając " z "elementu warunkowego. Hibernate wykorzystuje także POJO i Drools, które nie mają problemów z pracą z nimi.

„ślini nie można rozumieć na dużą liczbę obiektów jednocześnie”

Nie wiem, co masz na myśli? ile jest dużej liczby? Osobiście pracowałem z kilkoma aplikacjami drools, które wykorzystywały ponad milion faktów jednocześnie w każdym wystąpieniu pamięci roboczej, ze średnim czasem odpowiedzi na wykonanie reguły w porządku 100 ms. Tutaj możesz zobaczyć prezentację konsultanta, który pracował nad projektem, w którym reguły musiały wyszukiwać i analizować dane historyczne z ponad 30 milionów rekordów w czasie rzeczywistym: http://vimeo.com/27209589. Wykorzystał do tego bazę danych noSQL.

Duże aplikacje będą wymagały więcej uwagi przy projektowaniu architektury, oczywiście, ale dotyczy to zarówno Drools, jak i każdej technologii. Jeśli szczegółowo określisz przypadek użycia, możemy udzielić Ci bardziej szczegółowych porad. Zalecamy również sprawdzenie listy mailingowej Drools, ponieważ jest tam mnóstwo dobrych wskazówek dotyczących projektowania aplikacji.

Mam nadzieję, że pomoże to wyjaśnić.

+0

dzięki za odpowiedź. tutaj są pewne szczegóły. Pracuję nad aplikacją do wykrywania oszustw bankowych, a jak wiadomo dla danego banku, setki tysięcy transakcji wykonuje się codziennie (może to być milion). co chcę zrobić, to na koniec każdego dnia, przekazywać te objetcs (transakcje) do ślin (umieść je w pamięci roboczej) i niektóre historyczne dane dotyczące klientów banku (setki tysięcy lub milionów) i czekać na odpowiedź śliniaków ., ale otrzymuję: - bardzo wolny czas odpowiedzi. -outofmemoryerror przestrzeń sterty java. dziękuję za pomoc :) :) wybacz mój zepsuty angielski :) – fennou

+2

Ten przypadek użycia jest bardzo podobny do przedstawionego w prezentacji wideo, którą dołączyłem powyżej. Zazwyczaj dane historyczne nie powinny być wczytywane z zapałem do pamięci roboczej, ponieważ rzadko są używane jako całość. Dane historyczne można pobrać na żądanie, korzystając z "z" CE w swoich regułach, aby pobrać tylko te dane, których potrzebujesz. Wykorzystanie bazy danych pamięci podręcznej lub bazy danych bez bazy danych pomoże w poprawie czasów odpowiedzi. –

+0

dziękuję bardzo za tę bardzo przydatną odpowiedź, postaram się podążać za tymi krokami, a jeśli pojawią się problemy, przyjdę po pomoc, aby mi je rozwiązać :) proszę wybaczyć mój zepsuty angielski :) – fennou

Powiązane problemy