HBase数据模型中的键值对
逻辑HBase数据模型简单而优雅,它为各种数据提供了自然数据存储机制 - 尤其是非结构化的大数据集。
数据模型的所有部分都会收敛到键值对中。
首先,在一个我们可以将行键作为存储在HBase中的数据的世界中,最终利用数据模型组件的其余部分如何,我们如何结束?
好吧,这一切都取决于我们想要在查询中返回的数据量,我们愿意等待多长时间。
仅指定行密钥可能会返回大量数据,因为单个行可以有数百万列。
此外,只有行键工作,HBase可以返回与行键相关的每个列限定符,版本和值。
如果你只想要一个特定的列或者版本的数据,该怎么办?
从所示的示例中,如果我们只想只想要特定客户的姓氏,我们可以看到会发生什么吗?
解决方案是建立一个更复杂的键,以确认我们需要的内容。
键值对可以如下所示:Rowkey :(列族:列限定符:版本)=>值
|行钥匙|列族:{列限定符:版本:值} |
| --- - | --- |
| 00001 | customername:{'fn':
1383859182496:'约翰',
'ln':1383859182858:'史密斯',
'Mn':1383859183001:'蒂莫西' ,
'Mn':1383859182915:'t'}
1383859183030:'[email protected]',
'sa':1383859183073:'1 Hadoop Lane,NY
11111'} |
| 00002 | customername:{'fn':
1383859183103:'Jane',
'Ln':1383859183163:'Doe',
'SA':1383859185577:'7 HBase Ave,CA
22222'} |
指定键后,其余部分是可选的。
然而,我们更具体地制作查询(从左到右移动),结果越细粒。
性能会恶化,因为系统必须花更多时间定位所需的确切值或者值,但在询问完成时返回较少的数据。
所以钥匙比你想象一下,钥匙更复杂。
例如,如果我们希望在"00001"中客户的最新中间名称(或者唯一的中间名),所产生的键值对将如下所示:'00001:CustomName:Mn' =>'蒂莫西'
请记住,默认情况下使用时间戳实现版本,并按顺序排序,以便如果未指定版本,则会自动获取最新值。
如果我们想要为客户的先前初始初始初始初始初始初始初始姓名(参见表12-2),则所生效的键值对将如下所示:'00001:CustomName:Mn:1383859182915'=>'T'
我们希望HBase的各种描述开始在脑海中形成。
具体地,HBase是一个列家庭面向的数据存储和键值对数据存储。
参考HBase只是简单的"面向列"的数据存储留给了想象力。
如果我们感到好奇,则HBase - HBase中的值中没有数据类型只是一个或者多个字节。
再一次,简单但强大,因为你可以存储任何东西!