2

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

你会创建巨大的哈希表/数组来匹配内容吗?是否有其他更有效且内存消耗更少的选项来执行此操作?

如果您要同时使用来自 MySQL 和 PostgreSQL 源的数据,而无法将一个 DB 转换为另一个(应用程序限制、时间不足、知识不足……),您将如何处理?

4

3 回答 3

2

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

于 2009-04-27T03:51:14.257 回答
1

至少在 MySQL 的情况下,您可以在单个查询中使用来自多个数据库的数据,前提是这些数据库由同一个 MySQL 服务器实例托管。您可以通过使用模式名称限定表来区分不同数据库中的表:

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 中,您还可以使用模式名称限定表引用。不过,我不确定您是否可以跨数据库创建外键约束。

于 2009-03-11T23:03:47.530 回答
0

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

我面临着同样的问题,即在 PostgreSQL 之外运行应用程序的一部分以从中受益,而在 MySQL 的其余部分则更好。

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

但是,我发现除了将其抽象为类或实用程序函数之外,并没有真正干净的方法来做到这一点。

于 2009-09-16T04:23:47.773 回答