Je suis très inspiré par l'approche de la gestion des données préconisée par Rich Hickey , et implémentée dans Datomic , où les données ne sont jamais mutées sur place, toutes les versions sont toujours conservé et interrogeable, et l'heure 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 s'il existe (plus ou moins) des SGBD à usage général de type relationnel, graphique, hiérarchique, document ou toute autre saveur pouvant être efficacement utilisés, par exemple, dans une application Web de commerce électronique. Ou alors Datomic est-il le seul choix?
Il existe une approche de la conception de systèmes avec l'idée de ne jamais supprimer ou muter les données, appelée Event Sourcing. Fondamentalement, l'idée est de stocker des événements (ou des faits) qui changent l'état du système, au lieu de clichés de l'état. L'histoire des événements peut être rejouée plus tard pour produire une certaine projection spécifique à ce à quoi ressemblait l'état à un moment donné. De multiples projections construites à des fins différentes peuvent coexister dans le système. Plus d'informations peuvent être trouvées sur les sites Web suivants:
Cela correspond à ce que vous décrivez, mais plutôt que d'être simplement un modèle de base de données, le sourçage d'événements et la séparation des responsabilités de requête de commande (CQRS) prescrivent une façon spéciale de concevoir l'ensemble du système, y compris les couches de base de données et de logique métier.
Il existe quelques cadres qui suivent cette approche, tels que:
Bien que cela ne réponde pas directement à votre question, cela peut fournir une perspective différente du problème.
Irmin est une base de données distribuée qui suit les mêmes principes de conception que Git.