數據庫跨域訪問

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章