Почему в Ecto есть опция maintenance_database? - PullRequest
1 голос
/ 17 февраля 2020

Я недавно просматривал документы Ecto Postgres Адаптер и заметил, что у него есть опция для maintenance_database. Он говорит, что это база данных, используемая при удалении или создании БД. Но зачем это нужно, потому что во время удаления или создания базы данных большую часть времени вы будете использовать задачу микширования, и в этот момент это будет контроллер, так что это не будет использование постоянного соединения для подключения к db в любом случае?

Я был просто озадачен этим вариантом, потому что он кажется странным, и мне было интересно, может ли кто-нибудь пролить свет на то, как его использовать на практике и, возможно, почему он будет существовать.

Если это неправильный способ задавать подобные вопросы для обсуждения, дайте мне знать, и я переместу его в другое место.

1 Ответ

0 голосов
/ 19 февраля 2020

mix не входит в релизы, в первую очередь. Представьте себе случай, когда вы поддерживаете критически важное программное обеспечение, которое не может быть отключено на наносекунду. Теперь необходимо очистить базу данных, скажем, по соображениям производительности.

Самый простой (и самый быстрый) способ - удалить и создать БД. Таким образом, вы даете указание своему дереву надзора понять эту опцию с помощью GenServer.code_change/3 обратных вызовов и развертывания кода, выполняющего действие.

Кроме того, я сомневаюсь, что следую тому, что controller Вы упомянули в вопросе, приложениям вообще не требуется для запуска.

...