Table of Contents

列式存储数据库

Examples of Column Store DBMSs

Hbase

Table

Row

Column

Column Family

Column Qualifier

Cell

Timestamp

Druid(德鲁依)

Cassandra

参考


列式存储数据库

列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理和即时查询。相对应的是行式数据库,数据以行相关的存储体系架构进行空间分配,主要适合于大批量的数据处理,常用于联机事务型数据处理。

列存储数据库使用一个称为 keyspace 的概念。keyspace 有点像关系模型中的模式。keyspace 包含所有列族(有点像关系模型中的表),其中包含行,包含列。

像这样,一个 keyspace 包含多个列族:

一个列族包含三行,每一行包含他们自己的列。

如上图所示:

  • 列族由多行组成。
  • 每一行可以包含与其他行不同数量的列。而且这些列不必与其他行的列匹配(例如,它们可以有不同的列名、数据类型、数量等)。
  • 每行包含一列。它不像关系数据库那样跨所有行。每个列包含一个名称/值对,以及一个时间戳。

下面是每一行的结构:

  • Row Key:每一行都有一个惟一的键,这是该行的惟一标识符。
  • Column:每个列包含名称、值和时间戳。
  • Name:KV 对的 K
  • Value:KV 对的 V
  • Timestamp:这提供了插入数据的日期和时间。这可以用来确定数据的最新版本。

一些 DBMSs 扩展了列族概念,以提供额外的功能/存储能力。例如,Cassandra 有复合列的概念,它允许您将对象嵌套在列中。

特点/优点

  • 高效的压缩效率,节省磁盘空间和计算CPU和内存
  • 基于 CPU L2 缓存高效的数据迭代
  • 压缩算法:列式数据库由于其每一列都是分开储存的。所以很容易针对每一列的特征运用不同的压缩算法。常见的列式数据库压缩算法有Run Length Encoding , Data Dictionary , Delta Compression , BitMap Index , LZO , Null Compression 等等。根据不同的特征进行的压缩效率从10W:1 到10:1 不等。而且数据越大其压缩效率的提升越为明显。
  • 延迟物化:列式数据库由于其特殊的执行引擎,在数据中间过程运算的时候一般不需要解压数据而是以指针代替运算,直到最后需要输出完整的数据时。
  • 聚合查询:由于它们的结构,柱状数据库在聚合查询(如SUM、COUNT、AVG等)方面表现得特别好。
  • 可扩展性:列式存储数据库是可伸缩的。它们非常适合大规模并行处理(MPP),这涉及到将数据分散到一个大的机器集群中——通常是数千台机器。
  • 快速查询和写入:可以非常快地加载。可以在几秒钟内加载十亿行表。几乎可以立即开始查询和分析。

Examples of Column Store DBMSs

Hbase

在 HBase 中,数据存储在具有行和列的表中。这是一个与关系数据库(rdbms)重叠的术语,但这不是一个有用的类比。相反,将 HBase 表看作多维映射是合理的。

Table

HBase 表由多行组成。

Row

HBase 的行由一个 rowkey 和一个或多个 column 组成,其中的值与它们相关联。行在存储时按行键的字母顺序排序。因此,行键的设计非常重要。其目标是以相关行彼此相邻的方式存储数据。

一个常见的 rowkey 模式是一个网站域名。如果您的 rowkey 是域,您可能应该以相反的方式存储它们(org.apache.www, org.apache.mail, org.apache.jira)。通过这种方式,所有Apache域在表中彼此接近,而不是基于子域的第一个字母展开。

Column

HBase 中的列由一个列族和一个列限定符组成,它们由一个:(冒号)字符分隔。

Column Family

出于性能原因,列族在物理上共使用一组列及其值。每个列族都有一组存储属性,比如它的值是否应该缓存在内存中,它的数据是如何压缩的,或者它的 rowkey 是如何编码的,等等。表中的每一行都有相同的列族,尽管给定行可能不会在给定列族中存储任何内容。

Column Qualifier

列限定符被添加到列族中,以提供给定数据块的索引。给定一个列族内容,一个列限定符可能是content:html,另一个可能是content:pdf。虽然列族在表创建时是固定的,但是列限定符是可变的,而且行之间可能会有很大差异。即每一行列的数量是不一样的。

Cell

Cell 是行、列族和列限定符的组合,它包含一个值和一个时间戳,时间戳表示值的版本。

Timestamp

每个值旁边都有一个时间戳,它是给定版本的值的标识符。默认情况下,时间戳表示写入数据时在 RegionServer 上的时间,也可以在将数据放入计算单元时指定不同的时间戳值。

Druid(德鲁依)

德鲁依是一个高性能的实时分析数据库。用于大数据集的 OLAP 查询。Druid 通常用作支持实时摄取、快速查询性能和高正常运行时间的用例的数据库。因此,德鲁依通常被用于支持分析应用的 GUIs,或者作为需要快速聚合的高并发 APIs 的后端。德鲁依最擅长处理面向事件的数据。

Druid 的核心架构结合了数据仓库、时间序列数据库和日志搜索系统的思想。德鲁依的一些主要特点是:

  1. 列式存储:Druid 使用面向列的存储,这意味着它只需要加载特定查询所需的精确列。这极大地提高了只访问几列的查询的速度。此外,每个列的存储都针对其特定的数据类型进行了优化,该数据类型支持快速扫描和聚合。
  2. 可扩展分布式系统:德鲁依通常部署在数十到数百台服务器的集群中,可以提供每秒数百万条记录的吞吐率,上万亿条记录的保存率,以及亚秒到几秒的查询延迟。
  3. 大规模并行处理:德鲁依可以在整个集群中并行处理一个查询。
  4. 实时或批量摄取:德鲁依可以实时或者批量的获取数据。
  5. 自愈,自平衡,操作方便:作为操作员,要减小或扩展集群,只需添加或删除服务器,集群就会在后台自动地重新平衡自己,而不会有任何停机时间。如果德鲁依的服务器失败了,系统会自动绕过失败的直到这些服务器可以被替换。德鲁依被设计成24/7运行,不需要任何原因的停机计划,包括配置变化和软件更新。
  6. 云本地的、容错的架构,不会丢失数据:一旦德鲁依摄取了你的数据,副本就会安全的存储在后端存储器中(通常是云存储,HDFS,或者共享文件系统)。就算是德鲁依的服务器坏掉了,数据也会从后端存储中恢复。对于小部分服务器不可用的情况下,副本机制可以保证服务器恢复时,数据仍然可以被查询。
  7. 快速过滤索引:Druid 使用 CONCISE 或 Roaring 的压缩位图索引来创建索引,支持跨多列的快速过滤和搜索。
  8. 基于时间的分区:德鲁依首先按时间分区数据,并且可以根据其他字段进行分区。这意味着基于时间的查询将只访问与查询的时间范围匹配的分区。这将显著提高基于时间的数据的性能。
  9. 近似算法:德鲁伊包括近似计数-区分,近似排序,近似直方图和分位数的计算算法。这些算法提供有限的内存使用,通常比精确计算快得多。对于精度比速度更重要的情况,德鲁依也提供精确的计数-清晰和精确的排名。
  10. 自动生成摄取时间:德鲁依选择性地支持数据自动汇总在摄入的时候。这种汇总在一定程度上预先聚合了您的数据,可以节省大量成本并提高性能。

哪些情况使用德鲁依:

  • 插入率非常高,但是更新不太常见。
  • 大多数查询是聚合和报告查询(“group by”查询)。您还可以进行搜索和扫描查询。
  • 您的查询延迟目标是100ms到几秒。
  • 你的数据有一个时间组件(德鲁伊包括优化和设计选择具体相关的时间)。
  • 可能有多个表,但是每个查询只访问一个大型分布式表。查询可能会碰到多个较小的“查找”表。
  • 您有较高的基数数据列(例如 url、用户 id),需要对它们进行快速计数和排序。
  • 您希望从Kafka、HDFS、本地文件或Amazon S3之类的对象存储加载数据。

Cassandra

当您需要可伸缩性和高可用性而又不影响性能时,Apache Cassandra 数据库是正确的选择。在普通硬件或云基础设施上的线性可伸缩性和经过验证的容错能力使其成为关键任务数据的完美平台。Cassandra 对跨多个数据中心复制的支持是同类产品中最好的,它为用户提供了更低的延迟,并让您安心地知道可以在区域中断中幸存下来。

参考

https://searchdatabase.techtarget.com.cn/7-20958/

http://hbase.apache.org/book.html#datamodel

https://database.guide/what-is-a-column-store-database/

https://druid.apache.org/docs/latest/design/index.html

http://cassandra.apache.org/

列存储相关概念和常见列式存储数据库(Hbase、德鲁依)相关推荐

  1. 将顺序二叉树存储序列转化为链式存储序列-c语言

    将顺序二叉树存储序列转化为链式存储序列 - 题目描述: 将给定顺序二叉树存储序列转换为链式二叉树存储序列显示 char data[13] = {'0','A','B','C','0','D','E', ...

  2. 存储笔记5 直连式存储与SCSI

    直连式存储与SCSI简介  讨论DAS的好处  描述DAS的要素  讨论DAS管理注意事项  讨论DAS面临的挑战 DAS? Uses block level protocol for dat ...

  3. 二叉树的存储结构顺序存储和链式存储

    顺序存储 实现:将一棵二叉树按照当做一棵满二叉树进行编号(从上到下,从左到右),编号作为数组的下标,一次存放到二叉树的数据元素. 当一个二叉树不是完全二叉树,那么总会有一些位置没有元素,那么就将这些位 ...

  4. 5分钟图解Hbase列式存储

    作者 | 李新杰 来源 | 微信公众号"编程新说" 行式存储 传统的数据库是关系型的,且是按行来存储的.如下图: 其中只有张三把一行数据填满了,李四王五赵六的行都没有填满. 因为这 ...

  5. 数据库—行式存储和列式存储

    1. 数据库的存储模式 1.1 关系型数据库 关系型数据库RDS(Relational Database Service),大部分为行式存储数据. 行式存储: 据以行相关的存储体系架构进行空间分配,主 ...

  6. 行式存储和列式存储的数据库

    定义 关系数据库采用的数据存储有两种方式:行式存储和列式存储(也被称为columnar或C-store) 行式存储 是按记录组织数据的数据库,将与记录相关联的所有数据彼此相邻地保存在内存中.面向行的数 ...

  7. 几张图看懂列式存储(转)

    阅读目录 1 为什么要按列存储 2补充:数据压缩 3查询执行性能 add by zhj: 终于明白了什么是列式存储,什么是行式存储.这跟数据在存储介质中的存储结构有关, 列式存储是指,一列中的数据在存 ...

  8. 为什么列式存储会被广泛用在 OLAP 中?

    大家好,我是大D. 不知是否有小伙伴们疑问,为什么列式存储会广泛地应用在 OLAP 领域,和行式存储相比,它的优势在哪里?今天我们一起来对比下这两种存储方式的差别. 其实,列式存储并不是一项新技术,最 ...

  9. 一文了解Gauss数据库:开发历程、OLTPOLAP特点、行式列式存储,及与Oracle和AWS对比

    摘要:华为在IT的底层架构,逐步搭建起自己的基础架构,建立华为生态.我们这次详解华为数据库,并对目前主流的数据库进行对比.只有对比,才能发现不同. 数据库的重要性&华为推出新一代Gauss数据 ...

最新文章

  1. 电脑人会得哪些病----------关注健康,关爱生命!
  2. 【 ML 】Newton – Raphson Iteration Procedure of TOA - Based Positioning Simulation
  3. Hashtable源码注释
  4. 运筹学的课程笔记 markov decision process
  5. Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池
  6. 浅谈 举家搬迁静态文件到CDN
  7. 通过 Lotus Domino Java 代理消费 Web 服务
  8. docker centos ssh
  9. 二维与三维之间的桥梁——点云
  10. .lastevent、!analyze(dump分析、异常错误码查询)
  11. 最大堆java构建,jvm - 无效的最大堆大小 - 堆栈内存溢出
  12. 计算机网络转本文科,江苏专转本计算机经验总结
  13. centos 时区正确,时间不对
  14. 数据库 统计数据收集 有什么作用_《原神》荒山孤剑录2/5收集汇总 荒山孤剑录作用是什么...
  15. Top 10 DTrace scripts for Mac OS X
  16. 字段定义_SAP 物料主数据增强自定义字段
  17. C++vector基础容器3.0
  18. Hdu 1301 Jungle Roads (最小生成树)
  19. 渐进符号与基本效率类型
  20. 计算机视觉方面的三大顶级会议:ICCV,CVPR,ECCV(统称ICE)

热门文章

  1. 嵌入式软件之应用调试
  2. Microsoft Store无法显示错误,真正解决!
  3. UR5+robotiq_85_gripper GAZEBO模拟视觉抓取平台仿真-1
  4. 游戏y欧系家角色设计没灵感怎么办?
  5. 实时控制软件开发第二次作业总结
  6. ffmpeg将mp3转m4a文件
  7. 搞定机械工程专业毕业设计选题推荐
  8. java中List Stream的简单使用
  9. 你想要的宏基因组-微生物组知识全在这(1909)
  10. [树莓派1] 硬件选购指南