Skip to Content

     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

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply