在我的应用程序中,我想获取列族中的所有行,但要忽略暂时不可用的行(例如,某些节点已关闭)。
我有多个节点。如果其中一个节点关闭,get_range
则将抛出UnavailableException
,我什么也得不到。
我想要的是获取当前可用的所有行,因为对于用户来说,它总比没有好。我怎样才能做到这一点?
- 我正在使用 pycassa。
- 我的列族中的行键就像随机字符串,所以我不能用来
get
一一获取所有行。
如果get_range
按令牌支持添加到 pycassa,您可以分别获取每个令牌范围(由 报告describe_ring
),丢弃导致 UnavailableException 的那些。除此之外,正如 Dean 所说,使用一致性级别 ONE 是您的最佳选择。
应该有一个调用来获取一个行键列表,这样你就不需要一个一个地获取它们。另外,如果您有索引,那会有所帮助。例如 playORM 对表的每个分区都有一个索引(您可以拥有任意数量的分区)。这样,您就可以遍历每个索引并调用 get 传递给它的键列表。
此外,请确保您的一致性读取也设置为 ONE ;)。
后来,迪恩