cdb — постоянное хранилище ключей и значений для больших файлов (сотни ГБ)

Мне нужен инструмент, похожий на cdb (постоянная база данных), который позволил бы мне хранить большие наборы данных (в диапазоне сотен гигабайт) в проиндексированных файлах. CDB — идеальный кандидат, но он имеет ограничение на размер файла в 2 ГБ, поэтому он не подходит. Функциональность, которую я ищу, — это постоянное хранилище ключей и значений, поддерживающее двоичные ключи и значения. После создания база данных доступна только для чтения и никогда не будет изменена. Можете порекомендовать какой-нибудь инструмент? И кстати, накладные расходы на хранение должны быть небольшими, потому что я буду хранить миллиарды записей.

Кстати, я ищу библиотеку управления БД (встраиваемую), а не автономный сервер. Что-то, что можно использовать внутри программы на C.

Спасибо, РГ.


person nightwatch    schedule 15.03.2012    source источник


Ответы (3)


Другим вариантом является mcdb, который является расширением cdb Дэна Дж. Бернштейна.

https://github.com/gstrauss/mcdb/

mcdb поддерживает очень большие постоянные базы данных и быстрее, чем cdb, как для создания базы данных, так и для доступа к базе данных. Тем не менее, создание базы данных размером в сотни гигабайт может занять некоторое время. mcdb может создать базу данных размером в гигабайт за несколько секунд для кешированных данных или примерно за минуту при запуске из холодного кеша.

https://github.com/gstrauss/mcdb/blob/master/t/PERFORMANCE

(Раскрытие информации: я автор mcdb)

person gstrauss    schedule 17.04.2012

Есть hamsterdb (я автор), berkeleydb, токийский кабинет.

hamsterdb использует btree и поэтому сортирует ваши данные. кабинет tokyo представляет собой хеш-таблицу и поэтому не отсортирован. berkleydb может сделать и то, и другое.

Излишне говорить, что я бы порекомендовал ;)

Все они могут быть связаны с приложением C. Ни у одного из них не должно быть ограничения в 2 ГБ.

пока Кристоф

person cruppstahl    schedule 16.03.2012
comment
спасибо, Кристоф. Я знал об этих магазинах kv, но искал что-то еще более низкоуровневое. Но теперь я думаю, что это была не очень хорошая идея. Вчера я начал экспериментировать с Беркли, и, вероятно, он справится со своей задачей. Извините, что не использую Hamster — в моей системе уже установлен berkeley... - person nightwatch; 18.03.2012

Если ваше значение велико, а ключи малы, вы также можете использовать Redis http://redis.io.

person vivekv    schedule 17.04.2012