Используете Sqlite в серверном приложении? Альтернативы? - PullRequest
0 голосов
/ 20 июня 2020

Рассмотрим следующий сценарий: база данных должна использоваться в локальной сети, к которой одновременно подключается несколько клиентов. Есть одна таблица. Когда один из клиентов изменяет данные в этой таблице, другие подключенные клиенты должны быть уведомлены. Возможно, в серверном приложении может быть один поток на каждое соединение.

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

Простая диаграмма, иллюстрирующая это описание. введите описание изображения здесь

1 Ответ

1 голос
/ 25 июня 2020

Сводка обмена комментариями:

ответ - да, вы можете использовать SQLite для этой архитектуры.

Вы также можете включить WAL (Написать -Ahead Logging), в вашем случае для увеличения параллелизма:

... Использование WAL вместо журнала отката имеет свои преимущества и недостатки. Преимущества включают:

  1. WAL значительно быстрее в большинстве сценариев ios.
  2. WAL обеспечивает больший параллелизм, поскольку средства чтения не блокируют средства записи, а средство записи не блокирует средства чтения. Чтение и запись могут выполняться одновременно.
  3. Операции дискового ввода-вывода, как правило, более последовательны при использовании WAL.
  4. WAL использует намного меньше операций fsyn c () и, таким образом, менее уязвим для проблем в системах, где не работает системный вызов fsyn c ().

Но есть и недостатки: ...

Для части вопроса с уведомлением, Я предлагаю изучить триггеры :

... Триггеры - это операции с базой данных, которые автоматически выполняются при возникновении указанного события базы данных.

Каждый триггер должен указывать, что он будет запускаться для одной из следующих операций: DELETE, INSERT, UPDATE. ...

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