存储引擎概述

存储引擎是数据库系统的存储基座,数据库基于存储引擎进行数据的创建、查询、更新和删除等操作。根据你的需要,不同的存储引擎将提供不同的存储机制,并可与不同的执行引擎组合成为适用于特定场景的数据库微内核。

目前 YMatrix 数据库系统支持几种存储引擎的使用:

  • 基于 PostgreSQL 的 HEAP
  • AORO(Append-optimized)
  • YMatrix 自研发的 MARS3

一表速览

存储引擎 适用场景 存储格式 压缩 锁定粒度 update/delete
HEAP OLTP 类型业务 行存 仅能针对部分「大字段」做轻量级单独压缩 行锁 支持
AORO OLAP 类型业务 行存 表级别压缩 表锁 支持
MARS3 OLAP/时序类型业务 行列混存 按列压缩 行锁 支持

MARS3 存储引擎(Matrix Append-optimized Resilient Storage 3)

MARS3 存储引擎是 YMatrix 专为数据高速加载与查询设计的存储引擎。支持列存、行列混存两种模式,内部采用 LSM Tree(日志结构合并树)存储结构 —— 数据先以行存形式写入,积累到一定量后自动转换为列存(可通过 prefer_load_mode 参数配置)。

核心能力

  • 行列混存自适应:行存模式插入更快、内存消耗低;列存模式仅读取所需列,减少 I/O,搭配向量化执行引擎提升查询速度。
  • 高压缩率:支持高效数据压缩,大幅降低存储成本。
  • 完整 DML 支持:可通过 UPDATE、DELETE 语句实现数据更新与删除(Unique Mode 模式除外),支持增删列、COPY、pg_dump 等操作。
  • 多场景适配:同时满足分析型查询、事务处理、时序数据存储需求。

场景适用

  • 复杂多维分析与实时事务并存的场景(如财务系统、业务中台);
  • 数据量庞大、需平衡写入效率与查询性能的场景;
  • 需频繁进行数据更新、调整的业务(如凭证更正、数据补录)。

注意事项

  • 排序键只能指定一次,不能修改,不能新增,不能删除。

AORO(Append-Only Row-Oriented)

AORO 是一种面向分析型数据库的存储组织范式,指数据以仅追加(append-only)方式按行连续写入,不支持原地更新或删除,通过时间戳或事务 ID 维护版本,兼顾写入吞吐、查询效率与 MVCC 一致性。

核心特性

  • 支持表级压缩,适合 AP 型明细查询;
  • 支持逻辑增量备份。

适用场景

  • 大量写入、明细查询较多但更新删除少的场景(如日志存储、数据采集临时存储)

    注意事项

  • 不适合频繁更新 / 删除的业务;
  • 无法按列压缩,压缩效果有限,单字段聚合场景查询需要整行读取IO利用率较低。

HEAP 存储引擎

核心特性

  • 传统行式存储,完全兼容 PostgreSQL 存储方式;
  • 支持随机读写和完整事务功能;
  • 无数据压缩,存储空间占用较大。

适用场景

  • OLTP 系统、事务密集型应用(如订单实时处理、用户信息管理);
  • 需频繁进行随机读写、事务一致性要求高的场景;
  • 迁移自 PostgreSQL 且需保持兼容性的业务。

    注意事项

  • 分析性查询需整行读取,IO 利用效率较低,不适合大规模数据分析场景。