Какие-либо соображения, прежде чем перейти к SQLite? - PullRequest
5 голосов
/ 18 февраля 2010

У меня есть приложение WCF, которое в настоящее время использует файловое хранилище на основе XML для хранения данных, которые используются для создания отчетов.Кроме того, решения об обработке принимаются на основе информации, хранящейся в этих файлах XML.

Сейчас я работаю с объемом около 30 000 текстовых файлов.Это невероятно сложно, и приложение иногда останавливается.

Я всегда хотел отказаться от XML DAL в пользу СУБД, но руководители проектов просто не допустят этого.Но они будут готовы взглянуть на безсерверное решение, например, SQLLite.Я действительно испытываю желание просто погрузиться и начать использовать его в качестве замены DAL (Data Access Layer).

Мне бы понадобилось не более 20 таблиц в целом решении, и я ожидал бы получать не более 20 000 - 100 000 транзакций в день, однако это крайне важно, реальные объемы будут меньшечем это в большинстве случаев.

Обновление

Я не ожидаю большого количества одновременных подключений, когда я говорю о транзакциях, я по сути имею в виду 1 или 2 клиента, которые выполняют вызовы и выполняют по базе данныхс целью.Иногда внешние клиенты могут быстро звонить в БД.Но большая часть соединений с БД будет выполняться моей службой WCF, которая является заданной серверной задачей, а не обслуживает сотни людей по всей организации.

Еще один хороший момент заключается в том, что мне нужно хранить данные только в течение 90 дней, поэтому размер БД не должен быть слишком большим.

Мои основные проблемы:

Насколько надежен SQLLite?Что, если файл БД будет поврежден, я потеряю все данные обработки.Насколько легко выполнить резервное копирование БД?Будет ли это обрабатывать мои объемы?И, наконец, насколько хорошо работает поставщик .net (расположен здесь: http://sourceforge.net/projects/sqlite-dotnet2/).

Если у вас есть опыт работы с SQLLite, пожалуйста, опубликуйте свой опыт, чтобы я мог принять информированное решение о переключении или нет.

Заранее спасибо ...

Ответы [ 5 ]

5 голосов
/ 18 февраля 2010

SQLite так же надежен, как ваша ОС и оборудование.

Его транзакционная скорость аналогична SQL-серверу, и часто быстрее, потому что все в процессе.

Поставщик .NET ADO работает отлично.

Для резервного копирования БД остановите службу и скопируйте файл. Если файл журнала присутствует, скопируйте его тоже.

РЕДАКТИРОВАТЬ: SQLite использует UTF-8 по умолчанию, поэтому с провайдером ADO-NET вы сможете избежать потери акцентов (при условии, что вы следуете типичному XML в правилах строки).

3 голосов
/ 18 февраля 2010

Вы можете рассмотреть Microsoft Sql Compact Edition.
Это похоже на sqlite, с точки зрения того, что он представляет собой встроенную базу данных с одним файлом, но имеет лучшую интеграцию с .net framework:)
SQLite кажется надежным, и даже с MicrosoftВо-первых, не ожидайте получить большую поддержку в случае повреждения базы данных.

1 голос
/ 18 февраля 2010

Я использую Sqlite для хранения данных конфигурации XML, и у меня не было проблем с этим.Я использую провайдера System.Data.Sqlite: http://sqlite.phxsoftware.com/. Он надежный и имеет хороший форум поддержки.Он также включает в себя поставщика LINQ.Он также интегрируется с VS 2008, поэтому вы можете использовать Server Explorer для запроса таблиц.В примерах и документации также показано, как использовать параметризованные команды и транзакции для повышения производительности.

Кандидат на выпуск для LinqPad теперь поддерживает Sqlite: http://www.linqpad.net/Beta.aspx.

Sqlite хранит все в одном файле, которыйможно создавать резервные копии, как и любой другой двоичный файл.

Sqlite поддерживает только блокировку на уровне файлов, но не должна вызывать проблем с производительностью, поскольку не похоже, что у вас будет большое количество одновременных транзакций.

Юникод не должен быть проблемой.Эта ссылка на форуме относится к области, где кто-то пытался читать символы Юникода с помощью несовместимой утилиты http://sqlite.phxsoftware.com/forums/t/954.aspx.

На этом сайте показано, как выполнять сравнения UTF8 без учета регистра с помощью System.Data.Sqlite с помощью настраиваемого сопоставителя.с русскими символами в качестве примера: http://www.codeproject.com/KB/database/SQLiteUTF8CIComparison.aspx.

1 голос
/ 18 февраля 2010

Я использовал SQLite с провайдером .Net без проблем в среде моноузера, за исключением одной проблемы: акценты, которые не отображаются правильно. Резервное копирование довольно просто: база данных SQLite представляет собой простой текстовый файл. Просто скопируйте это.

1 голос
/ 18 февраля 2010

Учитывая ваш объем транзакции, я бы сказал, что проблема в том, что сама БД представляет собой один монолитный файл с доступной только блокировкой файловой системы, может быть проблемой.

Насколько я знаю, блокировки на основе строк не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...