行式数据库(Row-Oriented)
-
存储逻辑:按「行」打包存储,一行的所有列数据连续存在一起。实际存储形式:
[1, 张三, 5000, 技术部] → [2, 李四, 6000, 市场部] - 核心特点:取整行数据快,改一行数据快。
2. 列式数据库(Column-Oriented)
-
存储逻辑:按「列」打包存储,同一列的所有行数据连续存在一起。实际存储形式:
[1, 2] → [张三, 李四] → [5000, 6000] → [技术部, 市场部] - 核心特点:取某几列数据快,列聚合计算(求和 / 平均值)快。
行式数据库:适合 “高频小事务”
比如你之前问的 Oracle 11g、OceanBase 行存模式,核心支撑:
- 电商下单:需要一次性读写订单的所有字段(订单号、用户、金额、地址);
- 银行转账:需要更新账户的余额、交易时间、备注等整行数据;
- 员工信息管理:增删改查员工的姓名、薪资、部门等全量信息。核心需求:低延迟、高并发的单行 / 少数行操作。
2. 列式数据库:适合 “低频大分析”
比如 ClickHouse 做用户行为分析、TiFlash 做报表统计,核心支撑:
- 财务报表:计算 “技术部所有员工的薪资总和”(只需要「薪资」「部门」两列);
- 运营分析:统计 “近 30 天各地区的订单金额平均值”(只需要「地区」「金额」「日期」列);
- 日志分析:筛选 “某类错误日志的数量”(只需要「日志类型」「时间」列)。核心需求:批量数据聚合、多维度分析、复杂查询。
四、混合存储:行式 + 列式的折中方案(重点)
现在主流分布式数据库(如 OceanBase、TiDB)都支持 “行列混存”,兼顾 OLTP 和 OLAP:
- OceanBase:行存引擎处理交易(下单、支付),列存引擎处理实时报表;
- TiDB:TiKV(行存)处理 OLTP,TiFlash(列存)处理 OLAP;
- 核心逻辑:把 “高频事务” 放在行存,“低频分析” 放在列存,数据实时同步,既保证交易速度,又满足分析需求。