我应该如何选择Datomic的后端存储服务?
选择DynamoDB而不是Postgres是优先选择,还是每个选项都有不同的权衡?如果是这样,他们是什么?
答案 0 :(得分:22)
Datomic'存储服务通常应满足3个要求:
Datomic使用存储服务来存储已排序的压缩数据块,类似于传统数据库系统使用文件系统的方式,上述要求几乎是底层存储服务和Datomic之间的API。因此,存储服务中的选择取决于它们支持这三个要求的程度。
Datomic通常不会对底层存储服务施加很大的写入压力,因为只有一个组件写入它,即Transactor。此外,Datomic使用后台索引作业,一旦积累了新的内容(默认情况下为~32MB但可以配置),就可以将新颖性集成到存储中,这进一步降低了常量写入负载。 Datomic立即写的唯一东西就是事务日志。
Datomic使用多层缓存,即memcached和peer缓存,因此在理想情况下,即当工作集适合内存时,系统也不会产生很大的读取压力。
如果您的系统不需要巨大的写入可扩展性且您的应用程序数据往往适合内存,那么特定存储服务的选择无关除外当然,他们的操作能力(备份,管理工具等)与Datomic无关。
另一方面,如果您的系统确实需要巨大的写入可扩展性,或者您拥有大量的对等体,那么每个对等体都需要处理的数据超出其内存数量(强制执行要从存储中获取的数据段),您需要一个可以水平扩展的存储系统,例如DynamoDB。正如其中一条评论中所提到的,如果您需要任意写入可扩展性,那么无论如何,Datomic都不适合您。