資料庫與Key-value之間的類比
記得老師課上講過,結構化的資料的最大優點是可以將其看成一張二維表,而我們現在一般所接觸到的用來處理結構化資料的資料庫,都是由一張張二維表組成的。
RDBMS: 二維表
public String getValue(int id, Sring column);
hbase:四維表(其本質上可以看做二維表的每個value值裡又儲存了一個二維表,型別與多維陣列類似,也可百度搜索,小白鼠和毒藥的題便於理解)
public String getValue(String rowkey, String columnFamily, String column, long timestamp);
假設,我們現在,把這一張普通二維表的行值和列值當做Key值,將其對應的每個座標點的值當做value值,那麼整個張表是不是可以抽象成一個個的鍵值對的形式。
Mysql:
Key: id+ column
Value:value
hbase:
Key:rowkey+cf+column+ts
Value:value
其實所有的資料庫,都可以看做是Key-value的形式,查詢資料,就是根據Key值找value值。
在此基礎上,我們把Key值和Value值封裝成一個物件
HashMap:
String Key
Object Value
BigTable:
Object key
針對二維表:key = Object(id, column)
針對四維表:key = Object(id, cf, column, ts)
Obejct value
所以對於高維表也可以看成key-value的形式。