编辑:在整个帖子中澄清:当我说“模式”时,我指的是“数据模型”,这是我脑海中的同义词。:)
我的问题与这个问题( Rails: Multiple databases, same schema )非常相似,但我的问题与 MySQL 有关。
重申这个问题:我正在开发一个SAAS。用户将获得在启动时连接到哪个数据库的选项。大多数客户将获得两个数据库:一个生产数据库和一个测试数据库,这意味着我的每个客户将拥有 1-2 个数据库。所以,如果我有 10 个客户,我将有大约 20 个数据库需要维护。每当需要更新程序(和数据模型)时,这都会很困难。
我的问题是:有没有办法为多个数据库提供一个数据模型?我上面发布的问题的公认答案是将所有内容组合到一个数据库中并使用 company_id 来分离数据,但这有几个可预见的问题:
- 当这些基于事务的表被淹没时会发生什么?我的 1 位客户现在在过去一个月中已经记录了 16k 笔交易。
- 我必须添加
where company_id =
数百个 SQL 查询/更新/插入(是的,Jeff Atwood,它们是参数化 SQL 调用),这将对性能产生严重影响,我只能假设。 - 一些表存储元数据,即下拉菜单项,在某些情况下是公司特定的,而在其他情况下是应用程序通用的。
where company_id =
会增加一层不幸的复杂性。
对我来说,为每个新客户创建(一个)新数据库并将他们的软件客户端指向他们的数据库似乎是合乎逻辑的。但是,这将是一个令人头疼的维护,所以我希望减少这种潜在的头痛。