Я буду использовать библиотечную систему университета для объяснения моего варианта использования. Студенты регистрируются в библиотечной системе и предоставляют свой профиль: пол, возраст, отдел, ранее пройденные курсы, зарегистрированные в настоящее время курсы, уже заимствованные книги и т. Д. Каждая книга в библиотечной системе определяет некоторые правила заимствования, основанные на профиле студентов, например , учебник для компьютерного алгоритма может быть заимствован только студентами, которые в настоящее время зарегистрированы в этом классе; другой учебник может быть заимствован только студентами математического факультета; также могут быть такие правила, при которых учащиеся могут заимствовать только две компьютерные сетевые книги. В результате правил заимствования, когда ученик ищет/просматривает в библиотечной системе, он будет видеть только книги, которые могут быть заимствованы им. Таким образом, требование действительно сводится к тому, чтобы эффективно генерировать список книг, которые студент имеет право брать взаймы.Должен ли я использовать Drools в этой ситуации?
Вот как я рассматриваю дизайн с помощью Drools - каждая книга будет иметь правило с несколькими ограничениями поля на профиль студента как LHS, RHS правила книги просто добавляет идентификатор книги в глобальный список результатов, затем все правила книги загружаются в RuleBase. Когда ученик ищет/просматривает библиотечную систему, из RuleBase создается сеанс без гражданства, и профиль ученика утверждается как факт, то каждая книга, которую может заимствовать ученик, будет уволить его книжное правило, и вы получите полный список книг, которые студенты могут заимствовать в глобальном списке результатов.
Несколько предположений: библиотека будет обрабатывать миллионы книг; Я не ожидаю, что правило книги будет слишком сложным, 3 простых ограничения полей для каждого правила в среднем не более; количество студентов, которых система должна обрабатывать, находится в диапазоне 100 КБ, поэтому нагрузка довольно тяжелая. Мои вопросы: сколько памяти будет делать Drools, если будет загружено миллионными книжными правилами? Как быстро это будет для всех этих миллионов правил, чтобы стрелять? Если Drools правильно подходит, я хотел бы услышать некоторые рекомендации по разработке такой системы у вас опытных пользователей. Благодарю.
Поскольку ваши ограничения правил фактически будут сидеть в базе данных - почему бы просто не использовать SQL-запросы для получения того, разрешать или не разрешать пользователям получать эти книги. – Jasper