虽然在概念级别,表可以被视为一系列稀疏的行,但在物理意义上它们是按照列族存储的。可以随时将新的列限定符(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
中所有列的值的请求将是:来自时间戳t6
的contents:html
的值,来自时间戳t9
的anchor:cnnsi.com
的值,来自时间戳t8
的anchor:my.look.ca
。
有关 Apache HBase 如何存储数据的内部结构的更多信息,请参见 regions.arch 。