博客
关于我
SQL Server 列存储索引 第四篇:实时运营数据分析
阅读量:755 次
发布时间:2019-03-23

本文共 1368 字,大约阅读时间需要 4 分钟。

SQL Server 列存储系列:实时运营数据分析(Real-time Operational Analytics)

传统的BI系统

在传统的BI系统中,运营数据库(OLTP)与数据仓库(DW)通常是分开设计的。这是因为在OLTP中处理的事务数据需要实时响应,而分析查询则经常需要大量的数据聚合和复杂计算。为了确保分析结果的准确性,通常采用ETL(Extract、Transform、Load)工具定期将数据从事务数据库同步到分析数据库。

数据同步的挑战

尽管ETL工具能够定期将数据从OLTP转移到DW,但数据同步不可避免地存在时延。这种时间差异意味着分析数据库中的数据可能与事务数据库存在一定的误差(GAP),从而导致分析结果的可靠性下降。此外,双存储(事务数据和分析数据)增加了存储与计算资源的占用,并要求更多的技术资源进行维护。

what is Real-time Operational Analytics?

传统BI系统之所以存在时间延迟的根本原因是分析查询与业务查询通常运行在同一数据源上。为了实现实时运营数据分析,可以在行存储表上创建可更新的非聚集列存储索引。这种设计通过在数据产生副本的同时,分别用于业务处理和分析工作,有效避免了两个工作负载之间的冲突。

ColumnStore索引的优势

在行存储表中创建非聚集列存储索引,可以为列数据提供高性能的访问方式。具体来说,这种索引会在底层存储一个完整的数据副本,用于高效执行分析查询。数据的更新自动同步到索引结构,确保分析查询始终使用最新的数据。在大多数情况下,非聚集列存储索引能够有效减少分析查询对事务处理的影响。

实施 Columns Store 索引

在实际应用中,创建非聚集列存储索引非常简单。只需在目标表中定义所需的列即可完成。以下是示例代码:

CREATE NONCLUSTERED COLUMNSTORE INDEX index_nameON table_name (column_list);

这种设计不仅支持实时运营数据分析,还显著提升了事务查询的性能。通过集成到OLTP环境中,非聚集列存储索引能够在不影响事务处理的前提下,提供实时的数据分析能力。

实时运营数据分析的挑战

尽管非聚集列存储索引能够为实时运营数据分析提供支持,但仍然面临一些挑战。第一,标准化的OLTP架构通常对表间连接和数据关系进行了严格规范,这对跨表分析查询的性能产生了一定的影响。第二,尽管可以通过非聚集列存储索引实现实时运营分析,但需要权衡分析性能与事务处理复杂度之间的关系。

提高实时运营数据分析性能的方法

延迟压缩技术是提升实时运营数据分析性能的有效手段之一。通过将新数据存储在delta存储区后,一定时间延迟后再对数据进行压缩存储,可以显著减少压缩存储对事务处理的影响。这种方法不仅提高了数据压缩的效率,还有助于优化事务查询的性能。

结论

实时运营数据分析通过在同一数据源上同时支持业务查询和分析查询,有效解决了传统BI系统中数据延迟和多存储带来的问题。虽然非聚集列存储索引的支持可能不如专用数据仓库那样高效,但其灵活性和与OLTP系统的成熟集成优势使其成为实时运营分析的理想选择。通过结合延迟压缩等优化技术,可以有效提升实时运营数据分析的整体性能,降低对事务系统的影响。

转载地址:http://sryzk.baihongyu.com/

你可能感兴趣的文章
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
查看>>
MySQL 是如何加锁的?
查看>>
MySQL 是怎样运行的 - InnoDB数据页结构
查看>>
mysql 更新子表_mysql 在update中实现子查询的方式
查看>>
MySQL 有什么优点?
查看>>
mysql 权限整理记录
查看>>
mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
查看>>
MYSQL 查看最大连接数和修改最大连接数
查看>>
MySQL 查看有哪些表
查看>>
mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
查看>>
MySql 查询以逗号分隔的字符串的方法(正则)
查看>>
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
查看>>
mysql 查询,正数降序排序,负数升序排序
查看>>
MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
查看>>
mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
查看>>
mysql 死锁(先delete 后insert)日志分析
查看>>
MySQL 死锁了,怎么办?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 添加列,修改列,删除列
查看>>