传统的行存储和(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


相关推荐: 利用 Google AI 进行 YouTube 视频 SEO 描述优化  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  如何快速搭建二级域名独立网站?  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  在Oracle关闭情况下如何修改spfile的参数  如何在云指建站中生成FTP站点?  如何在景安云服务器上绑定域名并配置虚拟主机?  如何基于云服务器快速搭建个人网站?  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  网站建设整体流程解析,建站其实很容易!  Laravel如何配置Horizon来管理队列?(安装和使用)  西安专业网站制作公司有哪些,陕西省建行官方网站?  Laravel怎么上传文件_Laravel图片上传及存储配置  ,交易猫的商品怎么发布到网站上去?  如何在 React 中条件性地遍历数组并渲染元素  Laravel如何使用Sanctum进行API认证?(SPA实战)  php 三元运算符实例详细介绍  Laravel Fortify是什么,和Jetstream有什么关系  如何在局域网内绑定自建网站域名?  Laravel如何发送系统通知?(Notification渠道示例)  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  网站制作大概多少钱一个,做一个平台网站大概多少钱?  如何做网站制作流程,*游戏网站怎么搭建?  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  Python自动化办公教程_ExcelWordPDF批量处理案例  html5的keygen标签为什么废弃_替代方案说明【解答】  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  如何挑选优质建站一级代理提升网站排名?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  php json中文编码为null的解决办法  微信h5制作网站有哪些,免费微信H5页面制作工具?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  zabbix利用python脚本发送报警邮件的方法  lovemo网页版地址 lovemo官网手机登录  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  JavaScript数据类型有哪些_如何准确判断一个变量的类型  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  做企业网站制作流程,企业网站制作基本流程有哪些?  原生JS获取元素集合的子元素宽度实例  Bootstrap整体框架之JavaScript插件架构  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  JavaScript如何实现类型判断_typeof和instanceof有什么区别  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  如何在万网利用已有域名快速建站?  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环