主要观点:Datomic 是支持非交互式事务的时态 EAV OLTP 数据库,有 Pro 和 Cloud 两种版本,架构包含协同服务,有独特事务模型(读写分离),宣称 ACID 事务但实际内部事务语义与常见形式不同,测试发现其事务间语义符合强会话可串行化等,内部事务语义看似并发实则不同,可能导致一些一致性问题,如内部一致性、伪写偏斜等,文档已修订,未来可研究其事务模型等相关问题。
关键信息:
- 架构:由 Transactors、Peers 等服务组成,内部通过日志和索引存储事务。
- 事务模型:读写分离,事务由操作列表组成,函数调用可扩展为操作,事务不返回任意读写结果。
- 一致性:宣称 ACID 事务,实际内部事务语义与常见形式不同,可能导致一致性问题。
- 测试设计:用 Jepsen 测试库设计测试套件,包括多种工作负载。
- 结果:事务间语义符合预期,内部事务语义有独特之处,可能导致意外结果。
重要细节: - 架构中 Transactors 执行写事务,Peers 连接存储和事务,通过日志和索引高效查询。
- 事务模型中 read 获得数据库状态,write 事务由操作列表组成,函数可扩展为操作,事务不返回读写结果。
- 一致性方面,文档宣称 ACID 事务但实际内部事务语义与常见形式不同,如内部事务中操作看似并发执行,可能导致内部一致性问题等。
- 测试设计中包括多种工作负载,如 List Append、List Append with CaS、Internal、Grant 等,用于测试不同方面的性能和一致性。
- 结果显示事务间语义符合预期,但内部事务语义有独特之处,如两个相同的 Cas 操作在 Datomic 中会都成功等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。