我正在开发一个项目,这是一种分布式数据库的东西。
我开始创建概念架构,并且我已经对表进行了分区,以便我可能需要在MySQL和PostgreSQL中的表之间执行连接。
我知道我可以编写某种中间件来分解SQL查询并发出针对单个数据库的子查询,并将它们合并到结果中,但我想尽可能使用SQL来做这件事。
到目前为止,我的搜索产生了this(MySQL的联合存储引擎),但它似乎适用于MySQL数据库。
如果有可能的话,我会欣赏一些关于要看什么的指针,最好是在Python中。
感谢。
答案 0 :(得分:1)
设置可能需要一些时间,但 PrestoDB 是一个值得考虑的有效开源解决方案。
你使用 JDBC 连接到 Presto,向它发送 SQL,它解释不同的连接,分派到不同的源,然后在返回结果之前在 Presto 节点上做最后的工作。
答案 1 :(得分:0)
SQL无法实现这一点。
您可以选择编写自己的“中间件”,如您所暗示的那样。要在Python中执行此操作,您将使用两个数据库的标准DB-API驱动程序并编写单个查询;然后合并他们的结果。像sqlalchemy这样的ORM将有很长的路要走。
另一种选择是使用集成层。有很多选择,但是,我所知道的都不是用Python编写的。 mule esb,apache servicemix,wso2和jboss metamatrix是一些比较受欢迎的广告。
答案 2 :(得分:0)
从postgres方面,您可以尝试使用mysql_ftw
,例如{{1}}(foreign data wrapper)。然后可以通过各种Postgres客户端运行具有联接的查询,例如psql,pgAdmin,example(对于Python)等。
答案 3 :(得分:0)
您可以将数据并置在单个 RDBMS 节点(例如 PostgreSQL 或 MySQL)上。
两种主要方法
然后你可以像往常一样在一个带有 JOIN 的 RDBMS 上运行查询。
奖励:您还可以从可以通过 Kafka 传送日志的 RDBMS 读取日志。您可以根据需要使其变得非常复杂。