Я создаю многопользовательское веб-приложение и использую flask и flask_sqlalchemy ORM с базой данных SQLite.
Я новичок в многопользовательских и многопользовательских приложениях и обеспокоен проблемами параллелизма. Чтобы избежать этих проблем с параллелизмом, я планировал систему очередей, в которой я запускаю несколько потоков, только один поток пишет исключительно в базу данных (назовем его «писателем»), в то время как другие выполняют вычислительные задачи.
В основном Есть 3 очереди:
- Первая очередь содержит запросы пользователей - каждый сеанс пользователя может выполнить задачу sh в этой очереди, и средство записи записывает эти задачи в базу данных, а также отправляет их в вторая очередь.
- Вторая очередь содержит задачи, которые необходимо выполнить - все остальные потоки получают задачи из этой очереди, выполняют их и затем отправляют результаты в третью очередь.
- Третья очередь содержит результаты задач. писатель записывает эти результаты в базу данных и обновляет состояние задачи.
Тогда ... Я читал больше о проблеме параллелизма SQLite.
Из того, что я понимаю, из-за реализации ORM flask_sqlachemy каждый запрос может привести к гриппу sh и блокировке, пока я планировал, что многие пользователи смогут одновременно получать свои данные и статус задачи.
Теперь я хочу перейти на базу данных с более параллельным звучанием.
Итак, я спрашиваю:
- Какая ваша рекомендация? Будет ли postgreSQL хорошо справляться с этим несколькими считывателями?
- Эта система очередей - то, что мы видим в многопользовательских приложениях, или есть еще один лучший метод?
Спасибо!