【问题标题】:Cassandra and Pycassa: Best way to determine if row with particular key existsCassandra 和 Pycassa:确定是否存在具有特定键的行的最佳方法
【发布时间】:2013-09-09 13:33:37
【问题描述】:

使用 pycassa,确定具有特定键的记录是否存在的最佳方法是什么?这是吗

try:
    cf.get(key, columns=[])
except pycassa.NotFoundException:
    # Not exists
else:
    # Exists

是一个好的解决方案吗?这会只使用密钥缓存吗?

更新:我刚刚尝试了这个查询,如果指定了columns=[],它总是会引发pycassa.NotFoundException

【问题讨论】:

    标签: python cassandra pycassa


    【解决方案1】:

    查看 cf 中是否存在特定的行键:

    >>> cf.get(key)
    {'col_name': 'col_val', 'col_name2': 'col_val2'}
    

    如果该行键恰好在键缓存中,则将使用缓存中的值。 您将需要查看适当的 sstables 以找到与此行键对应的实际值。这可能需要(缓慢的)磁盘查找/访问,除非您很幸运并命中了行缓存或(linux)页面缓存。

    【讨论】:

    • 如果键不存在,希望 Bloom 过滤器意味着没有任何查找。如果一个或多个 Bloom 过滤器给出误报,则查询密钥缓存以获取 SSTable(s) 内的偏移量。
    • 这将始终获取整行数据。似乎应该有更有效的方法来做到这一点......至少在我的情况下我只能获取一列。
    • 另外,当你在第一个“真实”行之前有(很多?)墓碑时,它会更慢......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 2017-10-21
    • 2016-12-30
    • 2013-02-07
    • 1970-01-01
    相关资源
    最近更新 更多