2013-05-28 53 views
0

为了提高我的数据库的可伸缩性,我希望将PostgreSQL的多个实例分布在多台机器上。 (水平分片)通过PostgreSQL集群分发SQL查询

在我的数据库上执行的大多数操作都是INSERT - 也有一些偶然的SELECT,但是主要重点仍然放在INSERT上,因此数据库正在迅速增长。

例如:假设我们有3个表,分别命名为user,productactivity(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/Proxy,但是这个项目仍然活跃? (同样的问题Postgres-XC。)

任何帮助将不胜感激,谢谢。

回答

2

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

具体地说在并行查询。 “并行查询 使用并行查询功能,数据可以在多个服务器之间拆分,以便可以同时在所有服务器上执行查询,从而缩短总体执行时间。并行查询在搜索大型数据时效果最佳。