比較常用的資料庫是關系型資料庫,但很多場景下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>
=========================
歡迎關注:
