SQLite - обновление через веб-приложение или приложение клиент / сервер - PullRequest
0 голосов
/ 12 марта 2011

(1) Поскольку база данных SQLite представляет собой один файл, при использовании SQLite существует ли разница между следующими двумя сценариями?-

Дело A - 2 пользователя делают обновление в одной базе данных с помощью веб-приложения

Дело B -2 приложения WinForms для обновления одной и той же базы данных (например, клиент / сервер * модель 1014 *)

Этот вопрос пришел ко мне после прочтения следующего вопроса с часто задаваемыми вопросами по SQLite FAQ - http://www.sqlite.org/faq.html#q5- Могут ли несколько приложений или несколько экземпляров одного и того же приложения одновременно обращаться к одному файлу базы данных?

«Несколько процессов могут одновременно открывать одну и ту же базу данных .....»

(2) В случае A (веб-приложение) число процессов, подключающихся к базе данных, = 1?В случае B (клиент / сервер) это 2?

(3) Для случая А будет ли иметь значение, если файл базы данных SQLite находится на том же компьютере, что и веб-сервер, а не на сетевом ресурсе?

Ответы [ 2 ]

1 голос
/ 12 марта 2011

Несколько процессов могут одновременно считывать базу данных, выполнять запросы и тому подобное, но запись может выполняться только по одному. Обычно первый процесс, открывающий базу данных, получает запись в нее, а другие, пытающиеся писать, получают SQLITE_BUSY, который можно обрабатывать с помощью функций API sqlite3_busy_handler () или sqlite3_busy_timeout ().

Имейте в виду, что после успешной записи в базу данных sqlite данные, считанные другими процессами в той же базе данных, теперь могут устареть (кеш теперь как бы непоследовательный). Вам нужно разобраться с этим сценарием.

Случаи A и B могут быть как 1, так и 2: это зависит от того, обращаются ли веб-приложение и клиент-серверное приложение к базе данных одновременно или последовательно. Поскольку вы не знаете априори , что произойдет, вы должны принять параллельный доступ и обрабатывать его соответствующим образом.

База данных sqlite может находиться в сетевой папке или нет; механизм блокировки внутренний.

0 голосов
/ 13 марта 2011

Вы также можете рассмотреть возможность использования Berkeley DB . Berkeley DB SQL API совместим с SQLite, но лежащий в основе механизм блокировки позволяет одновременно существовать одновременно и другим записывающим устройствам. Как и SQLite, Berkeley DB - это библиотека, которая ссылается на ваше приложение. BDB также поддерживает сочетание одновременных потоков или процессов, обращающихся к базе данных.

Существует несколько интересных документов, которые сравнивают и сравнивают Berkeley DB с SQLite. Есть Преимущества и интеграция технический документ, а также Сравнение производительности технический документ, написанный Майком Оуэнсом, автором Полного руководства по SQLite.

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