быстрая загрузка базы знаний drools

Я пытаюсь использовать Drools в качестве механизма правил для отношения грамматики к структуре сопоставления семантики. База правил уже сейчас превышает 5000 правил и будет расширяться. В настоящее время при использовании Drools чтение файла drl, содержащего правила, и создание базы знаний занимает много времени при каждом запуске программы. Есть ли способ создать базу знаний один раз и сохранить ее в каком-либо постоянном формате, который можно быстро загрузить с возможностью повторного создания базы знаний только при внесении изменений?


person Danaja    schedule 19.11.2010    source источник


Ответы (2)


Да, drools может сериализовать базу знаний во внешнее хранилище, а затем снова загрузить эту сериализованную базу знаний.

Итак, вам нужен цикл, который загружается из drl, компилируется, сериализуется. Затем второй цикл, использующий сериализованную версию.

Я использовал это с некоторым успехом, сократив время загрузки с 1 минуты 30 до 15-20 секунд. Кроме того, это также снижает требования к генерации кучи/perm.

Проверьте API для точных методов.

person Steven Herod    schedule 30.11.2010

Моя первая мысль — сохранить базу знаний как можно дольше. Если только вы не создаете несколько баз знаний из разных наборов правил и возможных комбинаций слишком много, держитесь этих баз знаний. В одном приложении, над которым я работаю, в одной базе знаний есть все правила, поэтому мы относимся к ней как к синглтону.

Однако, если это невозможно или ваше приложение работает не так долго, я не знаю, предоставляет ли сам Drools какие-либо способы его ускорения. Запустив проект Drools 5.0 через отладчик, я вижу, что база знаний Drools дает мне Serializable. Я полагаю, что было бы быстрее десериализовать базу знаний, чем повторно анализировать правила. Но будьте осторожны при разработке своего приложения с учетом этого! Вы используете интерфейсы по какой-то причине, и реализация может измениться без предупреждения.

person spaaarky21    schedule 22.11.2010