Мне интересно, как резка столбцов в статье CQL WHERE
влияет на производительность чтения. У Кассандры есть некоторая оптимизация, которая способна только извлекать определенные столбцы со значением или должна извлекать все столбцы строки и проверять один за другим? Например: у меня есть первичный ключ как (key1, key2), key2 - это ключ кластеризации. Я хочу только найти столбцы, соответствующие определенному ключу2, скажем, value2?Cassandra CQL колонка slice и путаница чтения пути
1
A
ответ
0
Cassandra сохраняет данные в виде ячеек - каждое значение для столбца + столбца является ячейкой. Если вы сохраните несколько значений для ключа, как только они будут помещены вместе в один и тот же файл. Кроме того, поскольку cassandra записывает на sstables, вы можете иметь несколько значений, сохраненных для одного ключевого столбца/ячейки в разных файлах, и cassandra будет читать все из них и возвращать вам последний написанный, до тех пор, пока не произойдет компромирование или восстановление, а также нерелевантные значения удаляются.
Хорошая статьи о удалениях/читает/надгробия: http://thelastpickle.com/blog/2016/07/27/about-deletes-and-tombstones.html
Я читаю [эта статья] (https://wiki.apache.org/cassandra/ReadPathForUsers), он говорит по-разному: то Следит раздел index, который обеспечит смещение в SSTable, где мы сможем найти данные, связанные с нашим ключом раздела. Затем мы считываем данные из MemTable в памяти и объединяем их с данными из SSTables. Данные объединяются по ячейкам по ячейкам, причем временная метка для каждой ячейки сравнивается и выбирается самая последняя отметка времени. Надгробные плиты игнорируются. –
О надгробных плитах - они не игнорируют его так, как вы думаете. Пример. У вас есть ключ, и вы вставляли/обновляли его 3 раза, а затем удаляли его. Итак, теоретически вы можете иметь 4 "значения" для этого ключа - 3 значения и надгробный камень. Когда вы запрашиваете значение для этого ключа, движок будет проходить через все 4 "значения" и определять последний, и если это надгробный камень, вы не получите никаких строк/значений, но это не означает, что строка wasn ' t прочитал Кассандра. – nevsv