单个数据库上的多个Sequelize实例



我有几个微服务使用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"
  }
}

这有助于为每个微服务提供独立的迁移行为,尽管它们都来自同一个数据库

最新更新