Дисковое пространство голодных баз данных NoSQL - PullRequest
5 голосов
/ 09 июня 2010

Я протестировал базы данных NoSQL, такие как CouchDB, MongoDB и Cassandra, и обнаружил тенденцию к поглощению очень большого объема дискового пространства относительно вставленных пар ключ-значение. При сравнении безсхемных баз данных CouchDB и MySQL CouchDB потребляет гораздо больше места на диске, чем MySQL. Я знаю о том, что БД со значением ключа по умолчанию являются версиями и имеют длительный uuid и нуждаются в оптимизации ключа - сравнение было между 15 млн строк в MySQL и 1-5 млн документов, перечисленных в NoSQL БД.

Мой вопрос : существует ли NoSQL с хорошим сжатием / сжатием данных? Так что я могу иметь базу данных NoSQL размером ближе к 5 ГБ, чем 50 ГБ?

Ответы [ 4 ]

4 голосов
/ 10 июня 2010

Дисковое пространство - это самый дешевый ресурс на сегодняшний день, поэтому, если вы можете обменять его на меньшее количество запросов или меньше процессорного времени, это хорошая сделка. Это то, что делает Кассандра.

1 голос
/ 11 ноября 2010

Я думаю, что проблема в ключе. CouchDB хранит свои данные в b-дереве. UUID - ключи являются причиной того, что вам требуется большой объем дискового пространства. B-дерево хранит данные компактные по своей природе, за исключением UUID. Попробуйте найти ключ, который удобнее для b-дерева.

1 голос
/ 10 июня 2010

MongoDB имеет функцию «восстановления базы данных», которая также выполняет сжатие. Однако такое сжатие не произойдет во время работы БД.

Но если пространство БД является серьезной проблемой, попробуйте настроить пару главный / подчиненный MongoDB. Поскольку данные нуждаются в сжатии, запустите восстановление на ведомом устройстве, дайте ему «догнать» и затем переключите их. Теперь вы можете безопасно сжать мастер.

Но я должен повторить комментарий jbellis : вам, вероятно, потребуется больше места, и большинство этих продуктов предполагают, что дисковое пространство (относительно) дешево. Если места на диске очень мало, то вы обнаружите, что MongoDB имеет разумный размер, но ему будет сложно конкурировать с табличными данными CSV.

Подумайте об этом так, что более экономно ?

  • файл CSV с миллионом строк
  • те же данные, отформатированные в JSON

Очевидно, что JSON будет длиннее, потому что вы повторяете имена полей каждый раз. Единственным исключением здесь является CSV-файл с примерно 100 столбцами, из которых только несколько заполнены для каждой строки. (но это, вероятно, не ваши данные)

0 голосов
/ 09 июня 2010

Вы проверяете "длину файла" или фактический размер выделения?

Многие базы данных редко выделяют файловые структуры, и их "длина" намного больше, чем их размер на диске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...