Хорошая ли идея в Кассандре хранить 86 тысяч суперколонок (по 1-10 маленьких столбцов в каждой строке)? - PullRequest
2 голосов
/ 22 января 2012

tldr: ~ 90 000 супер-столбцов с 1-10 столбцами в каждом ряду слишком много? Как насчет ~ 1500? Значения столбца составляют около 6 байтов каждое.

полный вопрос :

Я исследую различные хранилища данных для данных временных рядов. Базы данных, ориентированные на столбцы, такие как Cassandra и HBase, выглядят очень хорошо.

Требования должны хранить миллионы серий данных, поступающих с (минимум) интервалом в 1 минуту. В идеале мы могли бы поддерживать 1-секундный интервал, если этого потребуют потребности бизнеса (возможно, они могут ).

Советы, предлагаемые в этом блоге , а также используемые OpenTSDB , имеют массу смысла.

По сути, ключи - это идентификаторы серии, объединенные с первой отметкой времени дня, столбцы создаются для каждого измерения в дне. Это примерно 86400 столбцов в строке.

Однако неизменность / версионность данных довольно важна. Бизнес-потребности диктуют возможность обновления значений рядов при сохранении полной истории данных.

Изучение суперколонок Кассандры для предоставления другого измерения для версионирования значений приводит к 86400 суперколонкам. Каждый суперколонка будет содержать один столбец при первом создании значения (возможно, TimeUUID), а затем будет добавляться еще один столбец при каждом «обновлении». Обновления будут происходить регулярно для ограниченных подмножеств ряда и значений. При идеальных условиях обновлений не будет. В идеале это означает, что каждый суперстолбец не имеет огромного количества данных для загрузки, и большая часть доступа будет иметь только самое последнее значение.

Итак, вернемся к вопросу:

Есть ли у меня проблема с производительностью или проблема, с которой я сталкиваюсь при поиске использования такого количества (86 КБ) супер-столбцов в строке?

1 Ответ

2 голосов
/ 25 января 2012

Консервативное использование 100К суперколонок и 1 КБ на суперколонку, которая выходит до 100 МБ на строку, что вполне соответствует тому, что Cassandra может обработать.

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

...