天天看點

分布式資料庫HBase表設計

比較常用的資料庫是關系型資料庫,但很多場景下nosql資料庫會更加擅長,從sql到nosql實施的第一步就是設計表結構,這是兩種不同的思維方式,這裡說下HBase表設計。

需求:需要一張stock表用于儲存市場所有股票的分鐘走向,即每個股票每分鐘記錄一次價格。

用stockId+datetime作為RowKey,這樣友善通過stockId或datetime快速掃描擷取到相關記錄。

RowKey

ColumnFamily “stock_cf”

stockId+datetime

stock_cf:price

“00000120160615100000”

10.02

“00000120160615100001”

10.10

“00000120160615100002”

10.08

“00000220160615100000”

8.00

“00000220160615100001”

8.10

“00000220160615100002”

8.20

優點:不受記錄數限制,通過id查詢時能很快跳過行,擁有很好的擴充性,高表也是推薦的用法。

缺點:不利于原子性,hbase隻有行具備原子性。

用stockId作為RowKey,datetime作為列,随着時間增長列會不斷地增加,擷取某個時間的記錄将時間作為列。一個表的列族不要超過3個。

stockId

“stock_cf:20160615100000”

“stock_cf:20160615100001”

“stock_cf:20160615100003”

000001

000002

優點:更好的事務性。

缺點:寬表列數最多到百萬級别,可擴充性較差。

後面有時間會寫些hbase源碼及其維護的相關的文章。

========廣告時間========

<a href="http://blog.csdn.net/wangyangzhizhou/article/details/74080321">為什麼寫《Tomcat核心設計剖析》</a>

=========================

歡迎關注:

分布式資料庫HBase表設計