从不删除或更新数据的通用数据库

时间:2012-11-22 07:50:54

标签: database immutability survey database-versioning datomic

我非常受数据管理方法advocated by Rich Hickey的启发,并在Datomic中实现,其中数据从未就地变异,所有版本总是保留和查询,时间是一流的概念。

当然,有专门的数据库匹配该描述,如Git或任何其他源控制系统。问题是,是否存在任何(或多或少)关系,图形,层次,文档或任何其他风格的通用DBMS-es,可以有效地用于电子商务Web应用程序。或者Datomic是唯一的选择呢?

2 个答案:

答案 0 :(得分:34)

有一种设计系统的方法,其理念是永远不会删除或改变称为事件源的数据。基本上,这个想法是存储改变系统状态的事件(或事实),而不是状态的快照。事件的历史可以在以后重播,以产生某个特定目的的投影,即任何时间点的状态。为不同目的而构建的多个投影可以在系统中共存。可以在以下网站上找到更多信息:

它与您所描述的内容一致,但不仅仅是数据库模型,事件采购和命令查询责任隔离(CQRS)规定了一种设计整个系统的特殊方式,包括数据库和业务逻辑层。

有一些框架遵循这种方法,例如:

虽然这不能直接回答您的问题,但它可能会对问题提供不同的视角。

答案 1 :(得分:6)

Irmin是一个分布式数据库,遵循与Git相同的设计原则。