2011-06-10 4 views
8

Existe-t-il des implémentations de systèmes de règles de production fonctionnant out of core? J'ai vérifié les implémentations open source comme CLIPS et Jess, mais ceux-ci fonctionnent uniquement en mémoire, ils ont donc tendance à se bloquer ou à forcer le remplacement de disque lourd lorsqu'ils fonctionnent sur un grand nombre de faits et de règles (par ex. trillions).Moteur de règles hors de base

Je suis en train de jouer avec l'idée de porter éventuellement un moteur de règles simple, comme Pychinko à un backend SQL, en utilisant ORM de Django. Cependant, soutenir le niveau de fonctionnalité trouvé dans CLIPS serait très non-trivial, et je ne veux pas réinventer la roue. Y a-t-il des alternatives pour l'extension d'un système de règles de production?

+7

"Existe-t-il des alternatives pour la mise à l'échelle d'un système de règles de production?" Oui, plus de RAM! –

+1

Donnez un peu plus de RAM à un algorithme et corrigez-le pendant un jour. Changer l'algorithme pour ne pas utiliser la RAM et le réparer pour toujours. – Cerin

+1

Mon commentaire était bien sûr ironique. Je ne connais tout simplement pas la réponse à votre question. –

Répondre

1

vous pouvez vérifier JENA et les moteurs de règles RDF similaires qui sont conçus pour fonctionner avec de très grandes bases de données factuelles.

+0

Jena stocke ses règles en mémoire. À ma connaissance, tous les moteurs de règles RDF sont de la même manière. Large base de données factuelles! = Hors des règles de base. – Cerin

1

Ceci n'est pas une réponse directe à votre question, mais cela peut vous donner une ligne d'attaque sur le problème. Dans les années 80 et 90, nous avions mis en place un système de recherche d'informations qui permettait d'avoir un très grand nombre de requêtes permanentes . Plus précisément, nous avions des systèmes avec 64 Mo de mémoire (qui était un en charge dans ces jours) en ingérant plus d'un million de messages par jour et en appliquant 10 000 à 10000+ requêtes permanentes contre ce flux.

Si tout ce que nous avions fait était d'appliquer itérativement chaque requête permanente par rapport aux documents les plus récents, nous aurions été de la viande morte. Ce que nous avons fait était d'effectuer une sorte de inversion des requêtes, identifiant spécifiquement le doit avoir et peut avoir des termes dans la requête. Nous avons ensuite utilisé le terme liste dans le document pour trouver les requêtes qui avaient toutes les chances de réussir. Le client a appris à créer des requêtes présentant de forts facteurs de différenciation et, par conséquent, seules 10 ou 20 requêtes devaient parfois être entièrement évaluées.

Je ne connais pas votre jeu de données, et je ne sais pas à quoi ressemblent vos règles, mais il pourrait y avoir quelque chose de similaire que vous pourriez essayer.

Questions connexes