2013-04-26 86 views
1

我正在开发一个项目,这是一个分布式数据库的东西。跨多个异构数据库执行连接PostgreSQL和MySQL

我从创建概念模式开始,并且对表格进行了分区,以便我可能需要在MySQL和PostgreSQL中的表之间执行连接。

我知道我可以编写一些中间件来分解SQL查询并发出针对单个数据库的子查询,并且它们会合并结果,但是如果可能的话,我希望使用SQL来做这件事。

我的搜索到目前为止已经得到this(联合存储引擎的MySQL),但它似乎适用于MySQL数据库。

如果可能的话,我会很感激一些指针,看看怎么看,最好用Python。

谢谢。

回答

0

从postgres方面,您可以尝试使用foreign data wrapper,如mysql_ftwexample)。然后可以通过各种Postgres客户端运行查询,例如psql,pgAdmin,psycopg2(用于Python)等。

+0

谢谢!看起来很有希望。 – krm 2013-04-27 01:15:48

0

这不适用于SQL。

你的选择是写你自己的“中间件”,如你暗示的。要在Python中执行此操作,您可以为这两个数据库使用标准DB-API驱动程序并编写单个查询;然后合并他们的结果。像sqlalchemy这样的ORM将会有很大的帮助。

另一种选择是使用集成层。这里有很多选项,但是,我不知道那些是用Python编写的。 mule esb,apache servicemix,wso2jboss metamatrix是一些比较流行的。

+0

Postgresql的外部数据包装(请参阅Mike Toews的上述答案)似乎可以满足我的要求。但它似乎并不稳定,所以如果遇到复杂情况,我可能会后悔实施自己的中间件。 – krm 2013-04-27 01:20:57