2012-04-03 6 views
8

Devo ottenere un'applicazione con drools ma, sembra che DROOLS non possa ragionare su un grande numero di oggetti contemporaneamente. Voglio sapere se potrebbe ragionare sui dati memorizzati in un database relazionale e non nella workingMemory.potrebbe sbalordire il motivo sui dati memorizzati in un database relazionale (utilizzando HIbernate ad esempio)

grazie per qualsiasi aiuto :)

+0

Tipo di collegamento: http://stackoverflow.com/questions/8509993 –

+0

grazie per il link utile – fennou

+0

Vuoi che Drools mantenga i dati, invece di essere completamente in memoria? E per ragionare in modo trasparente su un livello di persistenza e salvare i risultati? – aitchnyu

risposta

5

La tua domanda è abbastanza ampia. La risposta è al fine di ragionare sui dati, a meno che non si stia lavorando con stored procedure, qualsiasi applicazione (sbavature o meno) dovrà caricare i dati nella JVM. I dati possono quindi, in un'applicazione Drools, essere inseriti nella memoria di lavoro (si noti che ciò non causa alcuna operazione di copia come funziona con i POJO dell'applicazione standard come fatti) o può essere recuperato su richiesta dalle regole usando il " da "elemento condizionale. Hibernate usa anche POJO e Drools non ha problemi a lavorare con loro.

"sbava non può ragionare su un gran numero di oggetti contemporaneamente"

Non so cosa vuoi dire con questo? quanto è un numero grande? Ho lavorato personalmente con alcune applicazioni di drools che utilizzavano più di un milione di fatti contemporaneamente in ogni istanza della memoria di lavoro, con un tempo di risposta medio per l'esecuzione della regola nell'ordine dei 100 ms. Qui puoi vedere una presentazione di un consulente che ha lavorato a un progetto in cui le regole dovevano interrogare e ragionare su dati storici di oltre 30 milioni di record in tempo reale: http://vimeo.com/27209589. Ha usato un database noSQL per questo.

Le applicazioni di grandi dimensioni richiedono più cura durante la progettazione dell'architettura, naturalmente, ma questo vale sia per Drools che per qualsiasi tecnologia. Se specifichi il tuo caso d'uso, possiamo darti consigli più specifici. Raccomanda anche di controllare la mailing list di Drools perché ci sono un sacco di buoni consigli per la progettazione dell'applicazione.

Spero che aiuti a chiarire.

+0

grazie per la tua risposta. Ecco alcuni dettagli. Sto lavorando su un'applicazione di rilevamento delle frodi bancarie e, come sai per una determinata banca, centinaia di migliaia di transazioni vengono eseguite ogni giorno (potrebbero essere milioni). quello che voglio fare è, alla fine di ogni giorno, dare quegli oggetti (transazioni) a sbavare (metterli nella memoria di lavoro) e alcuni dati storici riguardanti i clienti della banca (centinaia di migliaia o milioni) e attendere la risposta di sbavare ., ma quello che ottengo è: -un tempo di risposta molto lento. -outofmemoryerror java heap space. grazie per il tuo aiuto :) :) perdona il mio inglese rotto :) – fennou

+2

Questo caso d'uso è molto simile a quello nella presentazione video che ho linkato sopra. Di solito, i dati storici non devono essere caricati con entusiasmo nella memoria di lavoro, in quanto raramente viene utilizzato nel suo complesso. I dati storici possono essere recuperati su richiesta utilizzando il "da" CE nelle regole, in modo da recuperare solo i dati necessari. L'uso di un database cache o noSQL per questo aiuterà a migliorare i tempi di risposta. –

+0

grazie mille per questa risposta molto utile, cercherò di seguire quei passaggi, e se avrò problemi, verrò a cercarmi di aiutarli a risolverli :) perdonami per favore il mio inglese rotto :) – fennou

Problemi correlati