您的位置:首页 > 数据库

分布式数据库HBase表设计

2016-06-15 12:10 225 查看
比较常用的数据库是关系型数据库,但很多场景下nosql数据库会更加擅长,从sql到nosql实施的第一步就是设计表结构,这是两种不同的思维方式,这里说下HBase表设计。

需求:需要一张stock表用于保存市场所有股票的分钟走向,即每个股票每分钟记录一次价格。

方案一:瘦表。

用stockId+datetime作为RowKey,这样方便通过stockId或datetime快速扫描获取到相关记录。

RowKeyColumnFamily “stock_cf”
stockId+datetimestock_cf:price
“00000120160615100000”10.02
“00000120160615100001”10.10
“00000120160615100002”10.08
“00000220160615100000”8.00
“00000220160615100001”8.10
“00000220160615100002”8.20
craete 'stock' , 'stock_cf'


优点:不受记录数限制,通过id查询时能很快跳过行,拥有很好的扩展性,高表也是推荐的用法。

缺点:不利于原子性,hbase只有行具备原子性。

方案二:宽表。

用stockId作为RowKey,datetime作为列,随着时间增长列会不断地增加,获取某个时间的记录将时间作为列。一个表的列族不要超过3个。

RowKeyColumnFamily “stock_cf”
stockId“stock_cf:20160615100000”“stock_cf:20160615100001”“stock_cf:20160615100003”
00000110.0210.1010.08
0000028.008.108.20
craete 'stock' , 'stock_cf'


优点:更好的事务性。

缺点:宽表列数最多到百万级别,可扩展性较差。

后面有时间会写些hbase源码及其维护的相关的文章。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: