【发布时间】:2021-11-27 05:32:26
【问题描述】:
我们有几个表必须继承另一个表。 该计划是能够使用公共属性在不同表之间执行查询,但也可以对父表执行查询以进行分析。除此之外,可能需要编辑父表和子表中的数据。子表已经拥有所有必要的列,并且我们成功地继承了其中的几个。
现在我们遇到了一个按年份和季度分区的巨大表的问题(声明性分区):
[42809]: ERROR: cannot change inheritance of a partition.
另一种选择是使用联合,但如果没有继承,我们将需要创建可编辑视图或类似的东西,并在每次需要另一个分区表时更改它们......或者我们可能会切换到仅继承,只是出于兼容性原因。
我已经尝试过继承分区 - 效果不佳。
有什么想法吗?
【问题讨论】:
-
“必须继承另一个表” - 为什么“必须”他们继承?
-
@a_horse_with_no_name 这不是必须的,它是为了让数据分析师和开发人员保持简单。我们正在管理不同业务线和业务部门的相似数据,这些数据存储在不同的源系统中。数据通常具有共同的“分母”,例如地理或地址,或注册商编号。通过使用继承,我们可以同时管理所有的表(例如在父表中添加一个列并将其添加到子表中),并且可以按业务对象(子)和每个数据对象(父)表查询数据。
-
我们将研究 TimescaleDB 超表的使用。看起来它使用简单的继承而不是声明性分区。如果一切正常,问题将得到解决。然而,这不会在明年 2 月之前发生......
标签: postgresql inheritance table-partitioning