2010-06-30 4 views
1

Я ищу базы данных для домашнего проекта (ASP.NET MVC), который я мог бы разместить в конечном итоге. Прочитав аналогичный вопрос here о переполнении стека, я решил пойти с MySQL.SQLite-параллелизм выдает прерыватель транзакции?

Однако, простое использование & развертывание SQLite заманчиво, и я хотел бы подтвердить свои причины, прежде чем полностью его отпишу.

Моя цель - поддерживать сообщения о статусе пользователя (например, Twitter). Это означало бы, в основном, одну таблицу с парами идентификаторов пользователя/статуса/сообщения. Операция чтения/вставки/удаления для сообщения о состоянии. Никаких изменений не требуется.

После прочтения следующего абзаца я решил, что SQLite не может работать для меня. У меня есть простая база данных, но поскольку ВСЕ моя транзакция работает с таблицей SAME, я могу столкнуться с некоторыми проблемами.

SQLite использует блокировки чтения/записи для всего файла базы данных. Это означает, что если какой-либо процесс читается из любой части базы данных, все другие процессы не могут писать какую-либо другую часть базы данных. Аналогично, если какой-либо один процесс записывает в базу данных, всем другим процессам препятствует чтение любой другой части базы данных.

Является ли мое понимание наивным? Будет ли SQLite работать отлично для меня? Также MySQL предлагает что-то, что SQLite не будет при работе с ASP.NET MVC? Может быть, простота развития в VS?

+3

Вы рассматривали SQL Server Compact Edition? С некоторой предусмотрительностью вы можете изменить это на полный SQL Server позже, если вам нужно, но SQLCE не имеет проблем с блокировкой, которые делает SQLite. –

+0

@ Lasse Я не смотрел в нее, но сейчас. Спасибо! – Preets

+0

Сколько пользователей будет у вашего приложения? Сколько из них вы ожидаете фактически получить доступ к своему приложению одновременно? – ninjalj

ответ

3

Если вы готовы подождать полмесяца, следующий выпуск SQLite должен поддерживать write-ahead logging, что должно позволить больше дублировать запись.

+0

Спасибо Тангенс. Я проверил ссылку, и это похоже на хороший шаг для SQLite. Но, я не думаю, что я должен ждать, по крайней мере, мой энтузиазм истощается! – Preets

+0

Зависит от ваших сроков. Если вы не ожидаете интенсивного использования в течение следующих двух недель (это домашний проект и все), вы можете просто разработать для SQLite и обновить библиотеку. Или просто разработайте MySQL и порт для SQLite позже, если следующий выпуск окажется полезным. Если ваш код базы данных является нормальным, одноплатное приложение должно быть легко перевести. –

+0

Спасибо Тангенс. Я собираюсь работать с MYSQL и портировать его, если необходимо, для SQite после выхода новой версии. – Preets

1

Я не смог получить даже простые требования к параллельному SQLite для поддержки работы - даже после того, как вы спросили о SO пару раз.

Редактировать Так как я писал выше, я есть смог получить одновременные записи и чтения для работы с SQLite. Похоже, я не правильно распоряжался сеансами NHibernate - добавив использование блоков вокруг всего кода, который создал сеансы, решил проблему. /Edit

Но это, вероятно, хорошо для вашего приложения, особенно с упреждающей записью Logging, что user380361 упоминает.

Малый размер, установка одного файла, быстрый, хорошо работает с NHibernate, бесплатно, общественное достояние - очень хороший продукт практически во всех отношениях!

+0

. Я не смог получить даже простую заявку на параллелизм SQLite для поддержки работы - даже после того, как вы спросили о SO несколько раз. Это неудобно. Я собираюсь просто придерживаться MySQL на данный момент. Благодарю за ваш ответ. – Preets

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