虽然在概念级别,表可以被视为一系列稀疏的行,但在物理意义上它们是按照列族存储的。可以随时将新的列限定符(column_family:column_qualifier)添加到现有列族中。

表 7. ColumnFamily webtable

Row Key Time Stamp 列族anchor
"com.cnn.www" t9 anchor:cnnsi.com = "CNN"
"com.cnn.www" t8 anchor:my.look.ca = "CNN.com"

表 8. ColumnFamily contents

Row Key Time Stamp ColumnFamily contents:
"com.cnn.www" t6 contents:html = "…​"
"com.cnn.www" t5 contents:html = "…​"
"com.cnn.www" t3 contents:html = "…​"

概念视角中显示的空单元格不占据物理存储空间。因此,在时间戳t8处对contents:html列的值的请求将不返回任何值。类似地,在时间戳t9处对anchor:my.look.ca值的请求将不返回任何值。但是,如果未提供时间戳,则将返回特定列的最新值。给定多个版本,最新版本也是第一个版本,因为时间戳按降序存储。因此,如果没有指定时间戳,则对行com.cnn.www中所有列的值的请求将是:来自时间戳t6contents:html的值,来自时间戳t9anchor:cnnsi.com的值,来自时间戳t8anchor:my.look.ca

有关 Apache HBase 如何存储数据的内部结构的更多信息,请参见 regions.arch