PostgreSQL 9单个实例的最大数据库数量


9

开发多客户应用程序,我们计划为每个客户使用不同的数据库。但可能有1000多个客户(应用程序)。

PostgreSQL会顺利处理吗?

有人尝试过类似的东西吗?

注意:每个数据库每个35张表,平均最多3000条记录。

Answers:


5

我自己还没有尝试过,但是周围还有其他人尝试过。 在这里,您可以看到即使有10,000个数据库在单个实例上运行也没有问题。您甚至还可以在ServerFault上找到一些实用的方面。

由于数据库非常小,因此不会遇到主机操作系统的任何文件数量限制。我能想到的唯一问题是,当同时访问所有这些数据库时,处理所有这些连接将很棘手。

并且,最后一点:非常欢迎您访问本网站。希望您能在我们身边待很长时间。


感谢您的意见。是的,并发connectios可能令人头疼,但是另一个选择是每个应用程序都有一个共享表,这令人难以置信的更加复杂(需要对该应用程序进行重新编程)。
胡安

2

从管理的角度来看,这听起来很麻烦。您打算如何计划备份那么多数据库?用一个虽然每个都循环的脚本?

除非您有充分的理由,否则为什么不只拥有一个设计结构的数据库,以便所有数据都可以链接回客户ID。根据此字段添加索引/外键/主键,以确保数据完整性。

然后,您只需要在所有查询中使用where子句即可访问一个客户ID。这将易于维护,并且易于开发(无论哪种情况,您都需要允许客户标识)


1
这是一个非常好的和有效的观点。也许OP应该考虑使用模式,并且在公共模式中只有几个表,可用于与私有客户模式中的表进行联接。
弗朗索瓦博索莱伊

谢谢,但是这个选项从一开始就被放弃了。这是已经开发的应用程序的移植,并且在此阶段将所有代码更改为不那么琐碎。但是,是的,每天管理100多个数据库会很有趣……不是吗?
胡安

1
从单独的数据库转到单独的架构,并不意味着代码会有任何重大变化。特别是,您不需要为对象加上其模式前缀,因为search_path它可以帮您实现。
DanielVérité2012年

Wal Waliving进行备份在这里很有意义。
贾伍德(Jharwood)2012年

0

有人这样做,尤其是对于共享服务器托管。

思考这里的问题,没有免费的午餐。您可能可以通过应用程序透明的方式对架构进行操作。但是,随后您将获得成千上万的模式和成千上万的表,这将带来其他问题。

我认为总的来说,鉴于您的意见,多数据库方法是最明智的。

管理(如备份)将变得有趣。我也认为在某些时候与数据库的连接将开始花费更长的时间。如果您正在使用pg_hba.conf来限制访问(您应该这样做),那也将变得很头疼,您可能想要构建一个解决方案来为您生成该文件...


我看不到pg_hba.conf的问题。我们的应用程序使用Ruby on Rails,它为不同的数据库交换连接,但是始终在同一Linux框中。在谈论访问文件的并发问题?
胡安

1
不,即使您要管理可以由哪些主机访问哪些数据库,它也将成为一个长文件,并且管理可能会变得有些烦人。
克里斯·特拉弗斯

0

我希望可以更好地阅读此链接:Jon Jensen,2008年,PostgreSQL集群上的10,000个数据库

一个摘录:

简短的答案:Postgres 8.1可以处理10,000个数据库。\l 在psql中,当然会生成一长串数据库,但返回速度很快。临时并发测试很好。在精心挑选的各种播放数据库组上运行查询,插入等工作正常,包括在创建新数据库时。

[...]

此[ Linux ext3 ]平台的实际限制可能是31995个数据库,因为每个数据库都占据了data / base /目录中的一个子目录,而ext3文件系统每个目录中有31998个子目录,这是因为每个目录中有32000个链接索引节点。


1
仅包含链接的答案不是很有用,因为随着时间的流逝,链接趋于陈旧。请考虑在答案中添加要链接的内容的摘要。
mustaccio
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.