Я пытаюсь выяснить, как лучше всего обрабатывать операции с базой данных при использовании системы актеров. действительно, операции с базой данных блокируются, а мы стараемся не блокировать в AKKA.
В главном документе я краснел, что один способ справиться с этим состоит в том, чтобы создать один пул участников за маршрутизатором, возможно, в отдельном исполняемом контексте, который будет обрабатывать доступ к базе данных.
Поэтому у меня есть следующие вопросы:
1 - Поддерживает ли база данных время открытия соединения все время?
2 - Как это работает вместе с пулом соединений, как предлагалось многими базами данных?
3. Соединяем ли мы оба, и DatabaseActors запрашивают новое соединение из пула каждый раз, когда они запрашиваются. Если нет, разве это не означает, что соединение открыто в любое время плохое?
4 - Может кто-нибудь объяснить мне тонкую вещь, которая делает его подход, который избегает голодания. Например, с помощью Play или спрей обработка запроса является асинхронной задачей, однако, если для этой задачи нужен доступ к базе данных, и мы отправляем запрос в DatabaseActor, делает ли блок в базе данных Actor (если это происходит) не вызывать, блок в асинхронной задаче, ведущий к возможному голоданию потока?
5 - На 100% уверен, что свойство БД ACID обеспечивает безопасность множественного чтения и записи и, следовательно, происходит до отношения.
6 - Я использую семантическую базу данных, также называемую тройным хранилищем, и использую семантические рассуждения во время моего запроса. Я также выполняю большой доступ на запись, любые рекомендации относительно настройки параметров объединения и номеров актеров или выделенного контекста выполнения?
Бест,
M