小编Seb*_*iot的帖子

按主键查找一行,当你不知道它在哪个表中时?

我是负责专有 OODBMS 的(非正式)DBA。管理层希望我们迁移到 Postgres,以降低许可成本。移动应该是渐进的,因此我们也应该保持与 OODBMS 中相同的数据结构。幸运的是,有了对数组和表继承的支持,我们可以在 Postgres 中创建完全相同的模式。所有表都将使用 bigint 作为主键,并且所有(间接)从同一个基表继承。

最大的问题是:我们的 bigint 键在所有表中(并且必须)是唯一的,我们必须能够根据主键快速加载一组行,而无需知道它们在哪个表中。行将分布在任何和所有表上。这里主要关注的是速度,而不是磁盘或内存使用。

换句话说,我们需要的是一个跨所有表的唯一索引。AFAIK,这在 Postgres 中是不可能的。什么是“次优”选项?我对任何解决方案持开放态度,包括使用甚至编码一些“Postgres 扩展”。

为了给出有关实际 DB 的一些提示,我们谈论的是 300 个表、130M 行和大约 300GB 的大小(OODBMS 大小)。

performance postgresql-performance

2
推荐指数
1
解决办法
294
查看次数