Usage général les bases de données que de ne jamais supprimer ou mettre à jour les données sur place
Je suis très inspiré par l'approche de la gestion des données préconisée par Rich Hickey, et mis en œuvre dans Datomic, où les données ne sont jamais muté en place, toutes les versions sont toujours préservé et requête-mesure, et le temps est un concept de première classe.
Bien sûr, il existe des bases de données spécialisées correspondant à cette description, comme Git, ou tout autre système de contrôle de source. La question est de savoir si il y a de tout (plus ou moins) à usage général SGBD-es de relationnel, graphique, hiérarchique, un document ou toute autre saveur qui peut être utilisé efficacement dans, disons, un e-commerce de l'application Web. Ou est Datomic le seul choix alors?
- Je pense que les deux le BerkeleyDB Java Edition et CouchDB comme ça en interne. Mais dans les deux cas, il y a "la récupération d'espace" processus de purge des anciens données et je ne sais pas si l'histoire est vraiment exposé comme un concept de première classe (par opposition à "juste" être utilisé pour faire des travaux d'isolation de transaction).
- C'est le droit. Je suis avec CouchDB droit maintenant. La vue' map-reduce fonctions ne peuvent pas accéder aux anciennes versions.
- Il y a aussi Git Ketch qui est
a multi-master Git management system that replicates information across multiple Git servers for resilience and scalability.
, ajouter ici git extensions pour les fichiers binaires volumineux et bénéficiez d'une capacité de stockage adaptée pour certains types d'applications. - Apache HBase ne pas muter des données sont en place et les versions précédentes queryable.
- Je pense que Google Clé est telle base de données, c'est à dire
old versions of data are subject to configurable garbage-collection poli- cies; and applications can read data at old timestamps. and F1 maintains a logical history log of all changes, which is written into Spanner itself as part of every transaction. F1 takes full snapshots of data at a timestamp to initialize its data structures, and then reads incremental changes to update them.
. Son spin-off CockroachDB peut avoir des caractéristiques identiques. - Noms est versionné, forkable, syncable, ajouter seulement de la base de données. Il est possible de voir toute l'histoire de la base de données
- Il y a aussi Bigtable
- LiteTree SQLite avec des Branches
- github.com/sirixdb/sirix
- juxt.pro/crux
Vous devez vous connecter pour publier un commentaire.
Il ya une approche de la conception de systèmes avec l'idée de ne jamais supprimer ou de la mutation de données appelé Event Sourcing. Fondamentalement, l'idée est de stocker les événements (ou faits) qui modifient l'état du système, au lieu de les instantanés de l'état. L'historique des événements peuvent être relus plus tard à produire un certain effet spécifique de la projection de ce que l'état à n'importe quel point dans le temps ressemblait. Plusieurs projections construit à des fins différentes peuvent coexister dans le système. Plus d'informations peuvent être trouvées sur les sites web suivants:
Qu'il est en ligne avec ce que vous décrivez, mais plutôt que d'être simplement un modèle de base de données, Event Sourcing et de la Commande de Requête de la Responsabilité de la Ségrégation (CQRS) prescrire une manière particulière de concevoir l'ensemble du système, y compris la base de données et la logique métier de couches.
Il y a quelques cadres qui suivent cette approche, tels que:
Bien que cela ne répond pas directement à votre question, il peut fournir un point de vue différent sur le problème.
open-source, functional database with Complex Event Processing in JavaScript.
si nécessaire de l'idée réalisée pour le JavaScript.Irmin est une base de données distribuée qui suit les mêmes principes de conception comme Git.