首页 > 解决方案 > 与多个 Postgresql 数据模式的单个连接。一些只读的

问题描述

我有一个具有多个模式的 postgresql 数据库。其中只有一个具有对系统执行 CRUD 操作的实体。其余模式必须以只读方式使用。

我已经阅读了很多 Symfony 和 Doctrine 文档。我知道可以将实体定义为只读并定义映射实体的数据库模式。

在只读模式中,我只需要查询一小部分表。

我的怀疑与 Symfony 与数据库的同步有关。

是否可以仅将应用程序需要只读的表声明为实体?还是应该将我使用的每个模式的每个实体声明为只读?我问这个是因为当我通过控制台运行make: migration命令时,由于它没有声明所有这些,迁移脚本会删除我的应用程序中未定义的每个表。显然,我可以修改迁移脚本并删除这些行,但我担心未来的更新会无意中删除这些表。对我来说这将是一个大问题。

作为替代方案,我读到您可以通过使用 Doctrine 的 DBAL 来使用这些只读模式。不是 ORM。但是,我不清楚是否可以在具有多个模式的单个连接下,那些只读使用 DBAL 的模式以及与应用程序交互的模式以标准方式使用 ORM,以便在执行make_migration或类似的命令只同步或考虑读/写方案。

我知道我可以通过在新数据库中生成模式来解决问题。定义两个连接。一种用于只读模式。另一个用于执行 CRUD 操作并将其设置为默认连接。同步操作在可以解决问题的默认模式上同步。这将是我的计划“B”。

简而言之,我想通过单个连接到具有多个模式的 Postgresql 数据库来解决问题。除了一个之外,所有这些都是只读的。最好只将应用程序对模式数据的实体声明为只读。这些只读模式每个都有大约 100 个表。该应用程序仅使用 5 个表。

我为我的英语道歉。我用过谷歌翻译服务。我希望它被清楚地理解。

标签: postgresqlsymfonydoctrine-orm

解决方案


推荐阅读