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/lib64:$LD_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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
50 | |
5 | |
5 | |
5 | |
3 | |
3 | |
3 | |
3 | |
3 | |
2 |