行存储(关系型数据库)与列存储(hbase,es聚合的doc_value)[通俗易懂]

发布时间 - 2025-07-11 00:00:00    点击率:

大家好,很高兴再次与大家见面,我是你们的朋友全栈君。

  1. 为什么要采用列式存储?列式存储(Columnar或column-based)与传统的关系型数据库的行式存储(Row-based storage)不同。简单来说,两者的区别在于表的组织方式:
  • 行式存储按行序列存储表。
  • 列式存储按列序列存储表。

在行式存储中,表的数据是集中在一起的,而在列式存储中,数据是被分开保存的。

行式存储 列式存储
优点 - 数据集中存储
- INSERT/UPDATE操作简便
- 只读取涉及的列,查询效率高
- 投影(projection)操作高效
- 任意列都可以作为索引
缺点 - 即使只涉及几列,选择(selection)时也会读取所有数据 - 选择操作后,需要重新组装列
- INSERT/UPDATE操作较为复杂

备注:列式数据库有利于投影操作。SQL中的投影是指从查询中选择并返回的列集合,换句话说,就是查询中SELECT后面的列。在Oracle中,首先会获取整行数据,然后从中提取指定列的数据到已知的投影中。

SELECT某个字段即为投影操作。

注:关系型数据库理论回顾 - 选择(Selection)和投影(Projection)

数据压缩:通过字典表压缩数据。下图展示了表在经过字典表压缩后的样子。通过字典表压缩,表中的字符串被转换为数字。由于每个字符串在字典表中只出现一次,从而实现了数据压缩的目的(这有点类似于规范化和非规范化的概念)。

查询执行性能:通过一个查询的执行过程来说明列式存储(以及数据压缩)的优点:

关键步骤如下:

  1. 在字典表中找到字符串对应的数字(仅进行一次字符串比较)。
  2. 使用数字在列中进行匹配,匹配上的位置设为1。
  3. 对不同列的匹配结果进行位运算,得到满足所有条件的记录下标。
  4. 使用这些下标组装出最终的结果集。

发布者:全栈程序员栈长,转载请注明出处:https://www./link/15826f19ea4eff3ab9b34f411276995c 原文链接:https://www./link/c8377ad2a50fb65de28b11cfc628d75c


# linux  # oracle  # 区别  # 为什么  # sql  # html  # select  # 字符串  #   # column  # hbase  # 数据库  # https  # 数据压缩  # 我是  # 也会  # 是指  # 你们的  # 设为  # 而在  # 很高  # 大家好  # 转载请注明 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 高防服务器如何保障网站安全无虞?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  什么是javascript作用域_全局和局部作用域有什么区别?  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  在Oracle关闭情况下如何修改spfile的参数  微信小程序 HTTPS报错整理常见问题及解决方案  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  如何用PHP快速搭建CMS系统?  ,怎么在广州志愿者网站注册?  移动端脚本框架Hammer.js  实例解析Array和String方法  如何在万网利用已有域名快速建站?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  LinuxShell函数封装方法_脚本复用设计思路【教程】  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  非常酷的网站设计制作软件,酷培ai教育官方网站?  如何用低价快速搭建高质量网站?  Python文件操作最佳实践_稳定性说明【指导】  如何快速配置高效服务器建站软件?  Laravel如何自定义错误页面(404, 500)?(代码示例)  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  phpredis提高消息队列的实时性方法(推荐)  Laravel如何实现模型的全局作用域?(Global Scope示例)  PHP正则匹配日期和时间(时间戳转换)的实例代码  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  在centOS 7安装mysql 5.7的详细教程  网站制作大概多少钱一个,做一个平台网站大概多少钱?  高性价比服务器租赁——企业级配置与24小时运维服务  jQuery validate插件功能与用法详解  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  如何在建站主机中优化服务器配置?  Python高阶函数应用_函数作为参数说明【指导】  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  Android利用动画实现背景逐渐变暗  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  魔方云NAT建站如何实现端口转发?  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  如何快速搭建高效WAP手机网站吸引移动用户?