实时运营数据分析(real-time operational analytics )是指同时在同一张数据表上执行分析处理和业务处理。分析查询主要是对海量数据执行聚合查询,而事务主要是指对数据表进行少量数据的更新和查找。

运营工作负载(Operational workload)是指对开展业务至关重要的业务交易。例如,一家零售商店有一个交易系统来创建或修改新订单,而一家信用卡公司则跟踪供应商代表其客户收取的所有费用。 这些交易系统对企业至关重要,因为任何停机时间或速度放缓都会直接影响企业的利润。 因此,这些系统专为性能/可伸缩性而设计,并具有高可用性。 对业务工作负载同样重要的是企业用来回答诸如“完成订单的平均时间是多少时间”之类的问题的分析。

大多数客户通过在另一台服务器上创建数据仓库来实现分析工作负载(analytics workload),周期性把交易系统产生的数据通过ETL(提取,转换和加载)同步到数据仓库。

一,传统的BI系统

在传统的BI系统中,把用于公司日常事务的工作负载(OLTP)和用于报表分析的工作负载分开,分别对应于运营数据库和数据仓库,通过把两种工作负载分开,尽可能地避免分析查询对交易数据库的影响。

分析数据通常存储在专用于用于报表分析查询的数据仓库或数据集市中。日常的事务数据直接写入到运营数据库,为了使分析尽量准备准确,需要数据工程师设计ETL(提取,转换和加载)程序,定期把运营数据转移到分析数据库(即数据仓库)中。

尽管有ETL程序定期从事务数据库把数据同步到分析数据库,但是数据的同步不可避免地存在一定的时延,这就导致分析数据库中的数据还是跟运营数据库存在一定的差异(GAP),使得数据分析的结果存在失真的可能性。

二,什么是实时运营数据分析

传统的BI系统存在数据延迟的原因是用于分析处理和事务处理的表是分开的,如果分析处理和事务处理在同一基础表上执行,那么就不会存在时间延迟的问题。

实时运营分析的目标是单个数据源的场景,例如企业资源计划(ERP)应用程序,用户可以在其上执行日常的事务处理和分析工作。

实时分析在行存储表上使用可更新的非聚集列存储索引,列存储索引维护数据的副本,分别在数据的单独副本上运行事务处理和分析工作,这样避免了在同一个数据表运行两个工作负载,可以最大程度地减少同时运行的两个工作负载对查询性能的影响。

当基表的数据更新时,SQL Server自动更新列存储索引,通过这种设计,用户可以对最新数据实时运行分析,分析查询使用的始终是最新的数据,分析处理的结果是最接近现实数据的,因此,得到的分析结果是最真实和最新的。

用户只需要在基表上创建一个非聚集的列存储索引,就可以实现实时运营数据分析:

CREATE NONCLUSTERED COLUMNSTORE INDEX index_name
ON table_name (colum_list) ;

在表上创建非聚集的列存储索引,底层的物理结构如下图所示:

对运营数据进行实时分析,存在两个挑战:

第一个挑战是,当数据库模式已针对OLTP优化时,如何获得良好的分析查询性能?传统的数据仓库(DW)使用星型或雪花模式为分析查询提供最佳性能。但是,OLTP数据库的架构已高度规范化(即数据重复最少),这主要是因为大量表之间的连接复杂性,在用于分析查询时可能会导致性能不佳。列存储索引(即NCCI)可以显着提高查询速度,可以克服查询的复杂性,并在几秒钟内仍然可以提供大多数分析查询。在这一点上,必须强调的是,使用实时操作分析的分析查询性能不会像使用专用DW时所能达到的那样快,但是关键好处是能够进行实时分析。一些企业可能选择进行实时运营分析,同时仍保留用于极端分析的专用DW。有些客户已经在生产中部署了NCCI,并取消了专用DW。

第二个挑战是,如何最小化或消除分析对事务性工作负载的影响?实际上,交易系统会跟踪其业务交易,交易工作量的任何减缓都是不可接受的。虽然SQL Server提供了多个选项来最小化分析对运营工作负载的影响,但是这种影响是不可避免的。

参考文档:

Get started with Columnstore for real-time operational analytics

Real-Time Operational Analytics Using In-Memory Technology

Real-Time Operational Analytics - Overview nonclustered columnstore index (NCCI)

SQL Server 列存储索引 第四篇:实时运营数据分析的更多相关文章

  1. SQL Server 列存储索引 第三篇:维护

    列存储索引分为两种类型:聚集的列存储索引和非聚集的列存储索引,在一个表上只能创建一个聚集索引,要么是聚集的列存储索引,要么是聚集的行存储索引,然而一个表上可以创建多个非聚集索引. 一,创建列存储索引 ...

  2. SQL Server 列存储索引强化

    SQL Server 列存储索引强化 SQL Server 列存储索引强化 1. 概述 2.背景 2.1 索引存储 2.2 缓存和I/O 2.3 Batch处理方式 3 聚集索引 3.1 提高索引创建 ...

  3. SQL Server 列存储索引 第二篇:设计

    列存储索引可以是聚集的,也可以是非聚集的,用户可以在表上创建聚集的列存储索引(Clustered Columnstore Index)或非聚集的列存储索引(Nonclustered Columnsto ...

  4. SQL Server 列存储索引概述

    第一次接触ColumnStore是在2017年,数据库环境是SQL Server 2012,Microsoft开始在SQL Server 2012中推广列存储索引,到现在的SQL Server 201 ...

  5. 使用Spark加载数据到SQL Server列存储表

    原文地址https://devblogs.microsoft.com/azure-sql/partitioning-on-spark-fast-loading-clustered-columnstor ...

  6. SQL Server 列存储性能调优(翻译)

    原文地址:http://social.technet.microsoft.com/wiki/contents/articles/4995.sql-server-columnstore-performa ...

  7. SQL Server Reporting Service(SSRS) 第四篇 SSRS 用法总结

    1. 如何让表头在每页显示(译) A. 打开高级模式:  在分组栏中点击Column Goups右侧的箭头选择高级模式; B. 找到第一个Static组 在Row Groups区域中(注意不是Colu ...

  8. SQL Server Reporting Service(SSRS) 第四篇 SSRS 常见问题总结

    1. 如何让表头在每页显示(译) A. 打开高级模式:  在分组栏中点击Column Goups右侧的箭头选择高级模式; B. 找到第一个Static组 在Row Groups区域中(注意不是Colu ...

  9. SQL Server 2014聚集列存储索引

    转发请注明引用和原文博客(http://www.cnblogs.com/wenBlog) 简介 之前已经写过两篇介绍列存储索引的文章,但是只有非聚集列存储索引,今天再来简单介绍一下聚集的列存储索引,也 ...

随机推荐

  1. 听我的,看完这30道MySQL基础题再去面试

    可以微信搜索公众号「 后端技术学堂 」回复「1024」获取50本计算机电子书,回复「进群」拉你进读者技术交流群,文章每周持续更新,我们下期见! 一个典型的互联网产品架构包含接入层.逻辑处理层以及存储层 ...

  2. 解决 SecureCRT 和 SecureFX 中文乱码

    引言 最近老是有小伙伴给我发消息说,下载的 SecureCRT 和 SecureFX 安装打开后连接了自己的服务器或虚拟机后会出现中文乱码,每次都要给一一回复,我倒没事,主要是有时候因为工作的原因,所 ...

  3. netty第一讲 创建

    1.新建一个maven项目  https://blog.csdn.net/yanghaibobo110/article/details/73835469 2.netty是什么玩意 官方那个给出的介绍是 ...

  4. Layman PHP+JavaScript 实现图片无刷新上传

    html文件代码 <!-- ajax文件上传开始 --> <script type="text/javascript" src="/imageuploa ...

  5. 060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序

    060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序 本文知识点:冒泡排序 冒泡排序 实际案例分析冒泡排序流程 第1轮比较: 第1轮比较的结果:把最 ...

  6. xor 和 or 有什么区别

    参考:https://zhidao.baidu.com/question/67532331.html 1.定义区别: ①OR是或运算,A OR B的结果:当A.B中只要有一个或者两个都为1时,结果为1 ...

  7. Tensorflow学习笔记No.5

    tf.data卷积神经网络综合应用实例 使用tf.data建立自己的数据集,并使用CNN卷积神经网络实现对卫星图像的二分类问题. 数据下载链接:https://pan.baidu.com/s/141z ...

  8. 实现Excel文件的上传和解析

    前言 本文思维导图 一.需求描述 实现一个页面上传excel的功能,并对excel中的内容做解析,最后存储在数据库中. 二.代码实现 需求实现思路: 先对上传的文件做校验和解析,这里我们通过Excel ...

  9. MeteoInfoLab脚本示例:AVHRR HDF数据

    这里演示读取和绘制AVHRR hdf格式数据,以sst(海表面温度)为例. 脚本程序: #Add data file f = addfile('D:/Temp/hdf/2006001-2006005. ...

  10. day10 Pyhton学习

    一.昨日内容回顾 函数: 定义:对功能或者动作的封装 def 函数名(形参): 函数体 函数名(实参) return:  返回,当程序运行到return的时候,终止函数的执行 一个函数一定拥有返回值 ...