Пример процесса чтения Кассандры - PullRequest
0 голосов
/ 23 февраля 2019

Я читал https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlAboutReads.html и запутался, когда добрался до кэша ключа раздела.

Я понимаю, что в кэше ключа раздела вы можете прочитать индекс ключа раздела ,, а затем использовать индекс для поиска дискарасположение в карте смещений сжатия, поэтому вам не нужно выполнять шаг «Сводка разделов».

После sstable pass Bloom Filter у него может быть ключ раздела.Например: sstable1 имеет pk1, pk2;keycache.pk1 = index0, keycache.pk2 = index0;compresset_offset_map.index0 = location0

Вот вопросы:

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

Может быть, я неправильно понял и дал пример неправильно

Я тоже не понимаю, как работает Partition Summary.

Может кто-нибудь дать мне конкретный примеркак это на самом деле работает?

Спасибо

1 Ответ

0 голосов
/ 28 февраля 2019
1. The concept of Partition key cache, is based on the fact that partition keys     are always stored in sorted order.
2. Partition summary is off-heap memory structure. and is based on sampling of partition keys which are present in partition index.    
3. Partition index file is stored on disk. and this file stores index of all partition keys along with their mapped offset.    

Предположим, что файл индекса раздела содержит 50 ключей раздела: От Key01 - Key50.

Как упоминалось ранее, сводка разделов основана на выборке. Если мы установим сводку разделов для выборки каждые 10 ключей разделов, то память сводок разделов будет содержать информацию о пяти ключах разделов и их расположении на диске в пределахиндекс раздела.

For example, (This should be likely structure of Partition key cache)

Partition Key 01 -> location of PK01 from Partition index File
Partition Key 11 -> location of PK11 from Partition index File
Partition Key 21 -> location of PK21 from Partition index File
Partition Key 31 -> location of PK31 from Partition index File
Partition Key 41 -> location of PK41 from Partition index File

Теперь, если запрос содержит запрос ключа раздела 33, он начнет сканирование кэша ключа раздела, который находится в памяти и помогает в более быстром сканировании, он узнает диапазон, где находится ключ разделения 33присутствует, т. е. между ключом 31 раздела и ключом 41

. Таким образом, он напрямую переходит к расположению PK31 в индексном файле на основе информации, представленной в сводке.Затем выполняется очень быстрое сканирование с использованием ключа раздела 31 и ключа раздела 41.

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...