PostgreSQL上100TB的数据库,不分片

在PostgreSQL上build立一个100TB的数据库(实际上大约90TB),而在多个节点之间没有数据分割是否现实呢? 有没有关于类似设置的成功案例/例子?

每秒写50K的需要被吸收的东西通常不止是一个挑战。 即使在插入相当简单的合成基准testing中,PostgreSQL的极限值也往往会达到大约10 K / s,而在数据库大小方面你甚至没有这么大的野兽。

同样,单个PostgreSQL节点的I / O系统即使在使用RAID 10的情况下也会很有趣,并假设50K插入将等于仅50K IOPS(这可能是错误的,但这取决于您的数据库scheme和索引),您将需要大约一百个磁盘与一个非常好的arrays配对,这样可以节省购买数百个磁盘以及时处理这些写入操作。

如果分片很容易,并且您期望如此巨大的写入负载,那么就进行分片。 写入可能非常难以扩展。

我为自己的直率表示抱歉

如果你有钱,甚至需要90TB的数据存储,那么这正是你不应该问的地方。 有很多公司在那里销售这种产品和技能(EMC),为此你确实得到了一个坚实的产品。 如果你认为这是一个可以通过自己节省一些钱的地方,那么你在开玩笑吧。 特别是如果你必须问社区。

这不是你想要省钱的东西; 这是你第一次得到正确的东西。 去打电话给惠普,戴尔,EMC等等,然后问他们这个问题。 他们会更乐意给你专业的build议,也会出售一个产品。 如果这样的事情破裂,你或公司可能不会得到第二次机会。

一家公司可以从一个破碎的磁带备份驱动器破产; 想象90TB数据丢失的代价! 这不是你想要的。

获得一个专业的产品,如果你不认为这是你能负担得起的,那么我会认真考虑你的公司的优先事项。

这是现实的,将工作。 性能更大程度上取决于你有多lessRAM。 RAM越大,caching越大,PostgreSQL在卸载到磁盘之前可以caching更长的数据。

PostgreSQL会将数据写入caching,并不时卸载caching。 所以每秒50k INSERTs不会被翻译成50k IOPS。 它会less一些,因为它会将logging集中在一起,并同时写入所有logging。

如果大部分工作是INSERT,那么大的数据库不是问题。 PostgreSQL将不得不改变索引在这里和那里,但这真的是一个容易的工作。 如果你在这个数据库上有大量的SELECT,你真的需要分片。

我曾经在一个16GB服务器上使用400TB的Oracle DB(Oracle 10g),只有一个实例。 数据库工作量也是主要的INSERT,所以每天有几个SELECT和每天数百万个INSERT。 性能远不成问题。