當前位置:成語大全網 - 英語詞典 - oracle enterprisedb 兼容 到底怎樣

oracle enterprisedb 兼容 到底怎樣

在位於英國牛津附近的企業性能中心(Enterprise Performance Enter),EnterpriseDB 數據庫性能專家們對EnterpriseDB企業的性能進行了優化,使其運行速度比EnterpriseDB基礎版(PostgreSQL)快50%以 上。因此,能過EnterpriseDB我們可以獲得壹個具有高度可擴展性的數據庫解決方案,該解決方案極其經濟高效,令同類產品無法企及。實際上,許多 客戶反映,將其現有針對 Oracle 數據庫的應用程序遷移到 EnterpriseDB 數據庫後,應用程序性能與基於 Oracle 數據庫運行的同樣的應用程序相同,甚至更快。

SQL語義兼容

EnterpriseDB 數據庫與 Oracle 數據庫能夠相互兼容的基礎在於,前者能夠識別和準確執行用 Oracle SQL 語言表示的數據庫查詢。另外,EnterpriseDB 數據庫支持與 Oracle 數據庫相同的數據類型、函數和變量,並可解決 Oracle 數據庫與 EnterpriseDB 數據庫在處理字段別名、公***同義詞、序列以及 DUAL 表方面的不兼容問題。如:

數據類型

CHAR、VARCHAR、VARCHAR2、NUMBER、CLOB、BLOB、DATE等

數據庫函數

TO_CHAR、TO_DATE、SYSDATE、DBMS_XXX等

字段別名

與Oracle相同,在EnterpriseDB企業版中設定"字段別名"時可心省略"AS"關鍵字

SEQUENCE序列

與Oracle相同,可通過seq_name.CURRVAL 和 seq_name.NEXTVAL進行操作

DUAL表

EnterpriseDB企業版支持DUAL表,與Oracle數據庫實現SQL語句兼容

等等……

PL/SQL過程語言兼容

EnterpriseDB企業版包括壹種稱為 EDB-SPL 的過程語言,該語言與 Oracle 的 PL/SQL 過程語言相匹配。與 PL/SQL 類似,SPL 是壹種高效、塊狀結構的過程編程語言,可用於編寫自定義過程、函數和觸發器。EnterpriseDB SPL 和 Oracle PL/SQL 之間極大的相似性還使 EnterpriseDB企業版數據庫能夠支持 Oracle 式的過程包、函數或變量。

塊結構

與 PL/SQL 壹樣,SPL 過程、函數和觸發器具有同樣的塊結構。壹個塊由最多三部分組成 - 壹個可選的聲明部分、壹個強制可執行程序部分以及壹個可選的異常部分。壹個塊至少必須有壹個可執行程序部分,該部分包含壹個或多個介於關鍵字 BEGIN 和 END 之間的過程語句。

數據庫包

EnterpriseDB企業版數據庫支持 Oracle 式的數據庫包。包是壹種構造,用於構建可復用代碼和采用面向對象的設計技術。包是壹組通過數據庫中通用包名稱來識別的相關數據庫對象的集合。這些數據庫對象包括過程、函數和變量。

與Oracle數據庫壹樣,EnterpriseDB企業版數據庫包有以下兩個主要部分組成:

● 包規範:這是包含公***過程、函數和變量的公***接口,這些過程、函數和變量可以在包外由其他程序和應用程序引用。

● 包體:包體包括在包規範中聲明的過程和函數的實施邏輯,以及對不能由包以外的其他程序和應用程序訪問的私有變量、過程和函數的聲明以及邏輯。

過程

EnterpriseDB SPL 中的過程與 Oracle PL/SQL 中的過程使用方式相同。過程是壹些可作為單獨程序語句調用的程序。調用的時候,過程可以有選擇地以輸入參數的形式接收來自調用程序的值,並有選擇地以輸出 參數的形式向調用程序返回值。通過在 EnterpriseDB 數據庫中輸入過程代碼,可將過程存儲到數據庫中。然後,可以通過其他程序調用該過程。

函數

EnterpriseDB SPL 中的函數與 Oracle PL/SQL 中的函數使用方式相同。函數是可作為表達式調用的程序。計算完成後,函數會返回壹個值,該值在該函數所嵌入的表達式中被替代。函數可以有選擇地以輸入參數 的形式采用來自調用程序的值。除了返回值以外, 函數還可以有選擇地以輸出參數的形式向調用程序返回其他值。然而,在函數中使用輸出參數並非壹種值得提倡的編程方法。函數可用於語句中任何會出現表達式的 地方。

觸發器

EnterpriseDB SPL 中的觸發器與 Oracle PL/SQL 中的觸發器使用方式相同。觸發器是壹個代碼塊,該代碼塊具有給定的名稱,與表相關聯,被存儲在數據庫中。當發生某些針對表的事件時,代碼塊即被執行。當代 碼塊被執行時,即形象地稱觸發器被"觸發"。

與 Oracle 數據庫類似,EnterpriseDB企業版支持行級觸發器和語句級觸發器。對於受觸發事件影響的每壹行,行級觸發器將被"觸發"壹次。與此相對應,對於每條觸發語句,語句級觸發器將觸發壹次,而無需考慮受觸發事件影響的行的數量。

和 Oracle 數據庫壹樣,對於語句級觸發器,可以在觸發語句之前或之後由 EnterpriseDB企業版執行觸發器代碼塊,對於行級觸發器,可以在受觸發事件影響之前或之後由 EnterpriseDB企業版執行觸發器代碼塊。

匿名塊

在 EnterpriseDB企業版數據庫中,過程代碼塊可以像在 Oracle 數據庫中壹樣,被方便地執行。這類代碼塊稱為匿名塊。匿名塊是未命名的,並且未被存儲在數據庫中。可以從應用程序緩沖區執行和刪除匿名塊,除非重新在應用 程序中輸入塊代碼,否則匿名塊不可被再次執行。對於快速、壹次性程序(如測試程序),匿名塊非常有用。

數據詞典視圖

EnterpriseDB企業版提供了針對其數據詞典的視圖,這些視圖與通常使用的 Oracle 數據詞典視圖非常像。這些視圖使熟悉 Oracle 數據庫的數據庫管理員和開發人員能夠快速查找詞典信息,而無需了解新的數據詞典格式。

SQL*Plus工具兼容

EDB*Plus是壹個工具程序,它提供壹個命令行方式的用戶界面,用於訪問 EnterpriseDB企業版。在EDB*Plus中,可以使用標準SQL命令,SPL匿名代碼塊,和EDB*Plus命令。EDB*Plus 命令與Oracle 的SQL*Plus命令兼容,並且提供各種功能,包括:

● 查詢某些數據庫對象

● 執行存儲過程

● 對SQL命令的輸出結果進行格式化

● 執行批量處理腳本

● 記錄輸出

SQL*Load快速寫入兼容

EDB*Loader的壹些特性可以改善加載文本文件(text)到數據庫的性能。EDB的標準加載命令是"COPY",但是它有壹些重要的限制使得加載的時間明顯增加。

第壹個限制就是"COPY"命令不能處理固定長度格式的文件(fixed width file formats)。但是許多文件都是這種格式的,要使用EnterpriseDB數據庫,這些文件就必須被轉換成不受限制的文件格式,這就導致了文件從底層被重寫了兩次。

另壹個主要的限制就是"COPY"命令缺少錯誤處理機制。當使用"COPY"命令時,如果要加載文件中的某壹行是不合法的,則所有的行都將被拋棄,並且整個文件都要被重新加載。

EDB*Loader可以將不合法的記錄轉移到discard文件中,從而使得發生錯誤時,整個文件的處理仍可繼續。這樣用戶可以在批量加載處理完成後,單獨地檢查discard文件中的問題數據。

然而,EDB*Loader最具戲劇性的功能還是它的直接路徑加載(Direct Path load),直接路徑加載忽略了影響批量處理性能的大量處理步驟,因此性能更好,但它也需要遵循完整的原子性操作,也即要麽全做,要麽壹點也不做。

直接路徑加載利用控制文件中定義的列的描述信息來解析輸入的行,然後將文件中的數據轉換為列的數據類型,並創建壹個內部數據結構。之後,這個數據結構將直 接被格式化成EnterpriseDB數據庫的數據塊。新創建的塊又直接寫入到數據目錄中,從而略過了許多處理過程,因此能夠更快地加載。

Copy加載和直接路徑加載對比

DBLink鏈接兼容

壹個數據庫鏈接(Database Link)定義了從壹個數據庫服務器到另壹個數據庫服務器的通信信道。使用數據庫鏈接的好處是:它允許用戶能夠訪問壹個遠程數據庫的對象,這樣,該用戶便被綁定到遠程對象的用戶權限集中。

數據庫鏈接同時也是分布式數據庫的基礎,應用程序可以同時訪問分布式環境中的多個數據庫。例如,壹個客戶端可以從本地庫中發起壹個簡單的查詢,而連接遠程數據庫的表。數據庫的位置和使用的平臺對於客戶端應用程序來說是透明的。