传统的行存储和(HBase)列存储的区别「建议收藏」

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

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

1 为什么要使用列存储? 列式存储(Columnar or column-based)与传统关系型数据库的行式存储(Row-based storage)相比,两者的主要区别在于数据的组织方式:

  • 行式存储将表的数据按行顺序存储。
  • 列式存储将表的数据按列顺序存储。

让我们通过一个例子来理解这一点:

从上图可以清晰地看到,在行式存储中,一张表的所有数据都是集中在一起的,而在列式存储中,数据则是分开保存的。因此,这两种存储方式各有优缺点:

行式存储 列式存储 优点 - 数据集中存储 - 插入和更新操作简单
  • 查询时只读取相关列
  • 投影操作高效
  • 任何列都可以作为索引

缺点

  • 即使只涉及某些列,查询时也会读取所有数据

  • 选择操作后,需要重新组装选中的列

  • 插入和更新操作较为复杂

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

2 补充:数据压缩 之前我们略过了资料中提到的另一种技术:通过字典表压缩数据。为了方便后面的讲解,这里也顺便提一下。

下面是那张表的原始样子。通过字典表进行数据压缩后,表中的字符串都被转换成了数字。由于每个字符串在字典表中只出现一次,因此达到了压缩的目的(有点类似于规范化和非规范化)。

3 查询执行性能 下面是展示列式存储(以及数据压缩)优势的最重要的一张图,通过一条查询的执行过程进行说明:

关键步骤如下:

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

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


# linux  # 区别  # 为什么  # html  # 字符串  #   # column  # hbase  # 数据库  # https  # 数据压缩  # 都是  # 我是  # 成了  # 也会  # 过了  # 让我们  # 则是  # 最重要  # 你们的 


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


相关推荐: Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  Laravel Docker环境搭建教程_Laravel Sail使用指南  大学网站设计制作软件有哪些,如何将网站制作成自己app?  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  如何用PHP快速搭建CMS系统?  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  JS中对数组元素进行增删改移的方法总结  高防服务器如何保障网站安全无虞?  详解Android中Activity的四大启动模式实验简述  如何用已有域名快速搭建网站?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  详解jQuery中的事件  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  如何基于云服务器快速搭建个人网站?  怎么用AI帮你设计一套个性化的手机App图标?  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  如何确保FTP站点访问权限与数据传输安全?  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  如何在万网自助建站中设置域名及备案?  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  详解Oracle修改字段类型方法总结  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  如何快速选择适合个人网站的云服务器配置?  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  googleplay官方入口在哪里_Google Play官方商店快速入口指南  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  如何快速搭建高效可靠的建站解决方案?  免费视频制作网站,更新又快又好的免费电影网站?  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  如何在Windows虚拟主机上快速搭建网站?  历史网站制作软件,华为如何找回被删除的网站?  在centOS 7安装mysql 5.7的详细教程  香港服务器网站卡顿?如何解决网络延迟与负载问题?  教你用AI将一段旋律扩展成一首完整的曲子  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  高防服务器租用如何选择配置与防御等级?  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  桂林网站制作公司有哪些,桂林马拉松怎么报名?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  详解jQuery停止动画——stop()方法的使用  阿里云高弹*务器配置方案|支持分布式架构与多节点部署