We did some simple micro performance/scalability testing a while back on
Drools 4.0.1 where we came to a similar conclusion. We may even publish
our test results (and improve our tests) in the future.
Len
________________________________
From: rules-users-bounces(a)lists.jboss.org
[mailto:rules-users-bounces@lists.jboss.org] On Behalf Of Mark Proctor
Sent: Tuesday, November 20, 2007 12:46 PM
To: Rules Users List
Subject: Re: [rules-users] Drools and BRMS (60,000+ rules)
Carlsen, Len wrote:
Thanks a lot for your comments, Mark. Since our new Student Information
System will be open source we would be more than happy to make
contributions back into the community.
Since our SIS will be based on SOA principles, we are thinking of Making
Drools a decision service (web service) for a single entry point since
we don't want to have thousands of rule services.
Thanks,
Len
Mic's been doing some scalability profiling for you. Engine execution
can scale to 60K rules, however the compilation and build process is
quite slow at that large numbers. The good news is we have never
profiled and optimised our compilation and build processes, we haven't
had the use cases yet to warrant this - so we can definitely make some
improvements here, when we get time :)
________________________________
From: rules-users-bounces(a)lists.jboss.org
[mailto:rules-users-bounces@lists.jboss.org] On Behalf Of Mark Proctor
Sent: Saturday, November 17, 2007 9:44 AM
To: Rules Users List
Subject: Re: [rules-users] Drools and BRMS (60,000+ rules)
Carlsen, Len wrote:
Hello,
I am wondering if anyone has any experience in managing very large rule
sets and facts and could share their experiences in the design and
management of this.
We are embarking on a new Student Information System project here at UBC
in conjunction with several other American universities. We have pretty
much decided to use Drools as our rules engine and maybe also the Drools
BRMS for our business rules management. Our first application is the
course curriculum application/module where we will manage course
co-requisites, pre-requisites, etc. and we estimate that we will have
about 20,000 course rules. We currently have about 15,000 course rules
(QuickRules) in production now. We will also have security rules,
input/form validation rules, student awards rules, degree rules,
enrolment rules, admission rules, student financial rules etc. which
will total about 40,000 rules. So currently we are looking at managing
about 60,000 rules (not including versioning). If we include versioning
then there would probably be more than 100,000 rules.
We are using jackrabbit JCR, I think it can handle this, but I don't
have any hard figures for the scalability. If it works for you, please
do let us know :)
Example:
A single course could have 10 or more rules per course version. We
currently have about 2000 course and most courses have more than 1
version.
We are looking into developing our own rules management system to define
dependencies between rules, courses (facts) and course + rule versions.
E.g. Course CHEM101 version 1 links to CHEM101 a single rule or a rule
set/package version 1 by a rule id.
We need the ability to notify users when rules are modified which
impacts other rules and what impact changing a rule can cause for
example a degree program. E.g. changing a course's pre-requisite may
affect other courses' pre-requisites; rules about rules. We also need
the ability to find out why a student was not able to register for a
course etc. We will also need to show the course dependency graph
visually (the RDBMS can probably help us here). Later, we are hoping to
use the Drools Solver for course and exam scheduling and also to use it
for student degree planning and student awards.
We don't currently have an exposed event model in the BRMS or change
notification. However this would not be hard to add, maybe you could
help us? We have drools-analytics which will create an api with the
change impact requirements you need, it is not yet currently integrated
into the BRMS, bit if you do the notificatino part it should be easy
enough to add.
We will need to translate the rules into English language syntax for
publication in the course calendar and later into other languages (first
French) since the SIS application will be used internationally. Listing
requirements could just be shown in bulleted form. Probably can't use
the DSL in this case since we would need to support several languages or
maybe I am wrong here?
DSL are just a templating language, if can be made to look english like
- if that's what you need. You also have the "docementation" field in
the BRMS, which you can use. If you have other ideas please spec them
out in a JIRA and we'll look inoto doing them in the future, or maybe
you can help us :)
If we use the Drools BRMS to store all of our rules on a relational
database, will we be able to write SQL queries to get at specific
rules/packages to link facts (courses) to rules? Or do we have to go
through the BRMS to get at the rules. Does BRMS have a facility to
validate rules against facts so you can see if your rules execute
correctly against your data/facts before committing your rules. Or maybe
we need a testing framework for this.
We use JackRabbit JCR, we provide high level apis to accessing data, but
you an ofcourse ue the jackrabbit low level apsi - if you really know
what you are doing. We have the ability to validate the compilation of
the rules, scenario testing is currently being added and will be in the
next release.
Other issues are the performance of the Drools Solver and having
thousands of rules compiled, loaded and running. During registration we
could have thousands of rules executing concurrently. The rules engine
and the BRMS would be services as part of an SOA infrastructure (and an
OSGi service environment). Anyone got any experience with Drools in an
OSGi environment with respect to class loading issues when compiling
rules and facts from other bundles since rules and facts may be in
different bundles? Bundle buddy class loading?
No but it is something that interests us, please give us your OSGi
feedback. Solver is not currently a supported product, its very much R&D
alphaware, but I'm sure geoffrey would love your feedback, good to see
people are evaluating it.
Later, we will need translators to/from other rule engines; maybe ruleML
and JCR can help us here.
JCR is jus a storage repository, for rule translators you are on your
own. However Drools itself is language independant, we are exposing the
api for pluggeable parsers - so in theory you could write parsers for
each of these.
So far, I think Drools can do most of this; am I correct here? Does any
of this sound plausible?
I'm sure you can get by for now, and work with us to make it the best
system for your needs.
Thanks very much for any tips, thoughts or comments.
Len
Len Carlsen
Enrolment Services - Student Systems
University of British Columbia
________________________________
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
________________________________
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users