我有一个针对多个数据库的应用程序,它就像一个监视应用程序的应用程序,这些应用程序以无法静态控制的方式(在配置文件中)生成报告,调解通知,运行任务和填充内容),所以我认为可以启动一个主管,监督多个Repo
只更改opts
中的设置(我正在思考一个回购池,这样的话,听起来很疯狂,我知道),但这是不可能的,因为Ecto.Repo
有一个宏使得连接绑定到Repo
的模块,因此,有一种方法可以重写{ {1}}以某种方式可以满足我的需求?我查看了ecto的消息来源,但我发现没有单独的解决方案。
我还查看了this post,但是应用程序可能会针对多个实例,具有不同的用户,不同的凭据等。
我已经使用Ecto.Repo
即时创建了Repos,但我不知道&#34是的,如果它受到鼓励。
答案 0 :(得分:1)
如果您知道需要访问的所有存储库,我建议将应用程序拆分为更多伞形应用程序。每个伞形应用程序都可以连接到不同的ecto存储库。
作为一种好的做法,我总是提取Ecto和数据库相关的代码来分隔由域分隔的伞形应用程序。您可以在此演示应用程序中看到一个示例:https://github.com/silviurosu/elixir-umbrella-ddd。
答案 1 :(得分:0)
在Phoenix和Ecto中有一个名为apartmentex的多租户支持库https://github.com/Dania02525/apartmentex