Postgresql 管理近3.5 PB/3500 TB的数据

Postgresql 管理近3.5 PB/3500 TB的数据,postgresql,hadoop,cassandra,bigdata,greenplum,Postgresql,Hadoop,Cassandra,Bigdata,Greenplum,我正在寻找一个机会,我们将不得不管理几乎3.5 PB/3500 TB的数据。从我目前所读到的来看,青梅似乎是一个不错的选择。话虽如此,我仍在努力寻找一个好的资源,让我了解硬件需求。以下是我们构建此模型的基本输入: 1) 。数据将以2 GBps(千兆字节)的速率传入 2). 数据相当简单,只有一个包含15多列的大表。每个列/记录将接近2kb 3). 我需要在6列上建立索引。这些列中的每一列都是varchar/string列 4). 该用例的写密集度更高,而读密集度更低。其想法是每天处理一组15-2

我正在寻找一个机会,我们将不得不管理几乎3.5 PB/3500 TB的数据。从我目前所读到的来看,青梅似乎是一个不错的选择。话虽如此,我仍在努力寻找一个好的资源,让我了解硬件需求。以下是我们构建此模型的基本输入:

1) 。数据将以2 GBps(千兆字节)的速率传入 2). 数据相当简单,只有一个包含15多列的大表。每个列/记录将接近2kb 3). 我需要在6列上建立索引。这些列中的每一列都是varchar/string列 4). 该用例的写密集度更高,而读密集度更低。其想法是每天处理一组15-20个批处理作业。实时/近实时分析不是必需的。这更多是出于报告目的。 5). 数据是时间序列数据,需要一个月的时间。因此,超过一个月的数据将被清除

到目前为止,我所知道的是GreenPlum建议每个主机使用2x8核(线程)和256 GB RAM。此外,每个主机通常应查看硬盘的24个插槽。如果我看一看每个4 TB的ESA,我应该能够承载96 TB/主机。如果我假设一个简单的线性外推,我将看到(3500/96)37个节点

现在我知道这不是简单的/线性的计算。因此,我想知道是否有任何计算器/资源/指南来调整数据库集群的大小。我还想知道,不给服务器提供专用磁盘,而是使用单个SAN存储是否可以。每台服务器都可以有2x10G链路,以确保节点和SAN之间的数据传输方便

非常感谢


Abhi

由于Greenplum的体系结构,您可能不需要索引。您只需要使用您的设计建议的良好分区

利用集群进行数据转换也是一个好主意,也是Greenplum的常见用例

到目前为止,我所知道的是GreenPlum建议每个主机使用2x8核(线程)和256 GB RAM

我假设你所说的“线程”是指“段”,你的说法并不完全准确。每个主机的段数取决于每个段主机除并发级别外还具有多少RAM、内核和磁盘性能

我将使用至少8GB的RAM、4个内核和每段100MB/s的磁盘性能。100 MB/s的磁盘性能绝对处于低端。这将是一个平衡的行动,使每个主机的段数正确

一种方法是使用TPC-DS基准测试。 您可以运行基准测试,获取结果,重新初始化集群,以便每个主机使用更多/更少的段,然后再次运行测试。您还可以在测试中设置最符合预期的并发级别

我还想知道,不给服务器提供专用磁盘,而是使用单个SAN存储是否可以。每台服务器都可以有2x10G链路,以确保节点和SAN之间的数据传输方便


SAN的配置通常考虑IOPs,而不是Greenplum需要的吞吐量。有了这么多数据,使用DAS通常会更好。一些云供应商为其SAN解决方案提供了相当好的吞吐量,但最终您必须运行许多小型节点才能获得所需的总体吞吐量

如果您想在数据库中保留那么多数据并高效地运行查询,我会说,忘掉它。您需要一个系统来获取数据和ETL过程,以便将数据提取到运行查询的更小的数据仓库中。对于大小估计,您需要考虑WorkFrand和镜像空间。您还需要为您的文本数据类型选择合适的索引,但Jon Roberts是正确的。您真的不应该使用索引。创建索引后,您的书写性能将下降(创建索引)。根据您的用例,使用面向列的只追加表进行每日分区是有意义的。