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