RocksDB против Кассандры

И MyRocks (MySql), и Cassandra используют архитектуру LSM для хранения своих данных. Таким образом, в MySql я заполнил около 5 миллионов строк с MyRocks в качестве механизма хранения, а также в Cassandra. В Cassandra он занимает всего 1,7 ГБ дискового пространства, а в MySql с MyRocks в качестве механизма хранения - 19 ГБ.

Я что-то пропустил? Оба используют один и тот же механизм LSM. Но почему они различаются по размеру данных?

Обновить:

Я думаю, это как-то связано с текстовым столбцом. Моя структура таблицы (bigint,bigint,varchar, текст).

  • Населенных рядов: 300 000
  • В MyRocks размер данных 185МБ
  • На Кассандре - 13 МБ.

Но если я уберу текстовый столбец, тогда:

  • MyRocks - 21,6 МБ
  • Кассандра - 11 МБ

Есть идеи об этом поведении?

2 ответа

Ну, причина вышеупомянутого поведения заключается в том, что rocksdb_block_size имеет значение 4 КБ. Из-за меньшего количества данных черный компрессор находит меньшее количество данных для сжатия. Установка его в 16kb решает проблему. Теперь я получаю такой же размер данных, как и у кассандры.

Не 100% на MyRocks. Но Кассандра - это LSM, а также хранилище ключей. Это означает, что если ваш столбец равен нулю, он не будет сохранен на диске. Традиционно СУБД по-прежнему будет занимать некоторое пространство (varchars, указатели с нулевыми символами и т. Д.), Поэтому это может быть причиной вашего потерянного пространства.

Дополнительно Кассандра сжимает данные. Пытаться:ALTER myTable WITH compression = { 'enabled' : false };

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