53

深受 Rich Hickey 倡导的数据管理方法的启发,并在Datomic中实现,其中数据永远不会就地发生变异,所有版本始终保留且可查询,时间是第一类概念。

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

4

2 回答 2

34

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

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

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

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

于 2012-11-22T12:51:59.197 回答
7

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

于 2016-02-25T18:36:28.013 回答