发布时间:2025-12-09 13:39:39 浏览次数:4
Table of Contents
列式存储数据库
Examples of Column StoreDBMSs
Hbase
Table
Row
Column
Column Family
Column Qualifier
Cell
Timestamp
Druid(德鲁依)
Cassandra
参考
列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理和即时查询。相对应的是行式数据库,数据以行相关的存储体系架构进行空间分配,主要适合于大批量的数据处理,常用于联机事务型数据处理。
列存储数据库使用一个称为 keyspace 的概念。keyspace 有点像关系模型中的模式。keyspace 包含所有列族(有点像关系模型中的表),其中包含行,包含列。
像这样,一个 keyspace 包含多个列族:
一个列族包含三行,每一行包含他们自己的列。
如上图所示:
下面是每一行的结构:
一些 DBMSs扩展了列族概念,以提供额外的功能/存储能力。例如,Cassandra 有复合列的概念,它允许您将对象嵌套在列中。
特点/优点
在 HBase 中,数据存储在具有行和列的表中。这是一个与关系数据库(rdbms)重叠的术语,但这不是一个有用的类比。相反,将 HBase 表看作多维映射是合理的。
HBase 表由多行组成。
HBase 的行由一个 rowkey 和一个或多个 column 组成,其中的值与它们相关联。行在存储时按行键的字母顺序排序。因此,行键的设计非常重要。其目标是以相关行彼此相邻的方式存储数据。
一个常见的 rowkey 模式是一个网站域名。如果您的 rowkey 是域,您可能应该以相反的方式存储它们(org.apache.www, org.apache.mail, org.apache.jira)。通过这种方式,所有Apache域在表中彼此接近,而不是基于子域的第一个字母展开。
HBase 中的列由一个列族和一个列限定符组成,它们由一个:(冒号)字符分隔。
出于性能原因,列族在物理上共使用一组列及其值。每个列族都有一组存储属性,比如它的值是否应该缓存在内存中,它的数据是如何压缩的,或者它的 rowkey 是如何编码的,等等。表中的每一行都有相同的列族,尽管给定行可能不会在给定列族中存储任何内容。
列限定符被添加到列族中,以提供给定数据块的索引。给定一个列族内容,一个列限定符可能是content:html,另一个可能是content:pdf。虽然列族在表创建时是固定的,但是列限定符是可变的,而且行之间可能会有很大差异。即每一行列的数量是不一样的。
Cell 是行、列族和列限定符的组合,它包含一个值和一个时间戳,时间戳表示值的版本。
每个值旁边都有一个时间戳,它是给定版本的值的标识符。默认情况下,时间戳表示写入数据时在 RegionServer 上的时间,也可以在将数据放入计算单元时指定不同的时间戳值。
德鲁依是一个高性能的实时分析数据库。用于大数据集的 OLAP 查询。Druid 通常用作支持实时摄取、快速查询性能和高正常运行时间的用例的数据库。因此,德鲁依通常被用于支持分析应用的 GUIs,或者作为需要快速聚合的高并发 APIs的后端。德鲁依最擅长处理面向事件的数据。
Druid 的核心架构结合了数据仓库、时间序列数据库和日志搜索系统的思想。德鲁依的一些主要特点是:
哪些情况使用德鲁依:
当您需要可伸缩性和高可用性而又不影响性能时,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/