从Datomic出发,革命性的非NoSQL数据库
为什么?!?
- 内存很贵
- 存储很贵
- 有必要使用专用的昂贵机器
Datomic的怪异架构
- Datomic是位于另一个数据库(或存储)之上的数据库–内存,文件系统,传统的RDBMS,Amazon Dynamo。
- 您不将查询发送到服务器并获取结果。 相反,您取回了执行查询并在本地运行查询和所有后续查询所需的所有数据。 因此,“联接”非常便宜,您可以做很多其他不可能的事情(组合来自多个数据库和本地数据结构的数据,在它们上运行任何代码,…)。 每个使用Datomic(即“对等”)的应用程序都将根据其独特的需求和使用模式,将所需的数据与自身紧密联系在一起。
- 所有写操作都通过一个称为Transactor的组件进行,该组件实质上对写进行序列化 ,从而确保ACID 。 听起来可能是一个瓶颈,但考虑到设计和典型的应用需求,它并不是实用的[1] 。 (据报道,Datomic可以处理世界上所有信用卡的所有交易。在Kurt Zimmer的Relevance Podcast中收听Room Key的大量写入操作(Podcast Episode 033) 。)
- Datomic的工作原理与版本控制系统(如Git)非常相似。 它永远不会覆盖数据,也没有更新。 您只需将数据标记为,然后添加新数据即可生成新版本的数据库(请考虑git hash / svn修订号)。 然后,您可以查询数据库的新状态或特定版本的状态。 (当然,无论何时向数据库添加事实,都不会复制整个数据库。Datomic既聪明又高效。)
- 它不是单个的整体服务器,存储,事务处理程序和对等点在物理上是分开的。
- 网络访问速度快于磁盘访问=>可以通过网络获取所有数据
- 大量内存=>可以根据其实际需求在每个对等体上存储大量的子集
- 存储量巨大且价格便宜=>我们可以轻松存储历史数据
- 具有现代FP语言中使用的高效,不变,“持久”数据结构的经验=>廉价地创建新的“数据库值”
Datomic的独特价值主张和能力
- 可编程性–数据,架构,查询输入/输出,事务元数据都是对等点上完全可用的基本数据结构,因此可以以以前无法想象的强大方式进行组合和处理
- 持久性/问责制-您永远不会丢失历史记录,可以使用有关谁/为什么等的元数据来注释事务,支持查找事物的状态,事物的变化方式,进行假设分析
- 弹性可伸缩性–由于许多负载已被推到对等端
- 灵活性–无需严格的架构,易于根据每个对等方的独特需求进行导航,合并和缓存数据,并通过数据功能进行扩展
结束语
摘要
奖励链接
- Datomic中的乐观和悲观锁定的数据功能 (论坛答案)
- HighScalability.com:VoltDB消除了六个SQL城市神话,并在过程中提供了Internet规模的OLTP – VoltDB的体系结构描述,与Datomic有一些共同点(单线程写入,作为事务单位的“存储过程”等) )
- VoltDB – Mike Stonebraker令人难以置信的可伸缩性,SQL,ACID数据库,它也打破了70年代的约束,并利用了巨大的RAM,单线程访问等功能。
参考: The Holy Java博客上的JCG合作伙伴 Jakub Holy 的Datomic,革命性的非NoSQL数据库的意义 。
相关文章