【发布时间】:2019-06-17 03:30:06
【问题描述】:
我正在开发一个网络平台来管理我所在地区学校的学生注册。为此,我在 MySQL (5.7.19) 上运行了 17 个数据库,其中一个是主数据库,另外 16 个代表学校。学校数据库(必须)具有完全相同的模式,每个模式都包含对应于相关学校的数据。我以这种方式分开以避免延迟,因为每所学校可以注册许多应用程序(平均 16k),因此请求可能会随着时间的推移而变得更重。
现在我有一个严重的问题:当我更改学校数据库的架构时,我必须手动为其他学校的数据库进行,以保持架构的一致性,因为我的 sql 请求是独立于学校发出的。例如,如果我在 database_school5 的 table_b 中添加一个新字段,我必须在所有剩余数据库的 table_b 上手动执行相同操作。
我可以做些什么来有效地管理这些更改?有自动解决方案吗?是否有针对此问题的适用 DBMS?
有人告诉我,PostgreSQL 可以通过 INHERITANCE 轻松实现这一点,但这仅涉及表,除非我做了一些糟糕的研究。
我希望每次对数据库架构进行更改时,无论是添加表、添加字段、删除字段、添加约束等,更改都会自动传输到其他数据库。
提前致谢。
【问题讨论】:
-
可能是这样的? flywaydb.org 该工具有很多替代品。我发现在 git 中管理模式更改是最好的方法,
-
用git怎么做?
-
什么意思?问一个更好的问题
-
你说“我发现在 git 中管理模式更改是最好的方法”,我该如何继续这样做
-
Harrys:您首先使用诸如 flywaydb.org 之类的工具或众多替代工具之一。我没有使用该工具的个人经验,但我使用过其他工具。这些工具要求您编写增量或“迁移”。将这些迁移存储在 git 存储库中。这能回答你的问题吗?
标签: mysql postgresql database-design multi-database