我非常受数据管理方法advocated by Rich Hickey的启发,并在Datomic中实现,其中数据从未就地变异,所有版本总是保留和查询,时间是一流的概念。
当然,有专门的数据库匹配该描述,如Git或任何其他源控制系统。问题是,是否存在任何(或多或少)关系,图形,层次,文档或任何其他风格的通用DBMS-es,可以有效地用于电子商务Web应用程序。或者Datomic是唯一的选择呢?
答案 0 :(得分:34)
有一种设计系统的方法,其理念是永远不会删除或改变称为事件源的数据。基本上,这个想法是存储改变系统状态的事件(或事实),而不是状态的快照。事件的历史可以在以后重播,以产生某个特定目的的投影,即任何时间点的状态。为不同目的而构建的多个投影可以在系统中共存。可以在以下网站上找到更多信息:
它与您所描述的内容一致,但不仅仅是数据库模型,事件采购和命令查询责任隔离(CQRS)规定了一种设计整个系统的特殊方式,包括数据库和业务逻辑层。
有一些框架遵循这种方法,例如:
虽然这不能直接回答您的问题,但它可能会对问题提供不同的视角。
答案 1 :(得分:6)
Irmin是一个分布式数据库,遵循与Git相同的设计原则。