分布式資料庫之Oracle相關

2021-09-24 16:58:32 字數 3601 閱讀 1823

此博文也是分布式資料庫課程作業的一部分,部分翻譯自oracle資料庫相關文件,算是對oracle db-link和多**相關部分的簡述,但文中關於db-link的global型別的翻譯不知是否正確,在他人的博文中並沒有找到相關的介紹,自己也沒有裝置來親自實踐一下,若有錯誤請大家糾正。

不同的資料庫系統在實現分布式資料庫時,對遠端資料管理和操作都有所不同,oracle的分布式資料庫是使用資料庫連線(database-link)的方式實現的。資料庫連線,在oracle中指的是從oracle資料庫建立乙個指標(pointer),通過乙個單向的通訊路徑,將本地oracle中的乙個實體與遠端資料庫的實體連線起來,訪問本地的該實體等效於訪問遠端資料庫對應的實體。直接對本地實體進行操作等同於對遠端資料進行操作。

為了實現資料庫連線,分布式系統中的每乙個資料庫都需要有乙個獨一無二的在分布式系統中的名字,用於在建立資料庫連線時指定具體是哪乙個資料庫,在資料庫連線建立之後可以使用資料庫連線名來訪問。

oracle資料庫建立資料庫連線的**示例:

create database link dblinkname

connect to username identified by userpassword

using '(description =(address_list =(address =(protocol = tcp)(host = 192.168.2.158)(port = 1521)))(connect_data =(service_name = orcl)))';

在上面的一段**中,在本地資料庫中建立了乙個名字為「dblinkname」的資料庫連線,目標資料庫的名字為192.168.2.158:1521.orcl,使用使用者名稱「username」和密碼「userpassword」驗證,若要管理遠端資料庫192.168.2.158:1521.orcl中某個資料,可以直接表名加鏈結名來訪問連線到的遠端資料庫中該表的資料,如下:

select * from 表名@ dblinkname
oracle分布式資料庫的管理主要通過對遠端資料庫連線的許可權管理來實現,oracle中的資料庫連線許可權分為三種:私有型(private),公共型(public)和全域性型(global),私有型的資料庫連線只有建立者有權訪問,也是說只有資料庫連線的建立者才能通過這個資料庫連線對指標所指向的遠端資料庫實體進行查詢、更新操作。公共型的資料庫連線允許所有使用者進行訪問。區別於公共型的資料庫連線,全域性型的資料庫連線會在建立時,自動在分布式系統中的每乙個資料庫上建立乙個同樣的資料庫連線,由於私有型和公共型的資料庫連線是單向連線,只能從建立連線的資料庫發起資料訪問請求,而全域性型的資料庫連線因為在分布式系統中所有資料庫上建立了相應的資料庫連線,有利於資料庫管理員對資料的管理。當使用者需要訪問的遠端資料庫實體,有多條從本地同乙個實體出發的資料庫連線時,按照由強到弱的順序優先使用不同型別的資料庫連線,私有型資料庫連線優先順序最高,其次是公共型資料庫連線,最後是全域性型資料庫連線。

另外,當對遠端資料庫進行訪問時,可以使用許可權組的管理方式,即遠端資料庫授予本地資料庫所有訪問使用者乙個使用者組許可權,而不是通過某乙個具體的使用者進行訪問,即從本地發起訪問遠端資料庫的請求時並不要求擁有乙個該遠端資料庫的使用者賬號和密碼,減少多地儲存賬號密碼的風險。儘管實際上也可以在定義資料庫連線時顯式寫入密碼賬號,以非全域性管理使用者許可權訪問遠端資料庫,有連線開銷小的優點,但是有暴露密碼賬號的危險。

隨著多**的普及與發展,oracle資料庫也拓展了對多**資料的支援。oracle資料庫對多**資料儲存和操作,主要通過提供特殊的用於儲存多**資料的資料型別,和在該資料型別上的一系列操作實現的。

最早,oracle資料庫提供了乙個名為long的基本資料型別,可分為long和long raw兩種資料型別,前者以字串的形式進行儲存,而後者則以二進位制的形式進行儲存,均可用於儲存資料量小於2g的多**資料。

後來oracle引入新的大資料物件型別lob,用於儲存資料大小不超過4g的非結構化資料,並且提供了一系列統一的操作方法。對應於long和long raw,lob可以分為以字元儲存的clob(還有nclob)和以二進位制儲存的blob。blob直接使用二進位制資料流儲存多**資料,而clob型別,同樣適合儲存多**資料,但由於使用字串的形式儲存,更適合用於儲存xml的非結構化文件。相比較與long來說,blob型別的限制小,包括不存在每一表中只能存在乙個字段以及具有可隨機訪問的特性,因此更適合進行儲存多**資料和管理。

除了lob資料型別之外,還提供了乙個bfiles資料型別,但該型別的資料並不儲存在資料庫中,僅僅是提供了乙個訪問系統資料檔案的乙個介面。

oracle資料庫很早(至少在我查詢到的資料中,至少可以追溯到oracle 8i)就提供了多**資料管理的工具,在oracle 11g及之前被稱為oracle intermedia,後面更名為oracle **********,但僅僅只是名字發生了變化。

oracle **********提供以下服務:

影象的儲存(符合行業標準的高效壓縮格式)、檢索、元資料提取和二維靜態位圖對映。

醫學數字成像和通訊(dicom)的支援儲存,檢索,元資料提取,處理,編寫,一致性驗證以及匿名醫學影象和其他dicom內容(但從oracle 12c開始不推薦,可能會在未來取消支援)。

下圖說明了oracle **********的框架結構:

圖1 oracle **********的框架結構

oracle資料庫為了實現對使用者提供的一系列多**資料操作,在多**資料使用blobs或者bfiles儲存時,oracle **********會自動從多**資料中提取出元資料,無論多**資料是通過blobs型別儲存在資料庫內還是使用bfiles型別儲存在資料庫外。通過元資料,前述伺服器端**解析器提供的格式轉換以及影象處理器提供的一系列影象處理操作,包括格式轉換,頁面選擇,量化操作,壓縮,縮放,裁剪,複製,翻轉,映象,旋轉,銳化,調整伽瑪(亮度),為影象新增水印,從影象中刪除元資料以及將元資料嵌入影象等等都需要**元資料的支援。**元資料報括以下屬性:

影象特徵:高度和寬度,影象內容長度,影象內容格式和影象壓縮格式

從xml中提取的元資料,例如電影的導演或製片人。

通過上述特殊的資料型別和oracle **********,oracle資料庫提供了方便快捷的多**資料儲存和管理服務。

在最近跟隨導師所進行的專案中,我們對被檢測的個體進行多種資料的採集,包括被檢測物件的生理資料:血氧、脈搏和**電阻,行為資料:採集過程中的語音、採集過程中的面部記錄以及採集過程中的身體姿態資訊。

從資料的格式上來看,這些資料都屬於多**資料的範圍,有著資料格式不同、長度不同、型別不同的特點,但是,這些資料都是基於時間戳對齊採集的,即其中某乙個資料,在對應的資料採集時間,必然存在對應的其他所有形式的資料,如果使用使用者程式設計的方式來對資料使用檔案系統進行儲存、管理,必然是十分繁瑣複雜的。實際上也是如此,在資料採集時,以各種標準資料格式對不同型別的資料進行分開儲存,為了在後期處理時能對齊資料,在採集軟體中必須打上時間戳,時間戳的同步也十分的困難。在進行資料處理時,又必須根據採集的時候打上的時間戳手動對資料進行預處理、合併。而如果多**資料庫能發展至支援多種不同型別的資料進行同時寫入,並自動打上時間戳,並進行一系列的預處理,在使用者程式設計時大不必考慮同步問題,也不用做拆分再組合的無用操作。隨著對各種資料的分析處理的能力變強,多種資料的同步採集必然會是乙個趨勢,這正是多**資料庫可大展拳腳之地。

分布式資料庫 Oracle資料庫

專案的開展總離不開乙個科學高效的資料管理系統為我們服務,oracle資料庫絕對是其中的佼佼者。下面通過我這幾天的一些認識來給大家做一些分享和總結。oracle 是乙個 rdbms 系統,也是一款應用軟體。oracle 資料庫除了將資料儲存於檔案中外,還通過乙個被稱為例項的後台機制向外提供服務。例項是...

分布式資料庫

網路選課系統中分布式資料庫設計 何翠雙王巧雲張麗麗 摘要 關鍵字 選課 分布式 資料庫 distributed system of on line course choosing abstract key words course choosing distributed database 隨著學校...

分布式資料庫

1 背景 我們知道資料是乙個公司的命脈,隨著業務越做越大,資料量也會越來越大,計算也會越來越複雜,效能,可靠性,可擴充套件性的需求就會越來越強烈,這個時候乙個集中式的資料庫顯然已經滿足不了需求了。對於技術決策者來說有兩條路可以走,第一 按照現有的大型資料庫的解決方案,比如sql server clu...