Как на уровне кода правильно реализовать работу SQLite3 и обрабатывать запросы к БД?
Вопрос не о составлении SQL запросов. Интернет заполонён миллионами гайдов по открытию соединения, записи, чтению бд, но вопрос более практического характера я не находил.. Условный Телеграм Бот на aiogram. У него может быть большая аудитория, что равняется большому потоку обращений к БД, будь то частная музыкальная школа и ее студенты, тех. поддержка сервиса, бот для знакомств, бот с викторинами и т.п. Не будет же рабочим решением на каждый запрос обращаться к файлу открывать соединение с бд, записывать-читать данные, коммитить, если команда на запись, закрывать соединение и так по кругу на каждый запрос? Может есть какой-то стандарт обертки, менеджер для работы с sqlite3? Какие-то стандарты для решения данного вопроса? Может при первом запросе к бд открывать соединение и запускать таймер на 60 сек и собирать запросы в общую очередь, а там уже раскидывать запись, потом, если запросы прекратились, коммитить все полученные данные или не знаю.. Будут ведь какие-нибудь конфликты чтения-записи и данные могут быть потеряны и надо соблюдать очередь чтения записи. Какие варианты есть? Особенно вопрос возникает при работе асинхронной работой кода.
Вопрос не такой простой, как может показаться.
Может я и не прав, но, по-моему, использование SQLite перекладывает заботу о разных аспектах на разработчика, что вынуждает его переходить на другие СУБД, в которых эти вещи учтены.
SQLite позволяет работу с множественными читателями, но для множественных писателей необходимо откладывать запросы (при помощи очереди), пока текущая запись не будет выполнена.
Пул соединений не поддерживается в SQLite и поэтому нужно вести учёт соединений в самом приложении.