北京软件外包使用PolyBase将SQL Server与Hadoop相结合,最近发布的SQL Server 2016让开发人员可以使用SQL查询Hadoop和Azure blob存储。这是一项之前在SQL Server并行数据仓库中提供的技术,名为PolyBase。
和链接服务器一样,PolyBase会设法将尽量多的处理工作转移到源数据库。也就是说,当查询Hadoop或Azure blob存储时,会生成恰当的map/reduce操作。这就是所谓的“下推(pushdown)”,下面是一些开发人员需要了解的下推限制:
SQL Server允许对以下基本表达式和操作符做谓词下推:用于数值、日期、时间值的二元比较操作符(<、>、=、!=、<>、>=、<=);
算术运算符( +、-、*、/、%);
逻辑运算符(AND、OR);
一元运算符(NOT、IS NULL、IS NOT NULL)。
文档接着写到:
BETWEEN、NOT、IN和LIKE操作符可能也可以下推。这取决于查询优化器如何将它们改写为一系列使用基本关系运算符的语句。
下推可以通过OPTION (FORCE EXTERNALPUSHDOWN)显式启用,或通过OPTION (DISABLE EXTERNALPUSHDOWN)显式禁用。
将关系型和非关系型数据相结合
由于PolyBase是基于普通的T-SQL,所以开发人员可以使用像连接这样的常见操作。这意味着,你可以在Hadoop集群中执行map-reduce操作,然后在一个查询中将执行结果和SQL Server数据库的表相连接。
导入/导出
在SQL Server、Hadoop和Azure blob存储之间移动数据不再需要外部的ETL过程或工具。相反,你可以像操作任意两个普通表一样,使用相同的INSERT INTO/SELECT FROM语法。从开发人员的角度来看,Hadoop和Azure blob存储只是配置数据库时多出来的两个可供选择的表类型。(从运维的角度来看,你仍然需要分别管理安全和备份。)