从不删除或更新数据的通用数据库
Rich Hickey倡导的数据pipe理方法给了我很大的启发,并且在Datomic中实现,数据不会在原地发生变异,所有版本始终保留并且可以查询,而且时间是第一步 ,一stream的概念。
当然,还有专门的数据库,比如说Git,或者其他的源码控制系统。 问题是,如果有任何(或多或less)通用数据库pipe理系统的关系,graphics,层次结构,文档或任何其他风味,可以有效地使用,如电子商务Web应用程序。 或者Datomic是唯一的select呢?
有一种devise系统的方法,即从不删除或改变称为事件采购(Event Sourcing)的数据。 基本上,这个想法是存储改变系统状态的事件(或事实),而不是状态的快照。 事件的历史可以稍后重播,以产生某种特定目的的投影,看看在任何时间点的状态。 针对不同目的build立的多个投影可以共存于系统中。 更多信息可以在以下网站find:
- http://martinfowler.com/eaaDev/EventSourcing.html
- http://codebetter.com/gregyoung/2010/02/20/why-use-event-sourcing/
这与您正在描述的内容是一致的,而不仅仅是一个数据库模型,事件采购和命令查询责任分离(CQRS)规定了一个特殊的devise整个系统的方法,包括数据库和业务逻辑层。
有几个框架遵循这种方法,例如:
虽然这不能直接回答你的问题,但它可能会提供一个不同的观点。
Irmin是一个分布式数据库,遵循与Git相同的devise原则。