SQL Server 2016实时操作分析 你值得拥有

日期: 2017-05-10 作者:Robert Sheldon翻译:杨宏玉 来源:TechTarget中国 英文

分析有助于提高商业运营的效率,SQL Server 2016允许用户在事务数据库的操作型数据上完成实时分析。 实时操作分析是SQL Server 2016的新功能,它允许你你直接在事务数据库运行分析查询。这是一个强大的工具,但它的引入也给数据库开发人员和管理员带来了新的挑战。 为了支持在操作型数据上执行实时分析,Microsoft 在SQL Server 2016上新增了可更新的非聚集columstore索引,并改进了数据库引擎,以便对新型索引提供支持。

概括地说,columnstore索引是一种基于列结构存储的数据结构。这种索引由SQL Server 2012引入,旨在加快SQL Serve……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

分析有助于提高商业运营的效率,SQL Server 2016允许用户在事务数据库的操作型数据上完成实时分析。

实时操作分析是SQL Server 2016的新功能,它允许你你直接在事务数据库运行分析查询。这是一个强大的工具,但它的引入也给数据库开发人员和管理员带来了新的挑战。

为了支持在操作型数据上执行实时分析,Microsoft 在SQL Server 2016上新增了可更新的非聚集columstore索引,并改进了数据库引擎,以便对新型索引提供支持。

概括地说,columnstore索引是一种基于列结构存储的数据结构。这种索引由SQL Server 2012引入,旨在加快SQL Server数据仓库的查询处理过程。

有了新型columnstore索引,用户在不实现数据仓库和复杂的提取、转换和加载(ETL)操作前提下,就可以在原数据库上运行事务性分析工作负载。

该索引维护了被分析事务数据的单独副本,其存储格式是柱状的,而不是传统的基于行的存储。如果一个事务修改基本表中的数据,SQL Server自动将更改传递给关联的columnstore索引。这保证了索引数据的时新性,让数据能够随时应用到实时分析中,且不影响事务处理工作负载。

这并不意味着分析查询从来不会触及基本表。SQL服务器在运行一个查询时,查询优化器将决定访问数据的最佳方式,在必要时将会查询基表。从应用程序的角度来看,整个过程都是透明的,不需要特殊的编码。

实现实时操作分析,你只需要在目标数据表建立columnstore索引。你不需要修改现有的事务处理应用程序,或设置特殊类型的分析查询。

你还可以在磁盘表或者内存表上创建columnstore索引。对于磁盘表,您可以使用可更新的非聚集columnstore索引,可以使用过滤排除频繁更新的数据,以避免加重数据库服务器的负担。对于内存表,你可以创建聚集columnstore索引,这个索引必须包括基本表中所有的列。尽管这似乎有些违反直觉,但Microsoft的确表示,聚集索引在某种特定的情况下可以作为非聚集索引使用。

实时分析的优势

企业通常会将分析工作负载与事务副本分离,实现复杂的处理平台,支持ETL和数据仓库流程。但是这么做也有很多缺点。

这样做的话,基础设施将会是一个复杂的系统,需要大量的IT资源,实现和维护将十分昂贵。数据集必须被小心地变更,力求保持同步。这样才能够保持数据的准确性,确保ETL过程中的众多技术组件能够正常运作。

实时操作分析可以帮助你摆脱上述困境。你不需要实现一个单独的技术基础设施来存储和访问被分析的数据。一旦你添加了必要的columnstore索引,在每次使用这些被分析的数据时,它们都是最新的。

操作型数据分析的挑战

实时操作分析听起来前途无限,但它所带来的的挑战也是不容忽视的。

事务性数据库是高度标准化的,这样可以确保数据完整性,消除重复数据。分析查询通常在维度模型有更好的表现,例如在数据仓库中常见的星型和雪花模型。

这就是说,在事务性数据库中,columnstore 索引可以提供比传统的 B 树索引更好的分析性能。微软表示,使用colunmstore索引,分析查询可能达不到其在单独数据仓库上的运行效率。但是,colunmstore索引允许你在不使用传统数据仓库的情况下,进行实时数据分析,牺牲一定的效率对你来说是非常值得的。

然而,你也必须面对分析查询对事务性工作负载的潜在影响。维护columnstore索引和处理会占用一部分数据库服务器资源,极端情况下甚至会影响事务性工作的正常运作。对于许多企业来说,即使是最轻微的事务处理中断也是不允许出现的。

SQL Server 2016提供了几个方法来减轻对其对数据库性能的影响。就像前面提到的,您可以在磁盘表上过滤columnstore索引,达到热数据的处理开销最小化——热数据指的是那些经常更改或更新的数据。索引过滤机制允许你继续使用B树来索引热数据,并限制了冷数据上columnstore索引的数量,。

如果上述方法在某些数据不具备可操作性,或者你在内存表中使用 columnstore索引,那SQL Sever提供的压缩延迟特性可以推迟指定时间内对热数据的压缩操作,以减少数据处理负载。在这两种情况下,热数据都将自动被纳入到分析查询中。

另一个减少实时操作分析开销的策略是将分析处理分流到一个或多个次要数据库副本,这些副本由AlwaysOn Availability Groups高可用性技术创建。然后分析查询可以从这些副本读取数据,而不是从主数据库读取。当然,这也意味着你需要一个AlwaysOn结构。

向操作型数据分析上迁移

如果你的企业并不急于使用实时数据分析、那么对操作分析的部署对你的企业来说可能没有必要。甚至在你确实需要实时分析,并成功实现了一个实时操作分析部署的情况下,也不能保证你不会需要ETL和数据仓库基础设施。如果你想要实现分析查询的性能最大化,保持大量的历史数据以供分析,或合并来自多个数据源的数据,包括非关系型数据源等,那么你仍然需要一个单独的分析平台。

微软建议,当你想要在单一数据源上存储和分析关系数据时,你可以考虑实时操作分析。例如,一个在SQL Server上维护所有客户数据的客户关系管理系统。

在这种情况下,只要充分考虑分析查询对事务吞吐量的影响,采用实时数据分析就会是个不错的选择。在不需要大量投资的情况下,你就可以很容易地添加对实时数据分析的支持,当然,你首先要升级到SQL Server 2016。

翻译

杨宏玉
杨宏玉

TechTarget特邀编辑。北京邮电大学计算机科学与技术专业硕士。熟悉软件开发流程,对系统管理,网络配置,数据库应用等方面有深入的理解和实践经验。现就职于IBM(中国)投资有限公司,从事IBM服务器相关软件的开发工作。业余时间喜欢游泳登山,爱健身,喜欢结交朋友。

相关推荐