TTL против default_time_to_live, какой из них лучше и почему? - PullRequest
0 голосов
/ 27 апреля 2018

Требование простое: нам нужно создать таблицу, в которой будет только 24 часа данных. У нас есть два варианта

  1. Defile TTL с каждой вставкой
  2. Сделать свойство таблицы default_time_to_live на 24 часа.

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

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Если в таблице есть default_time_to_live, то строки, которые превышают это ограничение по времени, удаляются немедленно, без надписей надгробий. Это не повлияет на строки / столбцы, для которых установлен явный TTL. Они будут захоронены.

Если вы идете по маршруту TTL, вам следует установить для свойства gc_grace_seconds в таблице значение, меньшее значения по умолчанию (10 дней). Особенно, если вы смотрите на 24-часовой TTL.

Ссылки:

Как данные удаляются <- Хороший фон </p>

Свойства CREATE TABLE <- Ссылка на свойство таблицы </p>

Об удалениях и надгробиях в Кассандре <- Все, что вы когда-либо хотели знать об удалениях и надгробиях </p>

0 голосов
/ 27 апреля 2018

Если вы используете Cassandra 3.0, вы также можете определить материализованный вид, см. Подробности: https://docs.datastax.com/en/cql/3.3/cql/cql_using/useCreateMV.html

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

Также я думаю, что на ваш вопрос относительно TTL ответили здесь:

Кассандра TTL для поведения таблицы

...