cdb - постоянное хранилище ключей для больших файлов (сотни ГБ) - PullRequest
6 голосов
/ 15 марта 2012

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

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

Спасибо, RG

Ответы [ 3 ]

5 голосов
/ 17 апреля 2012

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

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

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

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

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

1 голос
/ 17 апреля 2012

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

1 голос
/ 16 марта 2012

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

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

Само собой разумеется, что я бы порекомендовал;)

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

пока Кристоф

...