原文来自于:http://outofmemory.cn/mysql/database-compression-tech

昨天给团队内的小伙伴做了一个关于数据库压缩技术的Survey,现将其中可以公开的部分分享出来。数据库压缩技术目前已经成为了各种数据库的标配技术,这里面包括三大商业数据库、各种专业的分新型数据库,也包括各种开源数据库和NoSQL数据库。

到了今天,数据库压缩技术的运用已经不单纯是为了节省存储成本,更多的时候,是为了提供更高的计算密度(比如容量受限的SSD),以及提供更高的查询性能(OLAP)。对于压缩的有利因素,一些公共的认知是:列比行更有利于压缩,更大的输入、有序的输入更有利于压缩。

不同数据库对于压缩粒度的选择也千差万别,大多数数据库使用块作为压缩的基本单位,少数数据库会提供字段级的压缩,但也有一些数据库使用表、甚至整个库作为压缩的基本单位。很明显,压缩粒度越粗,对系统的可用性影响越大,表级以上的压缩粒度通常不再被认为是数据库本身支持了压缩技术。

除了压缩粒度之外,存储格式的选择对应用场景也比较重要,比如行存适合于宽查询(访问少数行和多数列),面向投影优化(OLTP);而列存适合于窄查询(访问多数行和少数列),面向Filter优化(OLAP);两者的混合体是所谓的块内按列压缩,块间按行组织,即行列混合存储(PAX),典型的代表是ORACLE EXADATA的HCC。

虽然是一种标配,但不同数据库对于数据库压缩技术的实现几乎各不相同,但总体上可以分为三个层次:1)Packing,比如消除小整数的前端0,消除CHAR的尾部空格等,这类压缩技术通常发生在OLTP系统中,粒度通常为字段级别,系统通常会提供正常和紧缩的两种存储格式;2)Encoding,也就是规则压缩,典型的方法包括字典、RLE、前缀、差值等,相关技术的细节,在参考资料里有详细的论述;3)Compression,也就是后端压缩,即直接使用通用的压缩算法,比如Snappy、Zlib、BZip等。

所有商业数据库和专业的分析型数据库都会引入不同的Encoding方法,而不会直接使用Compression。道理很简单,首先,Encode比Compression更懂数据,因为Compression总是把数据看成连续的字节流,而Encoding知道每个字段的边界、类型和值域特征,所以Encoding+Compression会比仅使用Compression能提供更高的压缩率;第二,Encoding会提供更高的解码速度,因为哪怕是最快的Snappy,也需要把数据完全解压后才可查询,而大多数Encoding方法不需要解码即可查询;最后,Encoding会提供合理的编码速度,虽然比不过Snappy,但会远超Zlib、Bzip这样的对手。

下面给出一个数据库压缩技术的Survey:

以下给出一些数据库压缩技术有用的链接:

转载于:https://www.cnblogs.com/guoyongrong/p/4261587.html

转:关于数据库压缩技术的Survey相关推荐

  1. 几种主流数据库的压缩技术对比

    原文链接:http://blog.inkernel.info/archives/1.html 压缩功能几乎是当前主流数据库的标配功能,除了能够节省存储空间外,在IO密集型的系统中, 可能也会带来性能的 ...

  2. 支持百亿数据场景,海量高性能列式数据库HiStore技术架构解析

    支持百亿数据场景,海量高性能列式数据库HiStore技术架构解析 HiStore介绍 HiStore是阿里中间件团队研发的数据库产品,是一款基于独特的知识网格技术的列式数据库,定位于海量数据高压缩比列 ...

  3. 海量高性能列式数据库HiStore技术架构解析

    HiStore 介绍 HiStore是阿里中间件团队研发的数据库产品,是一款基于独特的知识网格技术的列式数据库,定位于海量数据高压缩比列式存储,是低存 储成本,低维护成本,海量数据OLAP存储引擎;有 ...

  4. 【ELT.ZIP】OpenHarmony啃论文俱乐部——点燃主缓存压缩技术火花

    本文出自ELT.ZIP团队,ELT<=>Elite(精英),.ZIP为压缩格式,ELT.ZIP即压缩精英. 成员: 上海工程技术大学大二在校生 合肥师范学院大二在校生 清华大学大二在校生 ...

  5. 浅谈存储重删压缩技术(一)

    浅谈存储重删压缩技术(一) 作为一个做企业存储市场的存储人,最近两年我不断被重删压缩撩拨着.对于重删压缩这个技术的好坏,真实需求还是伪需求大家看法不一.今天我就只能谈谈我个人的看法.更多观点请关注&q ...

  6. 太空夜景_太空深度学习的模型压缩技术概述

    太空夜景 By Hannah Peterson and George Williams (gwilliams@gsitechnology.com) 汉娜·彼得森 ( Hannah Peterson)和 ...

  7. 深度学习模型压缩技术概览

    背景介绍 目录 背景介绍 什么是模型压缩? 剪枝 非结构化剪枝 结构化剪枝 量化 低秩近似(Low-rank approximation) 知识蒸馏(Knowledge distillation) 神 ...

  8. DSG-SnapAssure数据库备份技术简述

    1      为什么采用磁盘作为备份介质 长期以来,磁带以其经济高效的性能,一直是数据备份的标准介质.但是,与传统的磁带备份方式相比,采用磁盘备份的优势更为明显:备份和恢复速度快,而且是一种更可靠的备 ...

  9. 数据库查询优化技术(一):数据库与关系代数

    数据库查询优化技术 学习笔记(一) 我是看李海翔的<数据库技术丛书·数据库查询优化器的艺术:原理解析与SQL性能优化>这本书的视频讲解学习的,因为数据库的知识学的不多,直接看优化有些吃力, ...

最新文章

  1. Nature Methods:基于人工重组菌群数据的宏基因组的软件评估金标准
  2. R语言进行主成分分析(PCA):使用prcomp函数来做主成分分析、使用summary函数查看主成分分析的结果、计算每个主成分解释方差的、每个主成分解释的方差的比例、以及多个主成分累积解释的方差比例
  3. Spring配置文件applicationContext.xml的两种拆分方式
  4. php正则重复匹配,php – 用于匹配任何长度的所有重复子串的正则表达式
  5. UVA 10895——Matrix Transpose
  6. Kibana将语言设置为中文
  7. 安装和使用openBMC官网维护的qemu
  8. PSD格式截图软件 ScreenToLayers 1.2.3中文版
  9. Kafka-安装和使用
  10. 移动应用开发课堂总结
  11. [计算机网络]第二章——应用层
  12. Ubuntu的商业模式
  13. google快速翻译英文网站
  14. VS2008安装盘整合sp1补丁
  15. 瑞星安全随身WiFi:为用户WiFi上网安全保驾护航
  16. 手把手教你编写脚本批量实现k8s镜像部署
  17. 俞军:用户不是人,是需求的集合
  18. 51单片机升国旗项目的简单分析,以及涉及到的模块配置与使用
  19. 最简单的需求分析方法论
  20. Laravel 5.8简明教程

热门文章

  1. c语言if中文字符串比较好,如何在C语言中使用汉字作为if的判断语句?
  2. 远程登录telnet 连接失败的解决方法
  3. laydate 和 Vue 奇怪的清空问题
  4. DNA序列 LOJ NOIP模拟赛 D1T1 字符串哈希
  5. Java IO流(概述)
  6. 三菱基于雷诺平台推全新跑车 搭1.1T引擎
  7. 各大搜索引擎提交地址
  8. 数据结构与算法 汉诺塔问题和列车车厢重排问题
  9. c# vscode 配置_用VS Code写C#
  10. anaconda安装python包_Anaconda:安装或更新 Python 第三方包