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

列存储相关概念和常见列式存储数据库(Hbase、德鲁依)TableofContents列式存储数据库ExamplesofColumnStoreDBMSsHbaseTableRowColumnColumnFamilyColumnQualifierCellTimestampDruid(德鲁依)Cassandra参考列式存储数据库列式数据库是以列相关存储架构进行数据存储的数据库,主要…

大家好,又见面了,我是你们的朋友全栈君。

Table of Contents

列式存储数据库

Examples of Column Store DBMSs

Hbase

Table

Row

Column

Column Family

Column Qualifier

Cell

Timestamp

Druid(德鲁依)

Cassandra

参考


列式存储数据

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

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

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

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

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

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

如上图所示:

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

下面是每一行的结构:

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

  • 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/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159104.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 统计学 入门基础PDF( Probability Density Function) 和PMF ( Probability Mass Function )

    统计学 入门基础PDF( Probability Density Function) 和PMF ( Probability Mass Function )PMF(概率质量函数):是对 离散随机变量的定义. 是离散随机变量 在各个特定取值的概率. 该函数通俗来说,就是对于一个离散型概率事件来说,使用这个函数来求它的各个成功事件结果的概率.PDF(概率密度函数):是对连续性随机变量的定义.与PMF不同的是PDF在特定点上的值并不是该点的概率,连续随机概率事件只能求一段区域内发生事件的概率,通过对这段区间进

    2022年5月23日
    44
  • MongoDB入门简单介绍

    MongoDB入门简单介绍

    2021年12月7日
    39
  • 设置Windows7下VMware虚拟机上网[通俗易懂]

    设置Windows7下VMware虚拟机上网[通俗易懂]设置Windows7下VMware虚拟机上网升级到WIN7后,发现VMware无法通过NAT方式上网了,很多网友都遇到这样的问题,而且一直没有找到好的解决办法。其实只要通过HOST-ONLY方式就可以上网。  步骤/方法上网方式设成HOST-ONLY(如图1)。主机物理网卡设置共享(如图2)家庭

    2022年5月19日
    154
  • java程序设计图书管理系统源码(java图书管理系统设计报告)

    图书管理系统需实现的功能如下:(1)用户管理:包括用户的注册于登录。(2)图书管理:包括录入、查询、修改和删除图书信息。(3)借书:包括借阅图书和查看借书记录。(4)还书:包括还书和查看还书记录。(5)为了保证系统安全,进入系统时,对用户登录的密码进行加密与解密。源码、课程设计报告、数据库表图的百度网盘链接:https://pan.baidu.com/s…

    2022年4月12日
    78
  • 中级java笔试题_Java中级面试题合集[通俗易懂]

    中级java笔试题_Java中级面试题合集[通俗易懂]Java中级面试题合集:1.弹出式选择菜单(Choice)和列表(List)有什么区别Choice是以一种紧凑的形式展示的,需要下拉才能看到所有的选项。Choice中一次只能选中一个选项。List同时可以有多个元素可见,支持选中一个或者多个元素。2.如何确保N个线程可以访问N个资源同时又不导致死锁?使用多线程的时候,一种非常简单的避免死锁的方式就是:指定获取锁的顺序,并强制线程按照指定的顺序获取锁…

    2022年6月25日
    28
  • Pycharm和Anaconda的python版本问题

    Pycharm和Anaconda的python版本问题问题描述:Pycharm需要导入tensorflow库,但现在的python版本为3.8,不支持导入。于是想办法在Anaconda新建python3.6环境,之后再用于Pycharm开发。1.anaconda创建新的python版本环境2.找到新建python3.6的文件位置,点击python36切换时会显示位置:3.pycharm里新建环境,以第二步的python3.6环境为基础环境:导包时可能会出现问题:zeroexitcode(2)这是因为pip版本问题,使用

    2022年8月28日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号