Максимальное количество столбцов, которое поддерживает Cassandra в таблице - PullRequest
0 голосов
/ 04 сентября 2018

Я могу создать таблицу для хранения данных одного временного ряда.

CREATE TABLE timeseries( partition bitint, timestamps bigint, key text, value text, PRIMARY KEY((partition,key),timestamps);

Раздел - это функция (например, деление) самих меток времени. Это будет хранить одно значение за раз для ключа.

Что делать, если нам нужно хранить около 1000 значений одновременно для ключа. Будет значение_1, значение_2, ... значение_1000. т.е. еще 1000 полей в таблице.

CREATE TABLE timeseries(partition bitint,timestamps bigint, key text, value_1 text,value_2 text,value_3 text,
 . . .

value_999 text,

value_1000 text,

 PRIMARY KEY((partition,key),timestamps);

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

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Вместо этого вы должны сделать PRIMARY KEY((partition,key), timestamps, value_id);, где value_id идет 1-1000 и один value текст. Тогда вы сможете иметь 1000 значений без огромных строк в вашем разделе. Проблема в том, что вся строка считается одной страницей при поиске. Наименьшая единица, представляющая собой 1000 значений, делает невозможным разбивку на части меньшего размера. JVM трудно выделить большие непрерывные блоки для отправки, что создает огромную нагрузку на пространство старого поколения и длинные паузы GC.

Существует также общий размер раздела, который необходимо учитывать. Хотя ограничение ячейки на раздел составляет 2 миллиарда, некоторые практические ограничения описаны в Почему так плохо иметь большие разделы в Кассандре? .

0 голосов
/ 04 сентября 2018

Кассандра имеет жесткое ограничение в 2 миллиарда клеток на разделение. Скорее всего, у вас будут проблемы до того, как вы достигнете этого «жесткого» числа.

Чтобы рассчитать количество ячеек в разделе, вы можете использовать следующую формулу:

nv = nr(nc - npk - ns) + ns

где:

  • nv = количество ячеек в разделе
  • nr = количество строк
  • нс = количество статических столбцов
  • nc = количество столбцов
  • npk = количество столбцов первичного ключа

nc - npk - ns также известен как количество значений в строке.

Еще немного Ограничения Кассандры .

...