База данных без SQL для больших значений - PullRequest
1 голос
/ 14 декабря 2010

Я ищу хранилище значений ключей, которое может обрабатывать значения размером в несколько гигабайт.Я посмотрел на Riak , Redis , CouchDb , MongoDB .

Я хочу сохранить рабочее пространствопользователя (равняется каталогу в файловой системе, рекурсивно с подкаталогами и файлами в нем) в этой БД.Конечно, я мог бы использовать файловую систему, но тогда у меня не было таких функций, как кеширование в ОЗУ, решение отработки отказа, резервное копирование и репликация / кластеризация, которые поддерживаются, например, Redis.

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

Кто-нибудь имел опыт работы с любым из этих продуктов?

Ответы [ 2 ]

2 голосов
/ 14 декабря 2010

Прежде всего, получение MD5 или CRC32 из объема данных в ГБ будет мучительно дорого в вычислительном отношении. Наверное, лучше этого избежать. Как насчет хранения данных в файле и индексации имени файла?

Однако, если вы настаиваете, я по-прежнему предлагаю просто сохранить хэш, а не все значение данных, с массивом / таблицей поиска до конечного расположения данных. Безопасность этого подхода (неуникальная возможность) будет напрямую зависеть от количества больших выборок. Чем длиннее хеш, который вы создаете - 32 бита против 64 бита против 1024 бита и т. Д., Тем безопаснее он становится. Почти любая словарная система на языке программирования или ядро ​​базы данных будет иметь механизм хранения двоичных данных. В противном случае вы можете сохранить строку с шестнадцатеричным значением, соответствующим хеш-номеру, в столбце char.

1 голос
/ 19 декабря 2010

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

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