Я ищу постоянное хранилище ключей и значений для .NET. Требования:
- Хранилище используется для объектов, которые идентифицируются строками и имеют несколько необязательных (именованных) свойств со значениями, которые являются просто массивами байтов. Для решения SQL я бы смоделировал его как одну таблицу string -> id и несколько таблиц id -> blob.
- Ожидаемый объем данных — несколько мегабайт (более 10 Мб на данный момент маловероятно, но масштабирование до 100 Мб было бы приятным бонусом)
- Легкий - желательно разовый, обязательно без внешних приложений
- Чтения происходят чаще, чем записи, по крайней мере, в 100 раз.
- Быстрый доступ для чтения/записи — я ожидаю хранения в памяти и ленивой записи обновлений данных; Я могу периодически создавать асинхронные записи самостоятельно, бонусные баллы, если это делает хранилище.
- Атомарный ввод-вывод — база данных не должна ломаться, если процесс завершается в середине записи; в противном случае данные не являются критическими, т. е. дополнительная избыточность не требуется.
В настоящее время я думаю, что здесь будет работать SQLite; однако это кажется небольшим излишеством - мне нужно только хранилище значений ключа, а не полная поддержка SQL. Я также слышал о привязке bdb и libdb-dotnet - она кажется более легкой, но я не знаю характеристик производительности/согласованности.
Кто-нибудь может здесь что-нибудь порекомендовать? Дополнительные ссылки приветствуются (т.е. было бы здорово, если бы в .NET Framework было что-то, что может сделать эту работу), а также опыт работы с SQLite или libdb-dotnet (или bdb в целом) или самодельное решение, если это было безболезненно .