1

在我的应用程序中,我想获取列族中的所有行,但要忽略暂时不可用的行(例如,某些节点已关闭)。

我有多个节点。如果其中一个节点关闭,get_range则将抛出UnavailableException,我什么也得不到。

我想要的是获取当前可用的所有行,因为对于用户来说,它总比没有好。我怎样才能做到这一点?

  • 我正在使用 pycassa。
  • 我的列族中的行键就像随机字符串,所以我不能用来get一一获取所有行。
4

2 回答 2

0

如果get_range按令牌支持添加到 pycassa,您可以分别获取每个令牌范围(由 报告describe_ring),丢弃导致 UnavailableException 的那些。除此之外,正如 Dean 所说,使用一致性级别 ONE 是您的最佳选择。

于 2012-09-17T01:22:42.153 回答
0

应该有一个调用来获取一个行键列表,这样你就不需要一个一个地获取它们。另外,如果您有索引,那会有所帮助。例如 playORM 对表的每个分区都有一个索引(您可以拥有任意数量的分区)。这样,您就可以遍历每个索引并调用 get 传递给它的键列表。

此外,请确保您的一致性读取也设置为 ONE ;)。

后来,迪恩

于 2012-09-16T00:55:59.550 回答