2017-02-09 11 views
1

Мне интересно, как резка столбцов в статье CQL WHERE влияет на производительность чтения. У Кассандры есть некоторая оптимизация, которая способна только извлекать определенные столбцы со значением или должна извлекать все столбцы строки и проверять один за другим? Например: у меня есть первичный ключ как (key1, key2), key2 - это ключ кластеризации. Я хочу только найти столбцы, соответствующие определенному ключу2, скажем, value2?Cassandra CQL колонка slice и путаница чтения пути

ответ

0

Cassandra сохраняет данные в виде ячеек - каждое значение для столбца + столбца является ячейкой. Если вы сохраните несколько значений для ключа, как только они будут помещены вместе в один и тот же файл. Кроме того, поскольку cassandra записывает на sstables, вы можете иметь несколько значений, сохраненных для одного ключевого столбца/ячейки в разных файлах, и cassandra будет читать все из них и возвращать вам последний написанный, до тех пор, пока не произойдет компромирование или восстановление, а также нерелевантные значения удаляются.

Хорошая статьи о удалениях/читает/надгробия: http://thelastpickle.com/blog/2016/07/27/about-deletes-and-tombstones.html

+0

Я читаю [эта статья] (https://wiki.apache.org/cassandra/ReadPathForUsers), он говорит по-разному: то Следит раздел index, который обеспечит смещение в SSTable, где мы сможем найти данные, связанные с нашим ключом раздела. Затем мы считываем данные из MemTable в памяти и объединяем их с данными из SSTables. Данные объединяются по ячейкам по ячейкам, причем временная метка для каждой ячейки сравнивается и выбирается самая последняя отметка времени. Надгробные плиты игнорируются. –

+0

О надгробных плитах - они не игнорируют его так, как вы думаете. Пример. У вас есть ключ, и вы вставляли/обновляли его 3 раза, а затем удаляли его. Итак, теоретически вы можете иметь 4 "значения" для этого ключа - 3 значения и надгробный камень. Когда вы запрашиваете значение для этого ключа, движок будет проходить через все 4 "значения" и определять последний, и если это надгробный камень, вы не получите никаких строк/значений, но это не означает, что строка wasn ' t прочитал Кассандра. – nevsv

 Смежные вопросы

  • Нет связанных вопросов^_^