数据存算总论

予早 2025-10-10 22:10:51
Categories: Tags:

数据存储

行式存储、列式存储

行式存储 列式存储
定义 同一行数据一起存储 同一列数据一起存储
读取 读取行数据便利,一次读取即可
读取列数据麻烦,多行重组数据
读取列数据便利,一次读取即可
读取行数据麻烦,多列重组数据
更新 insert与update便利 insert与update麻烦
索引 需要单独对查询列建立索引 每一列自然成为一个索引
压缩 同一行数据相异,压缩率较低 同一列数据相同,压缩率较高

行存适合近线数据分析,比如要求查询表中某几条符合条件的记录的所有字段的场景。

列存适合用于数据的统计分析。考虑如下场景:一个用于存放用户的表中有 20 个字段,而我们要统计用户年龄的平均值,如果是行存,则要全表扫描,遍历所有行。

但如果是列存,数据库只要定位到年龄这一列,然后只扫描这一列的数据就可以得到所有的年龄,计算平均值,性能上相比行存理论上就会快 20 倍。

数据仓库,Data Warehouse

数据库 数据存储方式 数据处理方式
Mysql 行式 倾向于OLTP
Oracle

数据计算

OLAP,On-Line Analytical Processing

OLTP,On-Line Transaction Processing

Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。

ETL一词较常用在数据仓库,但其对象并不限于数据仓库。

数据处理方式根据数据处理场景不同,分为OLTP、DW、OLAP

OLTP OLAP
业务应用场景 日常业务 分析决策,报表统计
事务要求 需要 无需
读写要求 读写 查询为主
数据一致性要求 较高 较低
数据量级 MB-GB
百万千万行
数十数百列
GB-TB
十亿百亿
数百数千

OLTP 系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作;

OLTP比较常用的设计与优化方式为Cache技术与B-tree索引技术,Cache决定了很多语句不需要从磁盘子系统获得数据,所以,Web cache与Oracle data buffer对OLTP系统是很重要的。另外,在索引使用方面,语句越简单越好,这样执行计划也稳定,而且一定要使用绑定变量,减少语句解析,尽量减少表关联,尽量减少分布式事务,基本不使用分区技术、MV技术、并行技术及位图索引。因为并发量很高,批量更新时要分批快速提交,以避免阻塞的发生。

OLAP 系统则强调数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等

在这样的系统中,语句的执行量不是考核标准,因为一条语句的执行时间可能会非常长,读取的数据也非常多。所以,在这样的系统中,考核的标准往往是磁盘子系统的吞吐量(带宽),如能达到多少MB/s的流量。
磁盘子系统的吞吐量则往往取决于磁盘的个数,这个时候,Cache基本是没有效果的,数据库的读写类型基本上是db file scattered read与direct path read/write。应尽量采用个数比较多的磁盘以及比较大的带宽,如4Gb的光纤接口。
在OLAP系统中,常使用分区技术、并行技术。
分区技术在OLAP系统中的重要性主要体现在数据库管理上,比如数据库加载,可以通过分区交换的方式实现,备份可以通过备份分区表空间实现,删除数据可以通过分区进行删除,至于分区在性能上的影响,它可以使得一些大表的扫描变得很快(只扫描单个分区)。另外,如果分区结合并行的话,也可以使得整个表的扫描会变得很快。总之,分区主要的功能是管理上的方便性

OLAP存储有多种实现方法,根据存储数据的方式不同可以分为ROLAP、MOLAP、HOLAP。

ROLAP:表示基于关系数据库的OLAP实现(Relational OLAP)。以关系数据库为核心,以关系型结构进行多维数据的表示和存储。ROLAP将多维数据库的多维结构划分为两类表:一类是事实表,用来存储数据和维关键字;另一类是维表,即对每个维至少使用一个表来存放维的层次、成员类别等维的描述信息。维表和事实表通过主关键字和外关键字联系在一起,形成了“星型模式”。对于层次复杂的维,为避免冗余数据占用过大的存储空间,可以使用多个表来描述,这种星型模式的扩展称为“雪花模式”。ROLAP的最大好处是可以实时地从源数据中获得最新数据更新,以保持数据实时性,缺陷在于运算效率比较低,用户等待响应时间比较长。

MOLAP:表示基于多维数据组织的OLAP实现(Multidimensional OLAP)。以多维数据组织方式为核心,也就是说,MOLAP使用多维数组存储数据。多维数据在存储中将形成“数据立方体(Cube)”的结构,此结构在得到高度优化后,可以最大程度地提高查询性能。随着源数据的更改,MOLAP 存储中的对象必须定期处理以合并这些更改。两次处理之间的时间将构成滞后时间,在此期间,OLAP对象中的数据可能无法与当前源数据相匹配。维护人员可以对 MOLAP 存储中的对象进行不中断的增量更新。MOLAP的优势在于由于经过了数据多维预处理,分析中数据运算效率高,主要的缺陷在于数据更新有一定延滞。

HOLAP:表示基于混合数据组织的OLAP实现(Hybrid OLAP),用户可以根据自己的业务需求,选择哪些模型采用ROLAP,哪些采用MOLAP。一般来说,会将非常用或需要灵活定义的分析使用ROLAP方式,而常用、常规模型采用MOLAP实现。

OLAP基本操作

ref:

https://zhuanlan.zhihu.com/p/266402829