我该如何选择 Datomic 的后端存储服务?
选择 DynamoDB 而不是 Postgres 是一个偏好问题,还是每个选项都有不同的权衡?如果有,它们是什么?
存储服务要求
Datomic 的存储服务一般应满足 3 个要求:
- 实施键值存储语义:使用索引键值进行高效的读/写访问
- Support 一致的读取。例如读你自己写的。理想情况下,无争用/无锁读取。
- Support 有条件看跌期权。例如乐观锁+快照隔离。
Datomic 使用存储服务来存储排序、压缩的 datom 块,类似于传统数据库系统使用文件系统的方式,并且上述要求几乎是底层存储服务和 Datomic 之间的 API。所以choice存储服务取决于他们对这三个要求的支持程度如何.
写入可扩展性
Datomic 通常不会对底层存储服务施加很大的写入压力,因为只有一个组件(Transactor)对其进行写入。此外,一旦积累了足够的存储空间(默认约为 32MB,但可以配置),Datomic 使用后台索引作业将新颖性集成到存储中,这进一步减少了恒定的写入负载。 Datomic 立即写入的唯一内容是事务日志。
阅读可扩展性
Datomic 使用多层缓存,即 memcached 和对等缓存,因此在理想情况下,即当工作集适合内存时,系统也不会施加很大的读取压力。
系统负载
如果您的系统不需要huge写入可扩展性并且您的应用程序数据往往适合内存,那么特定存储服务的选择是不相关的当然,除了与 Datomic 无关的操作功能(备份、管理工具等)。
另一方面,如果您的系统确实需要huge写入可扩展性,或者您有大量的对等方,每个对等方处理的数据都超出了其内存的容量(迫使从存储中取出大量数据段),您将需要一个可以水平扩展的存储系统,例如DynamoDB。正如其中一条评论中提到的,如果您需要任意写入可扩展性,Datomic 无论如何都不是适合您的系统。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)