通过PostgreSQL集群分发SQL查询

时间:2013-05-28 17:57:49

标签: postgresql sharding pgadmin postgres-xc

为了提高数据库的可伸缩性,我希望在多台机器上分布多个PostgreSQL实例。 (水平分片)

我的数据库上执行的大多数操作都是INSERT - 偶尔会有一些SELECT,但主要的重点仍然是INSERT,因此数据库的增长很快。

例如:假设我们有3个名为userproductactivity(user_id, product_id, activity(viewed, bought...), timestamp)的表。

业务方面的人员使用pgAdmin查询(现在)唯一数据库。什么是一个很好的工具,可以让SQL语句分布在集群上,并返回一组简化的结果,而不必在SELECT查询中使用UNION关键字?

例如,请考虑以下SQL SELECT语句:

select u.name FROM user AS u INNER JOIN activity AS a ON u.id = a.id INNER JOIN 
product AS p ON p.id = a.id WHERE product.name='blabla';

理想情况下,使用pgAdmin的人不会有任何改变,但是在引擎盖下,请求将被切割成较小的“片段”并分发到群集中的所有服务器。

在搜索网页时,我遇到了Skype的PL /代理,但这个项目仍然有效吗? (对Postgres-XC也是一样的问题。)

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

看一下pgpool http://www.pgpool.net/docs/latest/pgpool-en.html

特别是在并行查询。 “并行查询 使用并行查询功能,可以在多个服务器之间拆分数据,以便可以在所有服务器上同时执行查询,从而减少总体执行时间。在搜索大规模数据时,并行查询效果最佳。“