2009-07-13 5 views
0

Je cherche une bibliothèque de base de données qui peut être utilisée dans un éditeur pour remplacer un format de document personnalisé. Dans mon cas, le document contiendrait un programme fonctionnel.Existe-t-il une implémentation de base de données avec notifications et révisions?

Je souhaite que les données de l'application soient persistantes même lors de l'édition, de sorte que lorsque le programme se bloque, aucune donnée n'est perdue. Je sais que toutes les bases de données offrent cela. En plus de cela, je veux accéder et modifier le document à partir de plusieurs threads, processus, voire plusieurs ordinateurs. Format: une simple base de données clé/valeur suffirait amplement. SQL a généralement besoin d'être enveloppé, et si je peux éviter de tirer une dépendance ORM lourde, ce serait magnifique. Révisions: Je souhaite pouvoir annuler les modifications apportées à la première modification apportée au document, non seulement dans une session, mais également entre les sessions/exécutions de programme.

J'ai besoin de notifications: chaque processus doit pouvoir être averti des modifications apportées au document afin qu'il puisse mettre à jour sa vue en conséquence.

Je vois ces exigences comme plutôt basiques, une base pour résoudre les problèmes difficiles habituels d'une application d'édition: annuler/rétablir, plusieurs vues sur les mêmes données. Ainsi, le système de base de données devrait être léger et peu exigeant.

Nous vous remercions de votre point de vue à l'avance :)

+0

Je me rends compte que c'est assez vieux, mais je travaille sur une base de données qui répondrait exactement à vos besoins. Cela s'appelle aodbm (voir http://sf.net/projects/aodbm/). C'est assez simpliste en ce moment et il est probable que le format de fichier sera changé avant la première version, mais il est dans un état utilisable et est en développement actif. –

Répondre

1

Berkeley DB est un peu exigeant, base de données légère valeur clé qui prend en charge le verrouillage et les transactions. Il existe des liaisons pour de nombreux langages de programmation, y compris C++ et python. Vous devrez mettre en place des révisions et des notifications vous-même, mais ce n'est pas si difficile.

+0

Je connais Berkeley DB depuis longtemps, et je suppose que c'est la meilleure réponse jusqu'à maintenant, même si je ne l'aime pas;) J'ai commencé un prototype qui va assez bien jusqu'à présent. Comme vous l'avez proposé, les fonctionnalités supplémentaires ont été faciles à mettre en œuvre. – paniq

0

Découvrez ZODB. Il n'y a pas de notifications intégrées, vous aurez donc besoin d'un système de messagerie (puisque vous pouvez utiliser des ordinateurs séparés). Mais il a des transactions, vous pouvez reculer pour toujours (sauf si vous compressez la base de données, ce qui supprime les révisions précédentes), vous pouvez y accéder directement en tant que partie intégrante de l'application, ou en tant que client/serveur (avec plusieurs clients bien sûr), vous pouvez avoir la persistance automatique, il n'y a pas ORM, etc

C'est à peu près Python seulement (il est basé sur Pickles).

http://en.wikipedia.org/wiki/Zope_Object_Database

http://pypi.python.org/pypi/ZODB3

http://wiki.zope.org/ZODB/guide/index.html

http://wiki.zope.org/ZODB/Documentation

1

Il est peut-être un peu plus de puissance que ce que vous demandez, mais vous devriez vraiment regarder à CouchDB.

C'est une base de données de documents avec "document" étant défini comme un enregistrement JSON. Il stocke toutes les modifications apportées aux documents en tant que révisions, de sorte que vous obtenez instantanément des révisions. Il dispose d'un puissant moteur de vue basé sur javascript pour agréger toutes les données dont vous avez besoin de la base de données.

Tous les validations de la base de données sont écrites à la fin du fichier de référentiel et les écritures sont atomiques, ce qui signifie que les écritures infructueuses ne corrompent pas la base de données.

Un autre bonus sympa Vous obtiendrez une réplication simple et flexible et de votre base de données.

Voir la liste complète des fonctionnalités sur their homepage

Du côté moins (selon votre point de vue) est le fait qu'il est écrit en Erlang et (pour autant que je sache) fonctionne comme un processus externe. Cependant, je ne sais rien à propos des notifications - il semble que si vous travaillez avec des bases de données répliquées, les modifications sont instantanément répliquées/synchronisées entre les bases de données. Autre que cela je suppose que vous devriez être capable de rouler votre propre schéma de notification ...

+0

Je ne suis pas si sûr de CouchDB stocker des révisions. Cela semble être seulement à court terme, afin de permettre la cohérence de la vue et des requêtes sans verrou. Les révisions sont purgées de temps en temps, je pense. – Thilo

+0

Je n'avais aucune telle impression de n'importe où dans la documentation ... Pour être tout à fait honnête - je n'ai pas encore eu une expérience du monde réel avec CouchDB et ne pouvais donc pas sauvegarder de telles revendications ... –

Questions connexes