2013-09-09 1 views
2

Использование pycassa, что является лучшим способом определить, существует ли запись с определенным ключом? ЭтоCassandra and Pycassa: Лучший способ определить, существует ли строка с определенным ключом

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

- хорошее решение? Будет ли это использовать только кеш-ключ?

ОБНОВЛЕНИЕ: Я просто попробовал этот запрос, и он всегда поднимает pycassa.NotFoundException, если указан columns=[].

ответ

1

Чтобы увидеть, если определенный ключ строки существует в сре вы делаете:

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

Если этот ключ строки оказывается в кэше ключей, то будет использоваться значение из кэша. Вам нужно будет изучить соответствующие sstables, чтобы найти фактические значения, соответствующие этой строке. Для этого может потребоваться (медленный) поиск/доступ к диску, если вам не повезет, и нажмите на кеш строки или кеш-файл (linux).

+1

Если ничего не существует для ключа, мы надеемся, что фильтры Bloom означают, что ничего не выглядело. Если один или несколько фильтров Bloom дают ложное положительное значение, кэш ключей запрашивается для смещения в SSTable (sSTable). – Richard

+0

Это всегда будет извлекать данные целых строк. Похоже, что должен быть немного более эффективный способ сделать это ... По крайней мере, в моей ситуации я могу получить только один столбец. –

+0

set column_count = 1 – Schildmeijer