Aerospike是一个支持持久性的密钥库。 但我能相信这种持久性足以将其用作数据库吗? 据我所知,它首先将数据写入内存然后继续存储。 我可以忍受最终的一致性,但我不希望处于某种状态,但是由于机器故障,它永远不会写入磁盘,因此永远无法检索。 我试着查看各种用例,但我对这个只是好奇。 另外,就保存新记录而言,client.put提供了什么保证。
答案 0 :(得分:3)
Aerospike提供用户可配置的复制因子。大多数人使用2,如果你真的担心,你可以使用3甚至更多。相应地调整群集大小。对于RF = 3,当3个节点将数据写入其内存中的写入块时,put返回,该写入块被异步刷新到持久层。因此,它取决于您尝试防范的节点故障模式。如果您担心整个群集立即崩溃,那么您可能会遇到1秒(默认)丢失数据的情况。一秒也可以配置得更低。 Aerospike还提供机架感知配置,可在整个机架发生故障时防止数据丢失。 put总是到达不同机架中的节点。最后,Aerospike提供跨数据中心复制 - 它是异步的,但确实提供了跨地理复制数据的选项。当然,跨越geo确实有其延迟。最后,如果您完全关注整个群集关闭,则可以连接到应用程序中的两个单独群集,并始终将更新推送到两个单独的群集。当然,如果应用程序在两次写入之间失败,您现在必须担心一致性。我不知道有谁不得不求助于此。