DBMS面向行和面向列的数据存储的区别
数据存储基本上是存储数据集合的地方,例如数据库、文件系统或目录。 在数据库系统中,它们可以以两种方式存储。 这些方式如下:
- 面向行的数据存储
- 面向列的数据存储
面向行的数据存储和面向列的数据存储之间的比较如下:
面向行的数据存储 | 面向列的数据存储 |
---|---|
数据一次存储和检索一行,因此如果需要一行中的某些数据,则可能会读取不必要的数据。 | 在这种类型的数据存储中,数据按列存储和检索,因此它只能在需要时读取相关数据。 |
面向行的数据存储中的记录易于读写。 | 在这种类型的数据存储中,与面向行相比,读写操作要慢一些。 |
面向行的数据存储最适合在线交易系统。 | 面向列的存储最适合在线分析处理。 |
这些在执行适用于整个数据集的操作时效率不高,因此面向行的聚合是一项昂贵的工作或操作。 | 这些在执行适用于整个数据集的操作方面非常有效,因此可以对许多行和列进行聚合。 |
典型的压缩机制提供的结果不如我们从面向列的数据存储中获得的结果。 | 由于列中几乎没有不同或唯一的值,这些类型的数据存储基本上允许高压缩率。 |
面向行的数据存储的最佳示例是关系数据库,它是一种结构化数据存储,也是一个复杂的查询引擎。 随着数据大小的增加,提高性能会带来很大的损失。
面向列的数据存储的最佳示例是 HBase 数据库,它基本上是从头开始设计的,以提供可伸缩性和分区,以实现高效的数据结构序列化、存储和检索。
关系型数据库和 HBase 的特点如下:
关系数据库 | HBase |
---|---|
它基本上基于固定模式。 | 它完全是无模式的。 |
它是面向行的数据存储的示例。 | 它是面向列的数据存储的一个示例。 |
它基本上是为存储标准化数据而设计的。 | 它基本上旨在存储非规范化数据。 |
它基本上包含薄表。 | 它基本上包含宽且面向稀疏的填充表。 |
它没有对分区的内置支持。 | 它基本上支持自动分区。 |