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

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

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

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

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

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

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

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

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

Итак, чтобы вернуться к вопросу:

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

1 ответ

Решение

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

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

Другие вопросы по тегам