2010-11-19 3 views
4

나는 문법 관계와 의미 매핑 프레임 워크를위한 규칙 엔진으로 Drools를 사용하려고한다. 룰베이스는 지금도 5000 개가 넘고 확장 될 것입니다. 현재 Drools를 사용할 때, 규칙을 포함하고 지식 기반을 생성하는 drl 파일을 읽을 때마다 프로그램을 실행할 때마다 많은 시간이 필요합니다. 지식베이스를 한 번 생성 한 다음 변경이있을 때만 지식 기반을 재생성하는 옵션과 함께 빠르게로드 할 수있는 일부 영구 형식으로 저장하는 방법이 있습니까?DOLols 지식 기반의 빠른 로딩

답변

2

예, drools은 지식 저장소를 외부 저장소로 직렬화 한 다음이 직렬화 된 기술 자료를 다시로드 할 수 있습니다.

따라서 drl에서로드하고 컴파일하고 직렬 출력하는주기가 필요합니다. 그런 다음 직렬화 된 버전을 사용하는 두 번째 사이클.

저는 이것을 약간의 성공과 함께 사용하여 1 분 30 로딩 시간을 약 15-20 초로 줄였습니다. 또한 heap/perm gen 요구 사항도 줄일 수 있습니다.

정확한 방법은 API를 확인하십시오.

0

내 생각은 가능한 한 오랫동안 지식 기반을 유지하는 것입니다. 다른 규칙 세트에서 여러 지식 기반을 작성하지 않고 가능한 많은 조합이있는 경우 해당 지식 기반에 매달려 있어야합니다. 하나의 지식 기반에는 모든 규칙이 있으므로 단일 규칙처럼 취급합니다.

그러나 이것이 가능하지 않거나 응용 프로그램이 오래 실행되지 않으면 Drools가 속도를 높이는 방법을 제공하지 못한다. 디버거를 통해 Drools 5.0 프로젝트를 실행하면 KnowledgeBase Drools에서 Serializable을 제공합니다. 규칙을 다시 분석하는 것보다 KnowledgeBase를 deserialize하는 것이 더 빠를 것이라고 생각합니다. 그러나이 문제를 해결하기 위해주의해야합니다. 인터페이스에 이유를 사용하면 구현이 경고없이 변경 될 수 있습니다.