使用 SAP HANA Virtual Table 連接外部數據源 Connect from SAP HANA Cloud to SAP HANA Cloud, data lake IQ

Access Remote Sources with SAP HANA Database Explorer

遠程源(Remote sources)是與其他數據庫的連接。 虛擬表使用遠程源創建指向存儲在另一個數據庫中的數據的本地表。 聯合查詢使用虛擬和非虛擬表。

爲了說明這些概念,將在遠程數據庫中創建一個表,其中包含來自給定酒店附近的一些頂級旅遊景點的虛構評論數據。 酒店住宿與客戶訪問附近旅遊景點或餐廳的願望之間可能存在相關性。

有關 SAP HANA 智能數據訪問 (SAP HANA smart data access,SDA) 和 SAP HANA 智能數據集成 (SAP HANA Smart Data Integration,SDI) 的更多詳細信息,請參閱將 SAP HANA 雲連接到遠程數據源和使用 SAP HANA 雲進行數據訪問。

要從 SAP HANA 快速版創建遠程源到 SAP HANA Cloud,請從 SAP HANA 快速版打開 SAP HANA 數據庫瀏覽器。

指定服務器、端口、額外的適配器屬性和憑據(User1、Password1)。


當然也可以執行通過執行 sql 語句來完成遠程數據源的添加:

CREATE REMOTE SOURCE REMOTE_HC_TRIAL ADAPTER "hanaodbc" CONFIGURATION 'ServerNode=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.hana.trial-XXXX.hanacloud.ondemand.com:443;driver=libodbcHDB.so;dml_mode=readwrite;sslTrustStore="-----BEGIN CERTIFICATE-----MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQkCAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=-----END CERTIFICATE-----"' WITH CREDENTIAL TYPE 'PASSWORD' USING 'user=User1;password=Password1';

可以通過選擇操作 > 複製 > SQL 端點從 SAP HANA Cloud Central 複製 ServerNode。


執行create remote source SQL語句後,在Remote Sources文件夾中可以看到結果,如下圖。 您可能需要按刷新按鈕。


下一步,將在 SAP HANA 快速版中創建名爲 vt_tourist_reviews 的虛擬表。 這將允許訪問在 SAP HANA Cloud 中創建的 Tourist_reviews 表。 這可以可視化如下:

從 SAP HANA 快速版打開 SAP HANA 數據庫資源管理器。 如果需要,創建 HOTEL 模式和可以訪問該模式的用戶。

CREATE USER USER1 PASSWORD Password1 no force_first_password_change;
CREATE SCHEMA HOTEL;
GRANT ALL PRIVILEGES ON SCHEMA HOTEL TO USER1;

右鍵單擊名爲 REMOTE_HC_TRIAL 的遠程源並選擇 Open。

選中 TOURIST_REVIEWS 複選框並按下 Create Virtual Object(s) 按鈕。

將對象名稱設置爲 VT_TOURIST_REVIEWS,將 schema 設置爲 HOTEL。

按創建按鈕。

或者使用 SQL 語句創建 virtual table:

CREATE VIRTUAL TABLE HOTEL.VT_TOURIST_REVIEWS AT "REMOTE_HC_TRIAL"."HC_HDB_Trial"."HOTEL"."TOURIST_REVIEWS";

打開創建好的數據庫表,發現其類型爲 VIRTUAL:

下面的 SQL 語句演示了對本地表和遠程表執行查詢,並執行包含本地和遠程表的聯合查詢。

SELECT * FROM HOTEL.RESERVATION;
SELECT * FROM HOTEL.CUSTOMER;
SELECT * FROM HOTEL.VT_TOURIST_REVIEWS;
SELECT C.NAME, TR.REVIEW, REVIEW_DATE
FROM
    HOTEL.RESERVATION AS R JOIN
    HOTEL.VT_TOURIST_REVIEWS AS TR
    ON TR.REVIEW_DATE = R.ARRIVAL JOIN
    HOTEL.CUSTOMER AS C
  ON C.CNO = R.CNO;

從執行時間我們不難發現,從遠程表讀取數據,花費的時間明顯多於從本地表讀取:


Connect from SAP HANA Cloud to SAP HANA Cloud, data lake IQ

SAP HANA Cloud,data lake 可用於存儲大量不常訪問的數據。 以下步驟在 SAP HANA Cloud、data lake IQ 中創建表 Tourist_reviews 並從關聯的 SAP HANA Cloud 實例訪問該表。

如果需要,在 SAP HANA Cloud Central 中,通過選擇操作: 添加數據湖,將 SAP HANA 雲數據湖實例添加到您的 SAP HANA 雲實例。

執行以下SQL,在數據湖IQ中創建一個名爲tourist_reviews的表。

CREATE TABLE TOURIST_REVIEWS (
  REVIEW_ID INTEGER PRIMARY KEY,
  REVIEW_DATE DATE NOT NULL,
  DESTINATION_ID INTEGER,
  DESTINATION_RATING INTEGER,
  REVIEW VARCHAR(500) NOT NULL
);

INSERT INTO TOURIST_REVIEWS(REVIEW_ID, REVIEW_DATE, DESTINATION_ID, DESTINATION_RATING, REVIEW) VALUES(1, '2019-03-15', 1, 5, 'We had a great day swimming at the beach and exploring the beach front shops.  We will for sure be back next summer.');
INSERT INTO TOURIST_REVIEWS(REVIEW_ID, REVIEW_DATE, DESTINATION_ID, DESTINATION_RATING, REVIEW) VALUES(2, '2019-02-02', 1, 4, 'We had an enjoyable meal.  The service and food was outstanding.  Would have liked to have slightly larger portions');

在 SAP HANA 數據庫連接中,創建從 HANA 數據庫到數據湖 IQ 的遠程源。 請務必替換主機和密碼值。

CREATE REMOTE SOURCE HC_DL_Trial
    ADAPTER "IQODBC"
        CONFIGURATION 'Driver=libdbodbc17_r.so;host=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.iq.hdl.trial-XXXX.hanacloud.ondemand.com:443;ENC=TLS(tls_type=rsa;direct=yes)'
            WITH CREDENTIAL TYPE 'PASSWORD'
                USING 'user=HDLADMIN;password=myPassword1';

刷新之後,就看到一個名爲 HC_DL_TRIAL 的 remote source 了:

右鍵單擊 HC_DL_TRIAL 並選擇打開。 在 SAP HANA Cloud 中的架構 HOTEL 中創建一個名爲 VT_DL_TOURIST_REVIEWS 的虛擬表,該表映射到 SAP HANA Cloud 數據湖 IQ 中新創建的表。

示意圖如下:


SELECT * FROM HOTEL.VT_DL_TOURIST_REVIEWS;

請注意,遠程數據源是可更新的。 數據存儲在 SAP HANA Cloud 中,數據湖存儲在磁盤上,與內存存儲相比具有成本優勢。 SAP HANA Cloud,數據湖也可用於存儲大量數據。

更多Jerry的原創文章,盡在:"汪子熙":


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