2014-10-07 1 views
0

Я смотрел: https://academy.datastax.com/courses/learning-cassandra-read-path/understanding-partition-summaries-and-indexes и у меня есть вопрос относительно этой презентации.Internals of Partition Summary in cassandra

Что представляет собой сводка раздела? :)

Моя первая идея заключалась в том, что это всего лишь кеш, который хранит х% мест в ключах. Это означало бы, что примерно один запрос 126 может получить ключ напрямую, а другие 125 должны перемещаться по целой таблице. Но это довольно неэффективно, я думаю.

Моей второй идеей было то, что в разделе «Сводка» каким-то образом можно указать указанный ключ, чтобы дать вам ряд индексов, в которых должна существовать строка для данного ключа. Но я не могу представить, как это можно реализовать? Особенно, если эта таблица должна быть размера | Partition Index |/index_interval

Другой вопрос, который приходит мне на ум, может SSTable хранить много записей для определенного ключа?

Благодаря, krzychusan

ответ

5

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

Очень простой пример поможет объяснить концепцию.

Предположим, что в файле индекса разделов содержится 100 ключей разделов: pk001 - pk100. Ключи разделов хранятся в отсортированном порядке, поэтому мы знаем, что pk027 появляется после pk025.

В этом упрощенном примере, если в сводке разделов было задано выборка каждые 10 ключей разделов, тогда она будет содержать карту десяти ключей разделов и их расположение на диске в индексе раздела. Например, pk001 -> начало файла, pk010 -> расположение pk010 в индексном файле и т. Д.

Теперь, когда C * получает запрос на pk027, он знает, что pk027 находится после pk020. Кроме того, сводка (которая отображает каждые 10 ключей разделов), знает точное местоположение pk020.

Итак, C * выполняет поиск местоположения pk020 в файле индекса на основе информации, предоставленной сводкой. Затем он выполняет очень короткое сканирование с pk020 на pk027.

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