我可以使用 Aerospike 作为持久层吗

Can I use Aerospike as persistent layer

Aerospike 是一个支持持久性的密钥存储数据库。 但是我是否可以充分信任这种持久性以将其完全用作数据库? 据我了解,它首先将数据写入内存然后保存。 我可以忍受最终的一致性,但我不想处于已提交某些内容但由于机器故障而从未写入磁盘因此永远无法检索的状态。 我尝试查看各种用例,但我只是对这个感到好奇。 另外,就保存新记录而言,client.put 提供什么保证。

Aerospike 提供用户可配置的复制因子。大多数人使用 2,如果你真的很在意,你可以使用 3 甚至更多。相应地调整集群大小。对于 RF=3,当 3 个节点将数据写入其内存中的写入块时,将 returns 放入异步刷新到持久层的内存中。因此,这取决于您要防止的节点故障模式。如果您担心整个集群立即崩溃,那么您可能会遇到 1 秒(默认)丢失数据的情况。一秒也可以配置得更低。 Aerospike 还提供机架感知配置,可在整个机架出现故障时防止数据丢失。 put 总是发送到不同机架中的节点。最后,Aerospike 提供了跨数据中心复制——它是异步的,但确实提供了跨地域复制数据的选项。当然,跨地域确实有延迟。最后,如果您完全担心整个集群关闭,您可以在应用程序中连接到两个单独的集群,并始终将更新推送到两个单独的集群。当然,如果应用程序在两次写入之间失败,您现在必须担心一致性。我不知道有谁不得不求助于此。