使用 SAP HANA Virtual Table 连接外部数据源
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_DATEFROM 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,数据湖也可用于存储大量数据。