最好的存储方式&在Cassandra中检索不可变的字节块

时间:2014-11-26 12:46:46

标签: cassandra

我使用Cassandra作为分块对象存储。

我使用复制因子3。 我用CL_ONE写块,然后,一旦写完成,我用CL_ONE读。

由于块是不可变的,所以我没有读取陈旧数据的风险。

但是,我可能遇到NotFoundException,因为在写一个块之后尝试读取一个块时,所有副本可能还没有块。

我试图解决这个问题:

  • 重试CL_ONE中的读取,直到副本具有块。这可能需要几秒钟,如果不是几分钟

  • 所以现在我尝试用CL_ONE读取一次,然后如果失败,我用CL_ALL重试。由于我只在第一次写入完成后才阅读,所以我应该在所有情况下都得到一个回复​​,代价是要求所有副本提供块

我的问题是,这是管理Cassandra中不可变块的读/写的最佳方式(在吞吐量方面,而不是可靠性方面)吗?

提前致谢,

安托

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解你正在做什么,也不确定你是否以正确的方式使用Cassandra。

如果您的目标是在写入和后续读取之间实现一致性,那么您必须尊重

写CL +读CL> RF

disequation。实现它的最安全的方法是在写入和读取时使用仲裁(当RF = 3时,仲裁次数为2,因此2 + 2> 3) - 可能最快的方法是全部写入并一次读取。