2012-04-03 17 views
8

tôi phải đạt được một ứng dụng với các giọt nước mưa, nhưng DROOLS không thể lý giải quá nhiều đối tượng cùng một lúc. tôi muốn biết nếu nó có thể lý do trên dữ liệu được lưu trữ trong một cơ sở dữ liệu quan hệ và không phải trong workingMemory.có thể làm giảm lý do trên dữ liệu được lưu trữ trong cơ sở dữ liệu quan hệ (ví dụ: sử dụng HIbernate)

cảm ơn sự giúp đỡ nào :)

+0

Loại liên quan: http://stackoverflow.com/questions/8509993 –

+0

cảm ơn bạn đã liên kết hữu ích – fennou

+0

Bạn có muốn Drools lưu dữ liệu không, thay vì hoàn toàn trong bộ nhớ? Và để minh bạch lý do trên một lớp kiên trì và lưu kết quả lại cho nó? – aitchnyu

Trả lời

5

Câu hỏi của bạn khá rộng. Câu trả lời là để lý do trên dữ liệu, trừ khi bạn đang làm việc với các thủ tục được lưu trữ, bất kỳ ứng dụng nào (drools hay không) sẽ cần tải dữ liệu vào JVM. Sau đó, dữ liệu trong ứng dụng Drools được chèn vào bộ nhớ làm việc (xin lưu ý rằng điều này không gây ra bất kỳ thao tác sao chép nào khi drools làm việc với POJO ứng dụng chuẩn) hoặc có thể tìm nạp theo yêu cầu theo quy tắc sử dụng " từ "yếu tố có điều kiện. Hibernate cũng sử dụng POJOs và Drools không có vấn đề gì với chúng.

"chảy nước miếng không thể lý luận trên một số lượng lớn của các đối tượng cùng một lúc"

Không chắc chắn những gì bạn có nghĩa là bằng cách đó? số lượng lớn là bao nhiêu? Cá nhân tôi đã làm việc với một vài ứng dụng drools sử dụng hơn một triệu sự kiện cùng một lúc trong mỗi bộ nhớ làm việc, với thời gian đáp ứng trung bình cho việc thực hiện quy tắc theo thứ tự 100 giây. Ở đây bạn có thể thấy một bài thuyết trình của một nhà tư vấn đã làm việc trên một dự án mà các quy tắc phải truy vấn và lý do về dữ liệu lịch sử của hơn 30 triệu bản ghi trong thời gian thực: http://vimeo.com/27209589. Ông đã sử dụng một cơ sở dữ liệu noSQL cho điều đó.

Các ứng dụng lớn sẽ cần được chăm sóc nhiều hơn trong khi thiết kế kiến ​​trúc, tất nhiên, nhưng điều này đúng với Drools cũng như cho bất kỳ công nghệ nào. Nếu bạn nêu chi tiết trường hợp sử dụng của mình, chúng tôi có thể cung cấp cho bạn lời khuyên cụ thể hơn. Cũng khuyên bạn nên kiểm tra danh sách gửi thư của Drools vì có rất nhiều lời khuyên tốt cho thiết kế ứng dụng ở đó.

Hy vọng nó sẽ giúp làm rõ.

+0

cảm ơn cho phản ứng của bạn. Dưới đây là một số chi tiết. Tôi đang làm việc trên một ứng dụng phát hiện gian lận ngân hàng và như bạn biết đối với một ngân hàng cụ thể, hàng trăm nghìn giao dịch được thực hiện mỗi ngày (có thể là hàng triệu). những gì tôi muốn làm, vào cuối mỗi ngày, cung cấp cho những objetcs (giao dịch) để drools (đặt chúng trong bộ nhớ làm việc) và một số dữ liệu lịch sử liên quan đến khách hàng của ngân hàng (hàng trăm ngàn hoặc triệu) và chờ đợi phản ứng của drools ., nhưng những gì tôi nhận được là: - thời gian phản hồi rất chậm. -outofmemoryerror không gian java heap. cảm ơn sự giúp đỡ của bạn :) :) tha thứ cho tiếng Anh bị hỏng của tôi :) – fennou

+2

Trường hợp sử dụng này rất giống với trường hợp trong bản trình bày video tôi đã liên kết ở trên. Thông thường, dữ liệu lịch sử không nên được tải háo hức vào bộ nhớ làm việc, vì nó hiếm khi được sử dụng như một toàn thể. Dữ liệu lịch sử có thể được tìm nạp theo yêu cầu bằng cách sử dụng "từ" CE trong các quy tắc của bạn, để bạn chỉ tìm nạp dữ liệu mình cần. Việc sử dụng bộ nhớ cache hoặc cơ sở dữ liệu NoSQL để giúp cải thiện thời gian phản hồi. –

+0

cảm ơn bạn rất nhiều vì câu trả lời rất hữu ích này, tôi sẽ cố gắng làm theo những bước đó, và nếu tôi gặp vấn đề, tôi sẽ đến để giúp tôi giải quyết chúng :) xin vui lòng tha thứ tiếng Anh bị hỏng của tôi :) – fennou

Các vấn đề liên quan