Какие-либо соображения перед вскакиванием в SQLite?

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

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

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

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

Обновление

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

Другая положительная сторона - то, что я только должен сохранить данные в течение 90 дней, таким образом, DB не должен становиться слишком большим.

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

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

Если у Вас есть опыт с SQLLite, отправьте свои события, таким образом, я могу сделать aan обоснованное решение переключиться или нет.

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

5
задан demongolem 28 June 2011 в 14:38
поделиться

5 ответов

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

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

1
ответ дан 13 December 2019 в 19:26
поделиться

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

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

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

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

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

5
ответ дан 13 December 2019 в 19:26
поделиться

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

3
ответ дан 13 December 2019 в 19:26
поделиться

finalize () используется JVM только для очистки ресурсов при сборе объекта. Для класса целесообразно определить, какие действия должны выполняться при сборе, для чего может потребоваться доступ к super.finalize (). Для внешнего процесса нет смысла вызывать finalize (), так как внешний процесс не имеет контроля над сбором объекта.

-121--1278244-

Я столкнулся с ошибкой IIS и VS2010 - она решена повторным запуском версии aspnet_regiis .NET 3.5.

http://social.msdn.microsoft.com/Forums/en-US/vsprereleaseannouncements/thread/44dfcf76-bede-4f96-a556-b219a18b6116

-121--2666439-

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

1
ответ дан 13 December 2019 в 19:26
поделиться

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

Релиз-кандидат LinqPad теперь поддерживает Sqlite: http://www.linqpad.net/Beta.aspx .

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

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

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

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

1
ответ дан 13 December 2019 в 19:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: