首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

異構資料庫虛擬化封裝:SQLHub 視圖、同義詞、程序與目錄實現統一資料服務 (下)

     編輯:關於SqlServer

虛擬化封裝目標

將跨庫存取細節隱藏,對外提供統一、簡單的資料介面,使用者無需關心物理儲存位置。

1. 視圖封裝跨庫邏輯

CREATE OR REPLACE VIEW v_ora_sql_emp AS
SELECT empno AS ora_empno,
    (#sqlserver SELECT ename FROM emp WHERE empno=&empno&) AS sql_ename
FROM (#Oracle SELECT * FROM emp WHERE ROWNUM < 5)

使用者直接 SELECT * FROM v_ora_sql_emp 即可取得融合資料。視圖查詢結果

視圖定義可為程式區塊,支援複雜流程控制。

2. 同義詞簡化遠端呼叫

為遠端函數建立別名:

CREATE SYNONYM PUBLIC.substring FOR substring@sqlserver

建立同義詞

之後直接呼叫 substring('hgsql',2,2),引擎自動轉向 SQL Server。同義詞呼叫結果

3. 預存程序封裝業務邏輯與驗證

CREATE PROCEDURE substring(p_str, p_start, p_count) AS
    substring@sqlserver(p_str, p_start, p_count);

加入參數驗證:

CREATE OR REPLACE PROCEDURE substring(p_str, p_start, p_count) AS
BEGIN
    IF p_start IS NULL THEN
        RAISE 'p_start is null';
    END IF;
    substring@sqlserver(p_str, p_start, p_count);
END

傳入 NULL 時拋出自訂錯誤。參數驗證錯誤

4. 目錄實現深度虛擬化

建立邏輯目錄組織跨庫物件:

CREATE DIRECTORY //mytable
ALTER DIRECTORY //mytable ADD ITEM ora_emp FOR Oracle.emp
ALTER DIRECTORY //mytable ADD ITEM ora_sql_emp FOR v_ora_sql_emp
ALTER DIRECTORY //mytable ADD ITEM ora_tab FOR user_tables@Oracle
ALTER DIRECTORY //mytable ADD ITEM sql_emp FOR sqlserver.emp

目錄結構

透過路徑存取:SELECT * FROM //mytable/ora_sql_emp。目錄查詢結果 目錄瀏覽

5. 特殊目錄:自動掛載遠端 Schema

CREATE DIRECTORY //mytable/@Oracle

自動展開 Oracle 所有 Schema 為子目錄。建立特殊目錄 Schema 自動展開

直接查詢:SELECT * FROM //mytable/@Oracle/system/help。特殊目錄查詢

總結

SQLHub 以 SQL 為統一介面,透過視圖/同義詞/程序/目錄四層封裝,將 Oracle、SQL Server 等異構資料源整合為單一虛擬資料庫,支援 XML、Excel、HTML 等非關聯源,構建企業級資料服務總線。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved