博客
关于我
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/

你可能感兴趣的文章
MySQL8修改密码的方法
查看>>
Mysql8在Centos上安装后忘记root密码如何重新设置
查看>>
Mysql8在Windows上离线安装时忘记root密码
查看>>
MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
查看>>
mysql8的安装与卸载
查看>>
MySQL8,体验不一样的安装方式!
查看>>
MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
查看>>
Mysql: 对换(替换)两条记录的同一个字段值
查看>>
mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
查看>>
MYSQL:基础——3N范式的表结构设计
查看>>
MYSQL:基础——触发器
查看>>
Mysql:连接报错“closing inbound before receiving peer‘s close_notify”
查看>>
mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
查看>>
mysqldump 参数--lock-tables浅析
查看>>
mysqldump 导出中文乱码
查看>>
mysqldump 导出数据库中每张表的前n条
查看>>
mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
查看>>
Mysqldump参数大全(参数来源于mysql5.5.19源码)
查看>>
mysqldump备份时忽略某些表
查看>>
mysqldump实现数据备份及灾难恢复
查看>>