2011-04-12 3 views
4

Я ищу постоянное хранилище ключей для .NET. Требования:.NET - Быстрое легкое постоянное хранилище ключей-значений

  • Хранение используется для объектов, которые идентифицируются строками и имеют несколько необязательных (именованных) свойств со значениями, которые представляют собой только массивы байтов. Для SQL-решения я бы смоделировал его как одну строку -> таблицу id и несколько таблиц id -> blob.
  • Ожидаемое количество данных в нескольких мегабайтов (более 10 Мб в настоящее время маловероятны, но масштабирование до 100 Мб будет приятный бонус)
  • Lightweight - предпочтительно одной сборки, безусловно, без внешних приложений
  • Читает чаще, чем записи, по крайней мере, в 100 раз.
  • Быстрый доступ к чтению/записи - я ожидаю, что память в памяти и ленивая запись об обновлениях данных; Я могу периодически создавать асинхронные записи самостоятельно, бонусные баллы, если это делает хранилище.
  • Atomic I/O - база данных не должна прерываться, если процесс завершается в середине письма; в противном случае данные не являются критическими, т. е. не требуется дополнительная избыточность.

В настоящее время я думаю, что SQLite будет работать здесь; однако, похоже, это небольшой перебор - мне нужна только память с ключом, а не полная поддержка SQL. Я также слышал о bdb и привязке libdb-dotnet - он кажется более легким, но я не знаю характеристик производительности/согласованности.

Может ли кто-нибудь порекомендовать что-нибудь здесь? Дополнительные ссылки приветствуются (т. Е. Было бы замечательно, если в .NET Framework можно было бы что-то сделать), а также опыт работы с SQLite или libdb-dotnet (или вообще bdb) или самодельным решением, если он был безболезненным ,

+0

Звучит для меня, используя любую базу данных, будет излишним для этого, всего за 10 мб, почему бы не прочитать/написать все сразу и с диска? (это не похоже на то, что он занимает столько памяти) – Doggett

+0

@Doggett, похоже, что повторное создание базы данных, если предлагаемое приложение нетривиально. – driis

+0

@Doggett, проблема в том, что запись полного БД при каждом обновлении будет медленным, и нет единственной точки флеша (т. Е. Я не могу написать полный БД при выходе из приложения, потому что приложение может быть прекращено досрочно); Я должен буду поддерживать частичные флеши и сделать их атомарными - это единственная нетривиальная вещь об этом, я думаю. – zeuxcg

ответ

0

Возможно, посмотрите на http://ravendb.net/. Он хранит документы JSON в хранилище с ключом, но с большой поддержкой объектов .NET.

Из вашего объяснения ваших потребностей вы также можете изучить использование только управляемого механизма хранения «Raven.Munin», который представляет собой единую сборку.

Смежные вопросы