链接多数据库信息

时间:2009-03-11 22:54:18

标签: php mysql database database-connection

您将在多个数据库架构上分布的数据(比如MySQL与PostgreSQL等)链接到一个应用程序中的方法是什么?

你会创建巨大的哈希表/数组来匹配内容吗?这样做还有其他更有效且耗费更少内存的选择吗?

如果你要使用来自MySQL和MySQL的数据。 PostgreSQL源代码,无法将一个数据库转换为另一个数据库(应用程序限制,缺乏时间,缺乏知识,......),您将如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

SQL Relay或其他sql代理。 http://sqlrelay.sourceforge.net/

答案 1 :(得分:1)

至少在MySQL的情况下,无论如何,只要数据库由同一个MySQL Server实例托管,您就可以在单个查询中使用来自多个数据库的数据。您可以通过使用模式名称限定表来区分不同数据库中的表:

CREATE TABLE test.foo (id SERIAL PRIMARY KEY) TYPE=InnoDB;

CREATE DATABASE test2;
CREATE TABLE test2.bar (foo_id BIGINT UNSIGNED, 
    FOREIGN KEY (foo_id) REFERENCES test.foo(id)) TYPE=InnoDB;

SELECT * FROM test.foo f JOIN test2.bar b ON (f.id = b.foo_id);

在PostgreSQL中,您还可以使用模式名称限定表引用。不过,我不确定你是否可以跨数据库创建外键约束。

答案 2 :(得分:0)

如果您希望在RDBMSes之间创建约束 - 您不能。

我面临同样的问题,即在PostgreSQL上运行部分应用程序以获得它的好处,以及其他更好的MySQL。

我正在使用相同格式的主要信息(在我的情况下是通用用户ID)进行多次插入,因此我让应用程序处理确保从两个DB请求相同ID的逻辑。

除了我发现的那样,除了将它抽象为类或实用函数之外,还没有一种干净的方法可以做到这一点。