Postgresql 从Postgres中的其他数据库构建表-(多服务器并行查询执行?)

Postgresql 从Postgres中的其他数据库构建表-(多服务器并行查询执行?),postgresql,postgresql-10,Postgresql,Postgresql 10,我正试图找到建立数据库关系的最佳解决方案。我需要一些东西来创建一个表,该表将包含来自不同数据库的跨其他表拆分的数据。所有表都具有完全相同的结构(相同的列号、名称和类型) 在单个数据库中,我将创建一个带有分区的父表。然而,数据量太大,无法在单个数据库中完成,这就是我尝试进行拆分的原因。从Postgres文档中,我想我正在尝试的是“多服务器并行查询执行” 目前,我认为要实现的唯一解决方案是构建数据库地址的API,并在需要时使用它通过网络将数据获取到主父数据库中。我还发现名为的Postgres外部扩展

我正试图找到建立数据库关系的最佳解决方案。我需要一些东西来创建一个表,该表将包含来自不同数据库的跨其他表拆分的数据。所有表都具有完全相同的结构(相同的列号、名称和类型)

在单个数据库中,我将创建一个带有分区的父表。然而,数据量太大,无法在单个数据库中完成,这就是我尝试进行拆分的原因。从Postgres文档中,我想我正在尝试的是“多服务器并行查询执行”

目前,我认为要实现的唯一解决方案是构建数据库地址的API,并在需要时使用它通过网络将数据获取到主父数据库中。我还发现名为的Postgres外部扩展可以完成这项工作,但我不知道如何跨多个数据库实现唯一键(或者像Citus这样的碎片称之为唯一键)


有更好的方法吗?

Citus很可能会解决您的问题。如果它是分发列,或者如果它是复合键并包含分发列,则可以在碎片之间使用唯一键


您还可以在citus中使用分布式分区表。这是某列上的分区表(timestamp?)和另一列上的散列分布表(就像您在现有方法中使用的)。查询并行化和数据收集将由Citus为您处理。

您可以创建一个分区表,其中分区是其他服务器上的外部表(您可能还希望升级到Postgres 11,以利用所有分区和并行查询增强功能)。但是你不可能在所有分区中都得到一个唯一的密钥约束,但是我很好奇为什么数据对于一个数据库来说太大了?我们说的是几排?一台拥有很多硬盘(RAID 1或RAID 10中的SSD)和大量CPU的服务器可能最终会被删除faster@a_horse_with_no_name问题是,我的公司目前有很多他们想要使用的小型机器,而不是真正的服务器机器。例如,我得到的最大的机器有1 TB的存储空间和8个内核。。。单个数据库将包含大约100GB的数据,但并非所有的表都将被联接。