多机的跨库数据库Join查询

多机的跨库数据库Join查询

最近在看《大型网站系统与Java中间件实践》这本书,在看5.1.5.1节的跨库Join 时,书中说明了几种解决思路:

1、在应用层把原来数据库的Join操作分成几次的数据库操作来完成。

2、数据冗余

3、借助外部系统(例如搜索引擎)解决一些跨库的问题。

在网上查询了相关的资料,并没有很好的通过例子来进行说明的方法。

下面这一个可能是比较具体一点的跨机的数据库Join的实例了,摘入如下(来源于这里:http://bbs.csdn.net/topics/320196555;自己并没有验证是否可行):

============漂亮的分割线==============

现有两台MYSQL数据库

一台是192.168.1.1 端口3306 上有数据库DB1 有表TABLE1

一台是192.168.1.2 端口3307 上有数据库DB2 有表TABLE2

192.168.1.1远程连接192.168.1.2数据库所使用的用户名root1 密码root1

192.168.1.2远程连接192.168.1.1数据库所使用的用户名root2 密码root2

现在想对 TABLE1 和 TABLE2 两张表进行关联查询 请问SQL应该怎么实现

没有办法直接进行JOIN查询。

你可以在DB1中建立一个 FEDERATED 指向这个 DB2.table2 如下,然后就象在同一数据库中DB1中操作即可。

        CREATE TABLE TABLE2 (
        id     INT(20) NOT NULL AUTO_INCREMENT,
        name   VARCHAR(32) NOT NULL DEFAULT '',
        other  INT(20) NOT NULL DEFAULT '0',
        PRIMARY KEY  (id),
        INDEX name (name),
        INDEX other_key (other)
        )
        ENGINE=FEDERATED
        DEFAULT CHARSET=latin1
        CONNECTION='mysql://192.168.1.2:3307/DB2/TABLE2';
    //或者是CONNECTION='mysql://root2:[email protected]:3307/DB2/TABLE2';这个添加了密码

你可能感兴趣的:(分布式)