我希望能够让一个应用程序访问 HEROKU“系统”上的多个数据库。可以动态更改与数据库的连接吗?
为什么我问...
我有一个应用程序,它有很多非常繁重的后台作业。如果给定的用户上传了一个产品 Feed,比如说 50,000 种产品,这些产品必须与现有产品进行比较,并且只更新增量,这可能需要“几分钟”的时间。
现在,为了减轻延迟,我启动了多个工人,每个工人都从地段中小口咬一口,直到没有人为止。在 GUI 开始感到迟钝之前,我可以找到大约 20 个工人,因为 DB 正在受到重创。
我已经调整了一些代码并在一定程度上对数据库进行了索引,我确信我可以做更多的事情,但它最终会受到收益递减规律的影响。
对于一个用户,我不太在意......如果您上传 50k 产品,您需要稍等一下......
但是用户一选择上传会影响用户二。(不同的公司,所以没有数据交叉)..
目前,我通过将他们的数据与 postgresql 中的模式分开来处理不同的用户。然而,不同的用户共享相同的数据库连接,即使在最好的计划中,我也可以看到 20 个用户尝试同时上传 50,000 个产品的时间。(例如每月/季度的第一天)。由于这个原因,用户 21 会在他们的系统上看到一个巨大的减速。
所以问题是:我可以将不同的用户分配给不同的数据库吗?用户登录,根据中央数据库验证他们的信息,然后另一个数据库接管?
我目前的解决方案是heroku的不同实例。维护代码很容易,因为它是一个基础,我只是编写 git push(es) 脚本。唯一的问题是不同的登录 URL;如果我找不到简单的数据库切换解决方案,我想我可以面对。