数据库跨域访问

1.ORACLE

dblink(Database Link)数据库链接顾名思义就是数据库的链接[1] ,就像电话线一样,是一个通道,当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。

2.MYSQL

本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来实现. 有点类似Oracle中的

数据库链接(DBLINK). 要允许这个存储引擎, 当构建MySQL时使用--with-federated-storage-engine来configure.  

当创建一个FEDERATED表的时候, 服务器在数据库目录创建一个表定义文件. 文件由表的名字开始, 并有一个.frm扩展名. 

无其它文件被创建, 因为实际的数据在一个远程数据库上. 使用FEDERATED表的步骤是非常简单的. 通常, 运行两个服务器, 

要么在同一个主机上, 要么在不同主机上. 

  A.

B.在本地上创建一个对应远程数据库上结构一样的表

CREATE TABLE `cond_instances` (
  `NAME` varchar(128) NOT NULL,
  `OBJECT_INSTANCE_BEGIN` bigint(20) unsigned NOT NULL
)  ENGINE=FEDERATED connection = 'mysql://用户名:密码@IP地址:3306/数据库名/表名'; 

缺陷

1远程服务器必须是一个MySQL服务器. FEDERATED对其它数据库引擎的支持可能会在将来被添加.  

2FEDERATED表指向的远程表在通过FEDERATED表访问它之前必须存在.  

3一个FEDERATED表指向另一个FEDERATED表是可能的, 但是必须小心不要创建一个循环.  

4没有对事务的支持.  

5如果远程表已经改变, 对FEDERATED引擎而言是没有办法知道的. 这个的原因是因为这个表必须象数据文件一样工作, 

除了数据库其它任何都不会被写入. 如果有任何对远程数据库的改变, 本地表中数据的完整性可能会被破坏.  

6FEDERATED存储引擎支持SELECT,INSERT,UPDATE,DELETE和索引. 它不支持ALTER TABLE,DROP TABLE或任何

其它的数据定义语言语句. 当前的实现不使用预先准备好的语句.  

7执行使用SELECT,INSERT,UPDATE和DELETE, 但不用HANDLER.  

8FEDERATED表不能对查询缓存不起作用.  

参考文章:http://it.dataguru.cn/article-3352-1.html


发布了72 篇原创文章 · 获赞 61 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/WI_232995/article/details/80165415