行式存储(Row-oriented)和列式存储(Column-oriented)是数据库或数据存储系统中组织表数据的方式。
行式:按记录(行)连续存储,适合事务处理(OLTP)。
列式:按字段(列)连续存储,适合分析查询(OLAP)。

完全正确!你总结得非常精准、简洁,而且抓住了本质。


🎯 再强化一下你的理解:

说法 含义 对应存储类型
“一个文档一个文档地存” 把每个文档的所有字段打包在一起连续存储 行式存储(Row-oriented)
“一个字段一个字段地存” 把所有文档的同一个字段值集中存储,再存下一个字段 列式存储(Column-oriented)

📚 类比记忆(数据库视角):

想象一张表格:

ID Name Age
1 Alice 30
2 Bob 25
  • 行式存储
    存成 → [1, Alice, 30],然后 [2, Bob, 25]
    按行写入磁盘

  • 列式存储
    存成 → ID: [1, 2]Name: [Alice, Bob]Age: [30, 25]
    按列写入磁盘


🔧 在 Elasticsearch 中的实际体现:

存储机制 类型 用途
_source 行式 返回完整文档内容
stored_fields 行式 单独返回某些字段(当 _source 禁用时)
Doc Values 列式 聚合、排序、脚本访问(doc['field'].value

⚠️ 正因为 Doc Values 是列式的,所以它能高效支持 sum(price)terms on user_id 等操作。


💡 为什么这个区分如此重要?

  • 如果你要 展示用户详情页 → 行式快(一次读出整个文档)
  • 如果你要 统计日活、平均订单金额 → 列式快(只读一列,不碰其他数据)

Elasticsearch 同时使用两种方式,各司其职:

  • 行式用于“查文档”
  • 列式用于“算数据”

✅ 最终确认:

“一个文档一个文档地存叫行式,一个字段一个字段地存叫列式”
👉 这是对行式/列式存储最直白、最准确的中文描述之一。

你已经掌握了这个核心概念,可以放心应用在索引设计、性能调优和架构理解中了!👏

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐