Любая DBM для .NET?

Я ищу простую библиотеку DBM, такую ​​как BerkeleyDB или Kyoto Cabinet, но изначально работающую для .NET. Мне нужно управлять более чем одним миллионом записей (возможно, десятью миллионами) и, возможно, иерархически (этот последний пункт не является обязательным, мы можем работать с линейной структурой).

Такое вообще существует?


person picrap    schedule 12.10.2011    source источник
comment
Что означает клиентская сторона? В браузере?   -  person John Saunders    schedule 12.10.2011
comment
Я изменил клиентскую часть библиотекой, спасибо за комментарий. Мне действительно нужна простая библиотека.   -  person picrap    schedule 12.10.2011
comment
Список бесплатных переносимых баз данных на SO.   -  person Chris Shouts    schedule 12.10.2011
comment
Я только что нашел Raptor DB: кто-нибудь пробовал? codeproject.com/KB/database/RaptorDB.aspx   -  person picrap    schedule 13.10.2011


Ответы (5)


Наконец я нашел RaptorDB, и он почти полностью соответствует моим потребностям. Я напишу свою оценку здесь после того, как она будет полностью протестирована.

Редактировать: после тестирования он работал не совсем так, как ожидалось. На самом деле он был не совсем рабочим, поэтому я написал свой собственный DBM (он всегда заканчивается так :)). Проблемы в многопоточной среде, где я довольно часто сталкивался с повреждением БД (и да, я проверял свой код на безопасность потоков). Если у кого-то есть положительный отзыв, мне интересно.

person picrap    schedule 13.10.2011
comment
Я тоже экспериментирую с RaptorDB, но мои требования гораздо меньше ваших. Мне просто нужно уникальное хранилище значений ключей, чтобы сохранять результаты геокодирования json в течение нескольких месяцев. По сути, это энергонезависимый кэш ответов службы RESTful. RaptorDB кажется хорошим вариантом! - person NovaJoe; 13.03.2012

SQL Server Compact Edition является жизнеспособным выбором, хотя я не уверен, что вы подразумеваете под " изначально работает для .NET» - .NET не имеет встроенной базы данных (если вы не считаете DataTables и XML, чего я не делаю).

person MusiGenesis    schedule 12.10.2011
comment
Я бы предпочел что-то написанное на .NET, потому что приложение будет мультиплатформенным. Я также предпочел бы простую библиотеку. - person picrap; 12.10.2011
comment
Я не знаю движков баз данных, написанных на .NET (и было бы безумием пытаться). SqlCE — очень простая в использовании библиотека, и она может без труда обработать миллион записей. - person MusiGenesis; 12.10.2011
comment
Зачем искать простую библиотеку, когда можно получить (почти) полную функциональность SQL Server? Бесплатно? - person John Saunders; 12.10.2011
comment
потому что типичные таблицы, такие как BerkeyDB или Kyoto Cabinet, намного быстрее :) (и, кроме того, мне просто нужно простое хранилище ключей/значений) - person picrap; 13.10.2011
comment
@picrap: это ваше очень рискованное и необоснованное заявление... можете ли вы подкрепить его неопровержимыми фактами и цифрами?? сильно сомневаюсь что.... - person marc_s; 13.10.2011
comment
en.wikipedia.org/wiki/Dbm, но в остальном я не смог найти никакого сравнения между RDBM и DBM. Между автомобилем и байком тоже нет эталона скорости, но результат, как правило, тоже налицо :) - person picrap; 13.10.2011

Как насчет System.Data.SQLite?

person Vlad    schedule 12.10.2011
comment
Я не уверен в производительности SQLite (я обновил свой вопрос, потому что мне нужно иметь возможность быстро искать миллион записей). Я также не уверен, что дефрагментация файлов работает. - person picrap; 12.10.2011

Предполагая, что вы работаете в Windows, я предлагаю попробовать механизм базы данных ESENT через уровень взаимодействия ManagedEsent. ESENT встроен в Windows и имеет тот же уровень функциональности и производительности, что и BerkelyDB. Различия в том, что ESENT — это не просто хранилище ключей/значений, в него встроены столбцы и индексы, но ESENT не поддерживает репликацию.

person Laurion Burchall    schedule 12.10.2011
comment
Спасибо, но приложение будет мультиплатформенным, поэтому нативный код, а тем более системные компоненты - не лучший вариант. - person picrap; 12.10.2011

Моя компания создала слой .NET для XML-библиотеки Berkeley DB, которую можно загрузить по адресу http://bdbxml.net. . Вы получаете встроенную библиотеку базы данных XML, которую можно запускать в .NET и при необходимости использовать базы данных на других платформах, используя различные языковые привязки. Если вы заинтересованы, не стесняйтесь обращаться ко мне с дополнительными требованиями, чтобы я мог немного лучше понять архитектуру вашего решения и посмотреть, можем ли мы подойти вам.

С уважением

person Lucas Vogel    schedule 13.10.2011