程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> RDBMS庫表與Redis模型間的一種映射方式

RDBMS庫表與Redis模型間的一種映射方式

編輯:DB2教程

RDBMS庫表與Redis模型間的一種映射方式


Key Value 備注 類型 取值說明 Tab:id STRING 整數字符串 表主鍵tab_id取值來源
Key名規則:表名稱:id
初始值為0,每次新增記錄前調用INCR命令加1 Tab:tab_id值 HASH 列名/列值HASHMAP 主表每條記錄除主鍵以外其他列值存儲結構
Key名規則:表名稱記錄主鍵值 emp_id ename mgr_id 1 SMITH 8 2 ALLEN 8 3 SALESMAN 7 Key名稱 Value值 emp:id 3 emp:1 { ename=” SMITH”, mgr_id=”8” } emp:2 { ename=” ALLEN”, mgr_id=”8” } emp:3 { ename=” SALESMAN”, mgr_id=”7” } Key Value 備注 類型 取值說明 Tab:indices:col_idx:col_idx值 SET 所有col_idx列值等於Key中col_idx值的記錄的主鍵值集合 表非唯一索引列col_idx對應的鍵值對
Key名規則:表名稱:idices:索引列名稱:索引列數值
這樣的鍵值對可能存在多個,每個索引列取值對應一個 emp_id ename mgr_id 1 SMITH 8 2 ALLEN 8 3 SALESMAN 7 Key名稱 Value值 emp:id 3 emp:1 { ename=” SMITH”, mgr_id=”8” } emp:2 { ename=” ALLEN”, mgr_id=”8” } emp:3 { ename=” SALESMAN”, mgr_id=”7” } emp:indices:mgr_id:7 ( 3 ) emp:indices:mgr_id:8 ( 1, 2 ) Key Value 備注 類型 取值說明 Tab:uniques:col_uniq HASH col_uniq列值/對應記錄主鍵值 表非唯一索引列col_idx對應的鍵值對
Key名規則:表名稱:uniques:索引列名稱 emp_id ename email 1 SMITH [email protected] 2 ALLEN [email protected] 3 SALESMAN [email protected] Key名稱 Value值 emp:id 3 emp:1 { ename=” SMITH”, email=” [email protected]” } emp:2 { ename=” ALLEN”, email =” [email protected]” } emp:3 { ename=” SALESMAN”, email =” [email protected]” } emp:uniques:email { [email protected] = “1”, [email protected] = “2”,   [email protected] = “3”

年前一段時間,在內存數據庫選型上,還在Aerospike與Redis兩者間游移不定。因為Redis畢竟業界已經有很多成功案例,而且國內互聯網大佬們BAT也在使用,網上資源也很豐富;而Aerospike剛剛開源,在應用案例與技術資源這兩方面是一窮二白。

在游移的這段時間,也看了不少Redis的網上技術文檔和一些ORM開源實現,對關系數據庫(RDBMS)表與Redis模型間的映射方式簡單總結了下,記錄在這裡備忘。

由於Redis只是簡單的Key-Value(鍵-值)存儲系統,沒有RDBMS中表與索引概念,要在Redis中實現原有數據庫表模型的訪問方式,必須有一種模型的轉換方法,即模型間的映射方式,將RDBMS中的表與索引概念轉成Redis Key-Value對象。

後面的映射方式說明中,有個前提假設是:關系數據庫模型使用非業務含義數值序列做為主鍵。這可能與實際不符合,需根據情況進行調整。采用數值做為主鍵,主要目的是節省Redis模型索引數據的內存占用,內存能省點是點兒,地主家也沒有余糧啊。

Redis模型中所有Key-Value的創建維護,包括對應RDBMS表索引的Key-Value創建和維護,以及唯一索引的唯一性保證,都是由應用程序自身完成,Redis只負責數據保存。
表模型


另外,Redis模型中所有Key-Value的創建和維護,包括對應於RDBMS庫表索引的Key-Value創建和維護,以及唯一索引的唯一性保證,都要由應用程序自身來完成,Redis只負責數據的存儲。
表模型

RDBMS表模型
\\

Redis模型
上圖中的RDBMS模型轉換成Redis模型,各Key-Value鍵值說明如下:

舉例
例如:表emp的數據及轉換成Redis模型的數據如下:
\\


非唯一單列索引模型

RDBMS表模型
\\
表在列col_idx上建有非唯一索引。

Redis模型
上圖模型中的RDBMS索引轉換成Redis模型,索引相關Key-Value鍵值說明如下:

舉例
例如:表emp在mgr_id上建有非唯一索引,表數據及轉換成Redis模型的數據如下:
\\


唯一單列索引模型

RDBMS表模型
\\
表在列col_uniq上建有唯一索引。


Redis模型
上圖模型中的RDBMS索引轉換成Redis模型,索引相關Key-Value鍵值說明如下:

舉例
例如:表emp在email上建有唯一索引,表數據及轉換成Redis模型的數據如下:
\\


(非)唯一多列組合索引模型


RDBMS表模型
\\
表在列col_idx1、col_idx2上建有非唯一組合索引,
在列col_uniq1、col_uniq2上建有唯一組合索引。


Redis模型
上圖模型中的索引轉換成Redis模型,索引相關Key-Value鍵值說明如下:

Key

Value

備注

類型

取值說明

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved