【发布时间】:2018-12-03 08:28:51
【问题描述】:
我正在努力寻找建立数据库关系的最佳解决方案。我需要一些东西来创建一个表,该表将包含从不同数据库的其他表中拆分的数据。所有表的结构完全相同(相同的列号、名称和类型)。
在单个数据库中,我会创建一个带有分区的父表。但是,数据量太大而无法在单个数据库中执行,这就是我尝试进行拆分的原因。从 Postgres 文档中,我认为我正在尝试做的是“多服务器并行查询执行”。
目前我认为实现的唯一解决方案是构建数据库地址的 API,并在需要时使用它通过网络将数据获取到主父数据库中。我还发现名为 Citus 的 Postgres 外部扩展可能可以完成这项工作,但我不知道如何在多个数据库中实现唯一键(或者像 Citus 这样的 Shard 调用它)。
有没有更好的办法?
【问题讨论】:
-
您可以创建一个分区表,其中分区是其他服务器上的外部表(您可能还想升级到 Postgres 11 以利用那里的所有分区和并行查询增强功能)。但是你不能真正在所有分区中获得一个唯一的键约束。
-
但是我很好奇为什么数据对于单个数据库来说太大了?我们在谈论多少行?具有许多硬盘(RAID 1 或 RAID 10 中的 SSD)和大量 CPU 的单个服务器可能最终会更快
-
@a_horse_with_no_name 问题是我的公司目前有很多他们想要使用的小型机器,而不是真正的服务器机器。例如,我得到的最大的机器有 1 TB 的存储空间和 8 个内核......单个数据库将包含大约 100 GB 的数据,但并不是所有的表都会被连接。