Мне нужна простая встроенная база данных для относительно небольшого размера базы данных (< 100 МБ, но в большинстве случаев < 20 МБ) и максимум 1-2 одновременных пользователей/соединений в среднем. Он должен иметь возможность защищать/шифровать данные с помощью логина.
Какая база данных лучше всего подходит для работы?
Pros
- Поддержка базы данных в памяти
- Хорошая производительность
- Реальная установка XCopy (или реальное внедрение)
- Открытый исходный код и независимая платформа
- имеет С# портирование → http://code.google.com/p/csharp-sqlite/
против
- C API (низкая производительность)
- Плохая поддержка SQL
- Может быть очень сложно с большим набором данных
- Нет прямой поддержки шифрования данных (расширения доступны)
Pros
- Хороший анализатор запросов (обычные запросы могут использоваться совместно с SQL Server)
- Много информации, хорошая документация (короткое время обучения)
- Поддержка OLE DB (C/С++) и ADO.NET
- Встроенная поддержка шифрования данных
- Поддержка репликации SQL (действительно классная функция)
против
- Нет установки XCopy (может мешать другой установке)
- Ну.. что все?
Для вашего сценария, безусловно, SQL CE, не так ли?
Шифрование в SQLite не является бесплатным.
Но его очень легко внедрить с его неинвазивным размером и простой установкой копирования файлов.
Поставщик SQLite для .NET является надежным (по крайней мере, в однопользовательском режиме - я никогда не создавал приложение с несколькими параллельными сценариями с использованием SQLite и, вероятно, никогда этого не делал, потому что SQLite использует схему блокировки файлов, схема блокировки и все мои приложения, как правило, имеют только одного пользователя или многих пользователей. Поэтому вам придется тратить время на обработку concurrency проблем.
Кроме того, SQLite имеет неплохую поддержку SQL и хорошо справляется с большими наборами данных.
Таким образом, вам нужно назначить приоритетный вес каждому из ваших требований. Насколько важна легкость установки? Насколько важен concurrency? Насколько важно шифрование?
Они оба отличные ИМО. Но, когда это возможно, я стараюсь придерживаться материала MS при работе в .NET. Это предполагает, что бюджет на месте, чтобы сделать это... но так как вы смотрите на SQL Server CE и Sqlite, они оба свободны. Оба будут поддерживать EF, но я бы предположил, что Sql Server CE будет иметь лучшую поддержку в большинстве областей.
Кроме того, рассмотрели ли вы просмотр db4o для встроенного решения? Довольно приятное решение NoSQL... и оно также бесплатное.
Они должны одинаково хорошо обрабатывать задание.
Если вы знакомы с разработкой SQL Server, SQL Server Compact Edition, вероятно, даст вам наименьшее количество головных болей. Поставщик, запросы и строка подключения будут знакомы.