Как Кассандра (или Сцилла) сортирует кластерные столбцы? - PullRequest
0 голосов
/ 27 октября 2018

Одним из преимуществ Кассандры (или Сциллы) является то, что:

Когда таблица имеет несколько столбцов кластеризации, данные сохраняются во вложенном порядке сортировки.https://docs.datastax.com/en/dse/6.0/cql/cql/cql_using/whereClustering.html

Из-за этого я думаю, что чтение данных в том же порядке сортировки должно быть очень быстрым.

Если данные записываются в другом порядке, чем в столбцах кластеризации, укажитекогда Кассандра (или Сцилла) на самом деле переупорядочивает данные?

Это происходит, когда memtables сбрасывается в SSTables?

Что, если memtable уже сброшен, и я добавляюновая запись, которая должна быть перед записями в существующей SSTable?

Сохраняет ли она данные на диске некоторое время и переупорядочивает их во время сжатия?

Если да, какие шагинужно, чтобы убедиться, что чтения в правильном порядке?

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Данные переупорядочиваются во время сжатия.

По сути, любая запись - это просто добавление, чтобы быть очень быстрым.Нет никаких операций чтения или поиска.

При чтении данных Кассандра читает из активной памяти и из одной или нескольких таблиц SSTable.Данные агрегируются, и запрос удовлетворяется.

Поскольку для распределения данных может потребоваться доступ к растущему количеству таблиц SSTable, сжатие играет роль в реорганизации данных на диске, что устраняет потенциальные накладные расходы при чтении данных из нескольких таблиц SSTable.,Стоит отметить, что SSTables являются неизменяемыми и создаются новые SSTables.Старые отбрасываются.

Процесс похож на Сциллу и Кассандру.

0 голосов
/ 29 октября 2018

Данные всегда сортируются в любом данном sstable.

Когда на диск записывается memtable, это создает новый sstable, который сортируется внутри самого себя.Это происходит естественным образом, поскольку таблицы памяти хранят данные в отсортированном порядке, поэтому в этой точке дополнительная сортировка не требуется.Сортировка происходит при вставке в памятную таблицу.

При чтении, использующем естественное упорядочение, нужно будет прочитать все sstables, которые имеют отношение к чтению, объединяя несколько отсортированных результатов в один отсортированный результат.Это объединение происходит в оперативной памяти.

Сжатие, когда оно включается, заменит несколько sstables одним, создавая объединенный поток так же, как при обычном чтении.

ЭтоТехника хранения данных известна как дерево слияния с лог-структурой .

...