马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
HANA从1.0 SPS06起引入了一种叫做"Smart Data Access"技术,它可以让HANA访问远程数据源中的数据,而无需复制数据到HANA中,就好像访问HANA的本地表一样。通过在HANA中创建虚拟表(也就是代理表),来实现Smart Data Access访问。目前支持的外部数据源如下(摘自SAP HANA SP06新特性文档): * Teradata Database: version 13.0 * SAP Sybase IQ: version 15.4 ESD#3 and 16.0 * SAP Sybase Adaptive Service Enterprise: version 15.7 ESD#4 * Intel Distribution for Apache hadoop: version 2.3 (This includes Apache Hadoop version 1.0.3 and Apache Hive 0.9.0.)
在创建虚拟表后,开发人员能够编写SQL查询以实现对虚拟表的访问。HANA的查询优化器能够优化这些SQL查询,发送查询或查询某个部分到远程数据源中执行,接收查询结果集,然后把最终的查询结果返回给客户端。 在本文下面的内容中将结合一个例子向大家介绍"Smart Data Access"的配置和创建方法。这个列子的远程数据源是SAP Sybase IQ 16,具体的环境如下: * SAP HANA 1.0 SP06 Revision 69 * IQ 16.0 SP02 For Linux x86_64 , 运行了IQ Demo数据库 * 假设HANA数据库实例所在的机器上已经安装了IQ 16.0 SP02的客户端,安装目录为:/opt/sybiq/16.0
下面是具体的配置步骤: (1) 修改环境变量 su - hdbadm vi $HOME/.customer.sh 在这个文件中增加如下内容: export LD_LIBRARY_PATH=/opt/sybiq/16.0/IQ-16_0/lib64LD_LIBRARY_PATH (2) 增加ODBC数据源 su - hdbadm vi $HOME/.odbc.ini 在文件中增加如下内容:
[ODBC Data Sources] IQ16_DEMO=SQLAnywhere 16.0 [IQ16_DEMO] ServerName=HAIQ-DB-01_iqdemo CommLinks=tcpip(host=192.168.0.199;port=2638) Driver=libiqodbc.so
(3) 重启HANA
用hdbadm用户重新登陆,使得第一步修改的环境变量有效
./HDB stop
./HDB start
(4) 创建远程数据源 CREATE REMOTE SOURCE DS_IQ16_DEMO ADAPTER IQODBC CONFIGURATION 'DSN=IQ16_DEMO' WITH CREDENTIAL TYPE 'PASSWORD' USING 'user="DBA";password="sql"' 注意:这只是示例,在实战中应该使用应用账户,不要使用数据库超级用户!
(5) 创建虚拟表
CREATE VIRTUAL TABLE vt_customers AT DS_IQ16_DEMO.iqdemo.GROUPO.customers
(6) 访问虚拟表
SELECT top 10 * from vt_customers
本文将向大家介绍访问SAP ASE的配置。具体的环境如下:
* SAP HANA 1.0 SP06 Revision 69
* ASE 15.7 SP110 For Linux x86_64 , 运行了tpchdb数据库
* 假设HANA数据库实例所在的机器上已经安装了ASE 15.7 SP110的客户端,安装目录为:/opt/sybase
下面是具体的配置步骤:
(1) 修改环境变量
su - hdbadm
vi $HOME/.customer.sh
在这个文件中增加如下内容:
export LD_LIBRARY_PATH=/opt/sybiq/16.0/IQ-16_0/lib64:/opt/sybase/DataAccess64/ODBC/libLD_LIBRARY_PATH
(2) 增加ODBC数据源
su - hdbadm
vi $HOME/.odbc.ini
在文件中增加如下内容:
[ODBC Data Sources]
IQ16_DEMO=SQLAnywhere 16.0
ASE_DEMO=Adaptive Server Enterprise [IQ16_DEMO]
ServerName=HAIQ-DB-01_iqdemo
CommLinks=tcpip(host=192.168.0.199;port=2638)
Driver=libiqodbc.so [ASE_DEMO]
Server=192.168.0.199
Port=5000
Database=TPCHDB
Driver=libsybdrvodb.so
(3) 重启HANA
用hdbadm用户重新登陆,使得第一步修改的环境变量有效
./HDB stop
./HDB start
(4) 创建远程数据源
CREATE REMOTE SOURCE DS_ASE_DEMO ADAPTER ASEODBC CONFIGURATION 'DSN=ASE_DEMO' WITH CREDENTIAL TYPE 'PASSWORD' USING 'user="tpchuser";password="tpchpasswd"'
(5) 创建虚拟表
CREATE VIRTUAL TABLE vt_customer AT DS_ASE_DEMO."tpchdb"."tpchuser"."customer" 注意:由于ASE的用户名、数据库名、表名等区分大小写,而HANA会把这些名称自动转换为大写,为了禁止HANA进行这种转换需要加上""括起这些名称,否则会报如下错误:
* 476: invalid remote object name: Unable to retrieve remote metadata
(6) 访问虚拟表
SELECT top 10 * from vt_customer
|