Подходит ли Cassandra для хранения журналов с точки зрения использования дискового пространства?
У меня проблема с хранением 50 Гб журналов каждый день в распределенной среде. Я посмотрел на Hadoop HDFS, но из-за проблем с инфраструктурой Windows, отсутствия многоязычного API файловой системы он мне не очень подходит. Cassandra, с другой стороны, очень легко развернуть на любой платформе. Единственная большая проблема, с которой я сталкиваюсь - это использование дискового пространства. Вот цифры:
- Исходный размер журнала составляет 224 МБ.
- Файл данных Кассандры - 557 Мб
- Индекс файла Кассандры составляет 109 МБ
Таким образом, я получил почти вдвое больше издержек при сохранении строк журнала из файла журнала.
Можно ли каким-то образом настроить Cassandra, чтобы он не занимал так много места на диске для очень простых сценариев?
1 ответ
Я полагаю, вы имеете в виду одну строку (с четырьмя столбцами) внутри семейства столбцов? Служебные данные, связанные с каждым столбцом, - это long (временная метка, 64 бита) и byte[] (имя столбца, максимум 64 КБ). Так что использование диска 4х кажется немного странным. Вы делаете какие-либо удаления? Обязательно поймите, как выполняется удаление в распределенной, в конечном итоге согласованной системе.
Обязательно прочитайте и про " уплотнения". ("После завершения сжатия старые файлы SSTable могут быть удалены")
Также хотелось бы напомнить вам об ограничении Thrift относительно того, как осуществляется потоковая передача.
Публичный API Cassandra основан на Thrift, который не предлагает потоковых возможностей - любое записанное или извлеченное значение должно уместиться в памяти. Это присуще дизайну Thrift и поэтому вряд ли изменится. Поэтому для добавления поддержки больших объектов в Cassandra потребуется специальный API, который вручную разделяет крупные объекты на части. Потенциальный подход описан в http://issues.apache.org/jira/browse/CASSANDRA-265. В качестве обходного пути вы можете вручную разбить файлы на куски любого размера, который вам удобен - по крайней мере, один человек использует 64 МБ - и сделать файл соответствующим строке с кусками в качестве значений столбцов. (Со страницы " Ограничения Кассандры" в вики)