SQL Server 2019 新特性系列一:数据虚拟化

最新更新 SQL Server已经到了CTP2.2版本,主要更新了如下功能:

  • 大数据集群:在大数据群集上使用 azure 数据工作室中的 sparkr

  • 数据库引擎:在 sql server 复制中使用 utf-8 字符编码。

SQL Server 2019 CTP 2.0 开始的重要方案之一是能够虚拟化数据。 此过程允许将数据保留在其原始位置。 可以虚拟化 SQL Server 实例中的数据,以便可以对这些数据进行查询,如同 SQL Server 中的任何其他表一样。 此过程可以最大限度地减少对 ETL 进程的需求。 此过程可通过使用 PolyBase 连接器来实现。

借助 PolyBase,SQL Server 实例可处理从外部数据源中读取数据的 Transact-SQL 查询。 SQL Server 2016 及更高版本可以访问 Hadoop 和 Azure Blob 存储中的外部数据。 自 SQL Server 2019 CTP 2.0 起,现在可以使用 PolyBase 访问 SQL Server、Oracle、Teradata 和 MongoDB 中的外部数据。
访问外部数据的相同查询还可以定位 SQL Server 实例中的关系表。 这样可以将外部源中的数据与数据库中的高价值关系数据合并。 在 SQL Server 中,外部表或外部数据源提供对 Hadoop 的连接。
PolyBase 将一些计算推送到 Hadoop 节点,以优化总体查询。 不过,PolyBase 外部访问不仅限于 Hadoop。 其他未结构化的非关系表也受支持,如带分隔符的文本文件。

支持的 SQL 产品和服务

PolyBase 对以下 Microsoft SQL 产品提供这些相同功能:

  • SQL Server 2016 及更高版本(仅限 Windows)

  • 分析平台系统(旧称为“并行数据仓库”)

  • Azure SQL 数据仓库

Azure 集成

借助 PolyBase 的基础帮助,T-SQL 查询还可以将数据导入和导出 Azure Blob 存储。 此外,借助 PolyBase,Azure SQL 数据仓库还可以将数据导入和导出 Azure Data Lake Store 和 Azure Blob 存储。

为什么要用 PolyBase?

过去联接 SQL Server 数据与外部数据的难度更大。 具体有下列两种不方便的方法:

  • 传输一半数据,这样所有数据都采用一种格式或其他格式。

  • 查询两个数据源,然后编写自定义查询逻辑,以在客户端一级联接和集成数据。

PolyBase 使用 T-SQL 来联接数据,因此可避免使用这两种不方便的方法。
为了简单起见,PolyBase 不要求在 Hadoop 环境中安装其他软件。 查询外部数据所用的 T-SQL 语法也是用于查询数据库表的语法。 PolyBase 实现的所有支持操作全都以透明方式发生。 查询作者无需对 Hadoop 有任何了解。

PolyBase 用法

PolyBase 支持在 SQL Server 中使用以下方案:

  • 通过 SQL Server 或 PDW 查询 Hadoop 中存储的数据。 用户将数据存储在经济高效的分布式、可扩展系统中,例如 Hadoop。 PolyBase 使得使用 T-SQL 查询数据更加容易。

  • 查询存储在 Azure Blob 存储中的数据。 Azure blob 存储是一个方便存储供 Azure 服务使用的数据的位置。 PolyBase 使得使用 T-SQL 访问数据变得更加容易。

  • 导入 Hadoop、Azure Blob 存储或 Azure Data Lake Store 中的数据。 通过将 Hadoop、Azure Blob 存储或 Azure Data Lake Store 中的数据导入到关系表中,利用 Microsoft SQL 的列存储技术和分析功能的速度优势。 不需要单独的 ETL 或导入工具。

  • 将数据导出到 Hadoop、Azure Blob 存储或 Azure Data Lake Store。 将数据存档到 Hadoop、Azure Blob 存储或 Azure Data Lake Store,以获得经济高效的存储,并使数据保持联机以便于访问。

  • 与 BI 工具集成 结合使用 PolyBase 和 Microsoft 的商业智能和分析堆栈,或使用任何与 SQL Server 兼容的第三方工具。

“性能”

  • 将计算推送到 Hadoop。 查询优化器制定了基于成本的决策,以在执行此操作将提升查询性能时将计算推送到 Hadoop。 它使用外部表上的统计以制定基于开销的决策。 推送计算会创建 MapReduce 作业并利用 Hadoop 的分布计算资源。

  • 缩放计算资源。 若要提高查询性能,可以使用 SQL Server PolyBase 横向扩展组。 这使并行数据可以在 SQL Server 实例和 Hadoop 节点之间传输,并为处理外部数据添加计算资源。

PolyBase的安装

1、安装SQL Server 需要选择功能,针对外部数据的PloyBase查询服务。安装之前需要安装JAVA的运行环境,Oracle Java SE Runtime Environment (JRE)。 支持版本 7(从 7.51 开始)和版本 8。 JRE 和 Server JRE 都可以正常工作。 转到 Java SE 下载。 如果 JRE 不存在,则安装程序失败。 不支持 JRE9 和 JRE10。

2、在服务器配置页上,将“SQL Server PolyBase 引擎服务”和“SQL Server PolyBase 数据移动服务”配置为在同一域帐户下运行。

3、在“PolyBase 配置页”上,选择两个选项之一。 有关详细信息,请参阅 PolyBase 横向扩展组。

  • 将 SQL Server 实例用作已启用 PolyBase 的独立实例。  选择此选项可将 SQL Server 实例用作独立的头节点。

  • 将 SQL Server 实例作为 PolyBase 横向扩展组的一部分使用。 此选项将打开防火墙以允许传入连接。 允许与 SQL Server 数据库引擎、SQL Server PolyBase 引擎、SQL Server PolyBase 数据移动服务和 SQL Browser 建立连接。 防火墙还允许来自 PolyBase 横向扩展组中其他节点的传入连接。

此选项还将启用 Microsoft 分布式事务处理协调器 (MSDTC) 防火墙连接并修改 MSDTC 注册表设置。

4、在 PolyBase 配置页上,指定具有至少六个端口的端口范围。 SQL Server 安装程序分配该范围中的前六个可用端口。

启用 PolyBase
安装完成后,必须启用 PolyBase 来获取其功能。 若要连接到 SQL Server 2019 CTP 2.0,必须在安装后启用 PolyBase。 使用以下 Transact-SQL 命令。

---启用PolyBase
exec sp_configure @configname = 'polybase enabled', @configvalue = 1;
RECONFIGURE ;
​
--检查PolyBase是否安装
SELECT SERVERPROPERTY ('IsPolyBaseInstalled') AS IsPolyBaseInstalled;
​

PloyBase使用

PloyBase 可以连接 Azure Blob、SQL Server、Oracle、TeraData、MongoDB等,也看支持ODBC 泛型类型。

连接SQL Server

下面测试连接SQL  Server ,使用Azure Data Studio创建外部表,在Azure Data Studio,点击Extensions(Ctrl+Shift+X)搜索SQL 2019,下载sql-vnext-0.8.0-win-x64.vsix

点击文件,选择Install Extension From VSIX Package,选择到 sql-vnext-0.8.0-win-x64.vsix ,安装 SQL Server 2019 preview组件

安装成功后,重新引导,点击数据库右键可以看到 create external table的选项。

默认选择data source 为sql server

创建主秘钥

输入需要链接的服务器和创建的认证信息。

选择需要创建的数据源信息

相关信息,点击创建既可以创建完成。

原始数据表

外部表信息

可以看到可以使用外部表实现数据并不在本数据库,通过polybase实现同样的查询和使用

连接Azure Blob

由于上面的向导只能使用SQL  Server 和Oracle 作为数据源,使用Azure Blob需要使用代码来完成。

在Azure Blob上放了一个测试数据

数据类似这样的数据,特别提示 文件存放格式要用utf-8格式

1,非忠诚,在线,配件,装饰,0,0,0,0,0,0,0,0
2,非忠诚,在线,配件,装饰,0,0,0,0,0,0,0,0
3,非忠诚,在线,配件,装饰,0,0,0,0,0,0,0,0
4,非忠诚,在线,配件,装饰,0,0,0,0,0,0,0,0
5,非忠诚,在线,配件,装饰,96628.8,0,107142.01,4920,3092.12,93536.68,28061,0
6,非忠诚,在线,配件,装饰,0,0,0,0,0,0,0,0
7,非忠诚,在线,配件,装饰,0,0,0,0,0,0,0,0
8,非忠诚,在线,烤盘,餐饮与娱乐,0,0,0,0,0,0,0,0
9,非忠诚,在线,烤盘,餐饮与娱乐,0,196.4,0,-10,0,0,0,-1
10,非忠诚,在线,烤盘,餐饮与娱乐,0,392.8,0,-20,0,0,0,-1
--1、运行 sp_configure,将“hadoop 连接”设置为 Azure Blob 存储提供程序。 若要查找提供程序的值,请参阅 PolyBase 连接配置。 默认情况下,Hadoop 连接设置为 7。
sp_configure @configname = 'hadoop connectivity', @configvalue = 7;
GO
RECONFIGURE
GO
​
--2、在数据库上创建主密钥。上面已经创建了,这步在这里不需要完成。如果是新数据库需要创建
SQLCREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo';
--3、为 Azure Blob 存储创建数据库范围的凭据。
​
-- IDENTITY: any string (this is not used for authentication to Azure storage).
-- SECRET: your Azure storage account key.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = 'user', Secret = '<azure_storage_account_key>';
--4、使用 CREATE EXTERNAL DATA SOURCE 创建外部数据源。
-- LOCATION:  Azure account storage account name and blob container name.
-- CREDENTIAL: The database scoped credential created above.
CREATE EXTERNAL DATA SOURCE AzureStorage with (  TYPE = HADOOP,LOCATION ='wasbs://demo1@testsqlex.blob.core.windows.net',  CREDENTIAL = AzureStorageCredential
);
--5、使用 CREATE EXTERNAL FILE FORMAT 创建外部文件格式。
​
-- FORMAT TYPE: Type of format in Hadoop (DELIMITEDTEXT,  RCFILE, ORC, PARQUET).
CREATE EXTERNAL FILE FORMAT TextFileFormat WITH (  FORMAT_TYPE = DELIMITEDTEXT,FORMAT_OPTIONS (FIELD_TERMINATOR =',',USE_TYPE_DEFAULT = TRUE))
--6、使用 CREATE EXTERNAL TABLE 创建指向 Azure 存储中存储的数据的外部表。
-- LOCATION: path to file or directory that contains the data (relative to HDFS root).  CREATE EXTERNAL TABLE [dbo].[demo_Data] ([序号] int ,[客户细分市场] varchar(20),[通道] varchar(20),[产品] varchar(20),[产品类别] varchar(20),[销售总额] float,[预算] float,[预测] float,[毛利润] float,[折扣] float,[销售额] float,[利润] float,[预测差额比] float
)
WITH (LOCATION='/测试数据.csv',DATA_SOURCE = AzureStorage,  FILE_FORMAT = TextFileFormat
);
​
​
--7、创建统计信息,实际测试,创建统计信息和不创建统计信息的速度差别很大。
CREATE STATISTICS StatsForSensors on demo_Data([序号])
​
​
​
​

完成后,创建成功的表和执行 select语句的结果。

本文测试了2种数据源,其他数据源也用类似的方法进行连接查询。

综上, 使用PloyBase实现了数据存放在自己的环境中,需要查询的时候进行查询,这样的可以减少ETL的工作,SQL Server 2019 中大大的加强了PloyBase 的能力,可以对更多的数据源( Azure Blob、SQL Server、Oracle、TeraData、MongoDB)进行查询,并且此能力也可以在 Azure DW 上使用

作者简介: Max Shen(阿特),为了成为数据专家而努力,万一实现了呢!有多年的系统运维,数据库运维经验。近20年的IT从业经验,在微软有超过10年的工作经验。对数据库运维调优,排错,有独到能力。电话微信18628037379,maxcloud@outlook.com

云世界,一切如梦幻,数据也玩虚拟化。 SQL Server 2019 新特性系列一:数据虚拟化相关推荐

  1. SQL Server 2019 新特性之 SQL Server大数据群集 介绍(一)

    SQL Server 2019 新特性之 SQL Server大数据群集 介绍(一) 从开始SQL Server 2019 预览,SQL Server 大数据群集允许你部署的 Kubernetes 上 ...

  2. 华为在 5G 初期不考虑盈利;​网易发布数据中台;微软 SQL Server 2019 免费支持 Java | 极客头条...

    快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...

  3. [Spark周边]--SQL Server 2019预览结合了SQL Server和Apache Spark来创建统一的数据平台

    感谢原文作者:https://cloudblogs.microsoft.com/sqlserver/2018/09/24/sql-server-2019-preview-combines-sql-se ...

  4. 如何使用数据质量服务和SQL Server集成服务清除数据

    介绍 (Introduction) A year or so ago, I worked for an online web grocery software house located in the ...

  5. 如何在SQL Server 2019中添加数据敏感度分类的命令

    作者 | Jordan Sanders 翻译 | 火火酱.责编 | 晋兆雨 头图 | CSDN付费下载于视觉中国 为了确保数据库安全性和完整性,数据库管理员日常需要运行多种操作.因此,无论在何种情况下 ...

  6. 微软 SQL Server 2019 将免费支持 Java;Rancher Labs获2500万美元融资;腾讯云进军日本市场……...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...

  7. SQL Server 数据类型(整数、浮点数据、日期与时间数据、文本和图形数据类型、货币数据类型、位数据类型、二进制数据类型)

    数据类型: 每个属性来自一个域,他的取值必须是域中的值.在SQL中域的概念用数据类型来实现,定义表的各个属性时需要指明其数据类型及长度. 一:系统数据类型       Sql Server 提供的系统 ...

  8. SQL Server 2019将结合Spark创建统一数据平台

    转载来自于:http://blog.itpub.net/31077337/viewspace-2214805/ 根据其官网最新消息,微软公布了SQL Server 2019预览版.在该预览中,SQL ...

  9. SQL Server - 使用 Merge 语句实现表数据之间的对比同步

    SQL Server - 使用 Merge 语句实现表数据之间的对比同步 原文:SQL Server - 使用 Merge 语句实现表数据之间的对比同步 表数据之间的同步有很多种实现方式,比如删除然后 ...

最新文章

  1. php date 转换 string_php将时间差转换为字符串提示
  2. 青龙羊毛——去闲转(教程)
  3. 4. 连续时间鞅(REN)
  4. Linux系统资源监控--linux命令、nmon和spotlight
  5. 在SAP中进行黏贴时必须要把之前的数据删掉后才能黏贴,不能直接使用黏贴来覆盖之前的数据,这个怎麼解?
  6. Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析
  7. firewall详解
  8. iOS的开发者的webview的js性能比Safari性能差5、6倍
  9. 在Java中确定文件类型
  10. mysql into outfile语法_select into outfile
  11. pytest框架+conftest.py配置公共数据的准备和清理
  12. 大学生发明文言文编程语言!李白杜甫棺材板压不住啦!
  13. Eclipse输入或创建txt文件位置
  14. 中传博士雷霄骅,致敬雷神,永远感谢雷神
  15. 四年级下册计算机工作计划,四年级下册信息技术教学计划
  16. 北邮数电期末复习——第三章
  17. 直通大厂web入门级网页快速开发(建议收藏)
  18. 系统自带测试软件,Windows7自带软件测试RAID系统
  19. java lcm_Orac and LCM
  20. Java使用UCanAccess连接mdb数据库

热门文章

  1. JDBC和servlet设计思路、DAO模式思路、MVC思路粗略总结
  2. python3里面的图片处理库 pillow
  3. 【管理】如何有效管理自己的时间
  4. rdlc实现动态插入图片
  5. Cesium入门-3-官方完整实例
  6. (转)淘淘商城系列——商品搜索功能测试
  7. 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据同步...
  8. ApacheCN 数据库译文集 20211112 更新
  9. 乐鑫esp8266的串口通讯驱动源文件,nonos和rtos版本
  10. 数据分析实战之自如房租分析