我有几个微服务使用Sequelize作为ORM。为简单起见,我希望所有这些都共享一个数据库,即使它们没有任何共同之处。
我需要每个微服务有:
- 它自己的Sequelize迁移表,所以我可以安全地使用回滚函数。
- 每个表根据微服务名称需要一个命名空间。例如
ms1_table1
,ms1_table2
我没有找到任何相关的文档或谷歌。对于这个问题有什么想法或方案吗?
尝试将单个Db划分为多个模式(每个模式用于微服务左右-从这种分离开始也是一个很好的实践)。然后,Sequelize具有模式支持(在构造函数中传递选项)。
请尝试在sequelize文档中查找有关模式的更多信息。
这解决你的问题了吗?
默认情况下,sequelize将迁移元信息存储在同一数据库中的一个表中。这是你的主要障碍。
您可以为每个服务使用不同的表名
{
"development": {
"username": "root",
"password": null,
"database": "database_development",
"host": "127.0.0.1",
"dialect": "MySQL",
// Use a different table name. Default: SequelizeMeta
"migrationStorageTableName": "sequelize_meta",
// Use a different schema for the SequelizeMeta table
"migrationStorageTableSchema": "custom_schema"
}
}
这有助于为每个微服务提供独立的迁移行为,尽管它们都来自同一个数据库