稀疏数据/数据存储区/数据库是什么意思?

Jai*_*Jai 16 database hadoop hbase sparse-matrix database-schema

最近一直在阅读Hadoop和HBase,并且遇到了这个术语 -

HBase是一个开源,分布式,稀疏,面向列的存储......

稀疏是什么意思?它与稀疏矩阵有关吗?我猜它是可以有效存储的数据类型的属性,因此,想要了解更多.

Pet*_*one 17

在常规数据库中,行是稀疏的,但列不是.创建行时,将为每个列分配存储,而不管该字段是否存在值(字段是为行和列的交集分配的存储).

这允许固定长度的行大大改善了读写时间.可变长度数据类型使用指针模拟处理.

稀疏列将导致性能损失,并且不太可能为您节省大量磁盘空间,因为指示NULL所需的空间小于链接列表样式的链接列表体系结构所需的64位指针通常用于实现非常大的非连续存储.

存储很便宜.表现不是.

  • 在某些情况下,稀疏属性可以提高HBase的性能.如果要对特定列族进行摘要,则不必检查特定值是否为Null以查看是否应包含该列. (2认同)
  • HBase 不使用“链式指针架构的链表样式”。它的架构完全不同(请参阅另一个答案中的 David 链接)。HBase 也不存储指向文件系统中其他地方保存的单元格值的指针,除非您明确告诉它。一个表可能有数百或数千列(或更多),并且列值可能相对较大(例如索引)。在这种情况下,稀疏基本上是唯一的选择。 (2认同)

Don*_*ner 5

HBase 的稀疏确实与稀疏矩阵在相同的上下文中使用。它基本上意味着空字段可以自由存储(就空间而言)。

我发现了几篇博客文章更详细地讨论了这个主题:

http://blog.rapleaf.com/dev/2008/03/11/matching-impedance-when-to-use-hbase/

http://jimbojw.com/wiki/index.php?title=Understanding_Hbase_and_BigTable