Cassandra простые запросы первичного ключа - PullRequest
0 голосов
/ 18 октября 2018

Мы хотели бы создать таблицу Кассандры с простым первичным ключом, который состоит из столбца UUID.Таблица будет выглядеть следующим образом:
CREATE TABLE simple_table( id UUID PRIMARY KEY, col1 text, col2 text, col3 UUID );

Эта таблица потенциально может хранить несколько миллиардов строк, и срок действия строк должен истечь через некоторое время (несколько месяцев) с использованием функции TTL.У меня есть несколько вопросов относительно эффективности этой таблицы:

  1. Какова эффективность запроса к этой таблице с использованием первичного ключа?Имеется в виду, как Кассандра находит конкретную строку после определения, в каком разделе она находится?
  2. Учитывая, что строки истекают и создают много надгробий, как это повлияет на чтение и запись в эту таблицу?Допустим, мы истекаем через 180 дней, если я не ошибаюсь, соотношение надгробий будет 10/180 ~ = 0.056 (когда 10 - это gc_grace_periods в днях).

Ответы [ 2 ]

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

После прочтения блога (и комментариев), на которые ссылался @Alex, я пришел к выводу, что надгробные плиты создаются для просроченных строк из-за default_time_to_live таблицы.Эти надгробия будут очищены только после того, как пройдет gc_grace_periods.Смотрите этот вопрос переполнения стека .

Что касается моих первых вопросов, то на этой странице datastax все довольно хорошо описывается.

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

В вашем случае первичный ключ равен ключу раздела, поэтому у вас есть так называемые «узкие» разделы, состоящие из одной строки.Если вы удалите данные, то вместо данных внутри раздела у вас будет только надгробная плита, и это не проблема.Если срок действия данных истек, то они будут просто удалены во время уплотнения - gc_grace_period здесь не применяется - это требуется только при явном удалении данных - нам нужно сохранить надгробную плиту, потому что другим узлам может потребоваться «догнать»изменения, если они не смогли получить операцию удаления.Вы можете найти более подробную информацию об удалении данных в следующем документе .

Проблема с надгробиями возникает, когда у вас много (тысячи) строк внутри одного раздела, например, если вы используете несколько кластеровключи.А когда такие данные удаляются, создается надгробная плита, и ее следует пропускать, когда мы читаем данные внутри раздела.

PS Вы видели это сообщение в блоге , в котором объясняется, как происходит удаление?

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