本發(fā)明涉及數(shù)據(jù)庫領(lǐng)域,尤其涉及一種數(shù)據(jù)隔離以及查詢的方法和裝置。
背景技術(shù):
::基于內(nèi)存的鍵值模式數(shù)據(jù)庫,通常應(yīng)用于高并發(fā)、高吞吐、低時(shí)延要求的場景下,性能是其核心設(shè)計(jì)訴求。而在管理方面,常見的數(shù)據(jù)庫往往只提供簡單的安全口令認(rèn)證,同時(shí)不提供用戶空間、數(shù)據(jù)隔離等手段,同時(shí)在面向大覆蓋范圍的統(tǒng)計(jì)上存在缺陷。在大數(shù)據(jù)運(yùn)營型企業(yè)的生產(chǎn)實(shí)踐中,其面向多個客戶同時(shí)提供服務(wù)的特點(diǎn),以及共享硬件資源提升資源利用率的需求,必然要求對于傳統(tǒng)的內(nèi)存數(shù)據(jù)庫提供區(qū)分可定制場景的數(shù)據(jù)隔離。技術(shù)實(shí)現(xiàn)要素:本發(fā)明所要解決的一個技術(shù)問題是:如何實(shí)現(xiàn)數(shù)據(jù)庫中數(shù)據(jù)的隔離功能。根據(jù)本發(fā)明實(shí)施例的一個方面,提供了一種數(shù)據(jù)隔離方法,包括:根據(jù)二級鍵K2和一級鍵生成參數(shù)構(gòu)建生成一級鍵K1;將(K2,V)存儲到定制對象DO中;采用(K1,DO)的數(shù)據(jù)存儲形式存儲鍵值數(shù)據(jù);其中,一級鍵K1為定制對象DO的邏輯鍵,二級鍵K2為定制對象DO的數(shù)據(jù)鍵,V為定制對象DO的數(shù)據(jù)值。根據(jù)本發(fā)明實(shí)施例的另一個方面,提供了一種數(shù)據(jù)查詢方法,包括:根據(jù)二級鍵K2和一級鍵生成參數(shù)構(gòu)建生成一級鍵K1;根據(jù)一級鍵K1查找到定制對象DO;根據(jù)二級鍵K2取出定制對象DO中的數(shù)據(jù)值V。根據(jù)本發(fā)明實(shí)施例的又一個方面,提供了一種數(shù)據(jù)隔離裝置,包括:一級鍵K1生成模塊,用于根據(jù)二級鍵K2和一級鍵生成參數(shù)構(gòu)建生成一級鍵K1;鍵值數(shù)據(jù)存儲模塊,用于將(K2,V)存儲到定制對象DO中,并用于采用(K1,DO)的數(shù)據(jù)存儲形式存儲鍵值數(shù)據(jù);其中,一級鍵K1為定制對象DO的邏輯鍵,二級鍵K2為定制對象DO的數(shù)據(jù)鍵,V為定制對象DO的數(shù)據(jù)值。根據(jù)本發(fā)明實(shí)施例的再一個方面,提供了一種數(shù)據(jù)查詢裝置,包括:一級鍵K1生成模塊,用于根據(jù)二級鍵K2和一級鍵生成參數(shù)構(gòu)建生成一級鍵K1;定制對象DO查找模塊,用于根據(jù)一級鍵K1查找到定制對象DO;鍵值對取值模塊,用于根據(jù)二級鍵K2取出定制對象DO中的數(shù)據(jù)值V。本發(fā)明在鍵值存儲模式的基礎(chǔ)上構(gòu)建邏輯層,從而實(shí)現(xiàn)了數(shù)據(jù)庫中數(shù)據(jù)的隔離功能。通過以下參照附圖對本發(fā)明的示例性實(shí)施例的詳細(xì)描述,本發(fā)明的其它特征及其優(yōu)點(diǎn)將會變得清楚。附圖說明為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1示出本發(fā)明數(shù)據(jù)隔離方法的一個實(shí)施例的流程示意圖。圖2示出本發(fā)明數(shù)據(jù)查詢方法的一個實(shí)施例的流程示意圖。圖3示出本發(fā)明數(shù)據(jù)隔離裝置的一個實(shí)施例的結(jié)構(gòu)示意圖。圖4示出本發(fā)明數(shù)據(jù)查詢裝置的一個實(shí)施例的結(jié)構(gòu)示意圖。圖5示出本發(fā)明一級鍵K1的數(shù)據(jù)庫段、數(shù)據(jù)表段、表分區(qū)段組成部分之間的對應(yīng)關(guān)系示意圖。圖6示出本發(fā)明采用K1-K2-V的形式進(jìn)行數(shù)據(jù)存儲的結(jié)構(gòu)示意圖。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。以下對至少一個示例性實(shí)施例的描述實(shí)際上僅僅是說明性的,決不作為對本發(fā)明及其應(yīng)用或使用的任何限制?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。下面結(jié)合圖1描述本發(fā)明一個實(shí)施例的數(shù)據(jù)隔離方法。圖1示出本發(fā)明數(shù)據(jù)隔離方法的一個實(shí)施例的流程示意圖。如圖1所示,該實(shí)施例的數(shù)據(jù)隔離方法包括:步驟S102,根據(jù)二級鍵K2和一級鍵生成參數(shù)構(gòu)建生成一級鍵K1。步驟S104,將(K2,V)存儲到定制對象DO中。步驟S106,采用(K1,DO)的數(shù)據(jù)存儲形式存儲鍵值數(shù)據(jù)。其中,一級鍵K1為定制對象DO的邏輯鍵,二級鍵K2為定制對象DO的數(shù)據(jù)鍵,V為定制對象DO的數(shù)據(jù)值。定制對象DO例如可以通過MAP的形式存儲在內(nèi)存集群數(shù)據(jù)庫中。優(yōu)選的,一級鍵K1可以由數(shù)據(jù)庫段、數(shù)據(jù)表段、表分區(qū)段組成,從而在Redis集群上提供數(shù)據(jù)庫、數(shù)據(jù)表、分區(qū)的數(shù)據(jù)組織方式。其中,數(shù)據(jù)庫db是最大的數(shù)據(jù)隔離單位,是一個邏輯概念。用戶可以創(chuàng)建多個數(shù)據(jù)庫。一般來說,一類的數(shù)據(jù)應(yīng)放在一個內(nèi)存數(shù)據(jù)庫中。數(shù)據(jù)表table是一類主題、業(yè)務(wù)、概念相同數(shù)據(jù)的集合,如用戶表、明細(xì)表等,是一個邏輯概念。表分區(qū)partition是基于Redis集群特性,將大數(shù)據(jù)表進(jìn)一步邏輯拆分的單位。不同分區(qū)中的數(shù)據(jù)是分開存儲,使數(shù)據(jù)的分布更加均勻。此外,數(shù)據(jù)庫、數(shù)據(jù)表、分區(qū)這些邏輯概念可以用元數(shù)據(jù)來描述。用于存儲元數(shù)據(jù)的鍵名為STORE,值類型為Hash(哈希表)。所有元數(shù)據(jù)信息,都存放在以STORE為鍵的哈希表下。所有數(shù)據(jù)庫的元數(shù)據(jù)描述信息都以Key-Value的形式保存在元數(shù)據(jù)庫中(哈希表),數(shù)據(jù)庫的鍵名可以為DB_[數(shù)據(jù)庫名]。所有數(shù)據(jù)表的元數(shù)據(jù)描述信息都 以Key-Value的形式保存在元數(shù)據(jù)庫中(哈希表)。數(shù)據(jù)表的鍵名可以為TB_[數(shù)據(jù)庫名]_[數(shù)據(jù)表名],從而在鍵名上體現(xiàn)數(shù)據(jù)表與數(shù)據(jù)庫的關(guān)系。數(shù)據(jù)分區(qū)是數(shù)據(jù)表的進(jìn)一步邏輯劃分,數(shù)據(jù)分區(qū)以元數(shù)據(jù)的方式保存的數(shù)據(jù)表的元數(shù)據(jù)中。數(shù)據(jù)分區(qū)的鍵名可以為[數(shù)據(jù)庫名]_[數(shù)據(jù)表名]_[分區(qū)名]。一級鍵K1的數(shù)據(jù)庫段、數(shù)據(jù)表段、表分區(qū)段組成部分之間的對應(yīng)關(guān)系如圖5所示。采用K1-K2-V的形式進(jìn)行數(shù)據(jù)存儲的存儲結(jié)構(gòu)如圖6所示。下面列舉說明上述的數(shù)據(jù)隔離方法。數(shù)據(jù)庫進(jìn)行全國人口的姓名和民族存儲,準(zhǔn)備按“省”統(tǒng)計(jì)人口數(shù)量,以及按“省+性別”統(tǒng)計(jì)人口數(shù)量。傳統(tǒng)的鍵值數(shù)據(jù)庫只能按照全庫掃描并分類判斷的方式進(jìn)行。針對按“省”統(tǒng)計(jì)人口數(shù)量的業(yè)務(wù)需求,本發(fā)明基于數(shù)據(jù)庫中的定制對象“身份證-姓名”以及生成參數(shù)“省份”,可以將K1設(shè)計(jì)為“人口庫-姓名表-省份”的形式,其中,省份可以通過身份證號K2在存儲時(shí)獲得。針對按“省+性別”統(tǒng)計(jì)人口數(shù)量的業(yè)務(wù)需求,本發(fā)明基于數(shù)據(jù)庫中的定制對象“身份證-民族”以及生成參數(shù)“省份、性別”,可以將K1設(shè)計(jì)為“人口庫-民族表-省份|性別”形式。其中省份和性別都可以通過身份證號K2在存儲時(shí)獲得。“人口庫”、“姓名表”、“民族表”關(guān)鍵字可以在業(yè)務(wù)中預(yù)定義。這樣,由于存在31個省份和2個性別,整體K1的數(shù)量為31×2=64個,比12億的人口基數(shù)有本質(zhì)性下降。在本實(shí)施例中,鍵值數(shù)據(jù)庫采用兩段式存儲設(shè)計(jì)。用戶數(shù)據(jù)不直接存儲為Key-Value,而是以K1-K2-V的形式保存在以db_table_partition三個維度組成的K1的哈希表類型的value中。通過構(gòu)建邏輯鍵K1并采用K1-K2-V的數(shù)據(jù)存儲形式存儲鍵值數(shù)據(jù),實(shí)現(xiàn)了數(shù)據(jù)的隔離。同時(shí),K1可以用作數(shù)據(jù)的組織和管理,不會被用戶看到。此外,本實(shí)施例可以在傳統(tǒng)的鍵值數(shù)據(jù)庫基礎(chǔ)上進(jìn)行進(jìn)一步的接口邏輯層設(shè)計(jì),易于實(shí)現(xiàn),不需要對傳統(tǒng)的鍵值數(shù)據(jù)庫做很大的改動。下面結(jié)合圖2描述本發(fā)明一個實(shí)施例的數(shù)據(jù)查詢方法。圖2示出本發(fā)明數(shù)據(jù)查詢方法的一個實(shí)施例的流程示意圖。如圖 2所示,該實(shí)施例的數(shù)據(jù)查詢方法包括:步驟S202,根據(jù)二級鍵K2和一級鍵生成參數(shù)構(gòu)建生成一級鍵K1。K1的構(gòu)建生成方法與數(shù)據(jù)存儲隔離時(shí)采用的方法一致,并且具體構(gòu)建過程可以參考前述實(shí)施例的描述。步驟S204,根據(jù)一級鍵K1查找到定制對象DO。步驟S206,根據(jù)二級鍵K2取出定制對象DO中的數(shù)據(jù)值V??蛇x的,一級鍵K1可以由數(shù)據(jù)庫段、數(shù)據(jù)表段、表分區(qū)段組成。此外,定制對象DO可以通過MAP形式存儲。K1被設(shè)計(jì)為“人口庫-民族表-省份|性別”形式,在檢索時(shí),如果單體檢索,通過輸入身份證號K2,可以計(jì)算出省份和性別,然后通過K2和一級鍵生成參數(shù)“省份、性別”得到一級鍵K1。在數(shù)據(jù)庫中輸入K1后,可以得到定制對象K2-V,然后再用身份證號K2檢索定制對象的值。同時(shí),利用數(shù)據(jù)庫還可以對某一類對象進(jìn)行統(tǒng)計(jì)。在統(tǒng)計(jì)時(shí),首先可以計(jì)算Partition部分的值,利用Partition部分的值檢索出定制對象,然后針對定制對象進(jìn)行復(fù)雜度O(0)的size操作,獲得人口數(shù)。采用上述方法在數(shù)據(jù)庫中進(jìn)行對象的查詢和統(tǒng)計(jì)操作,可以大幅降低運(yùn)算的復(fù)雜度,使得查詢和統(tǒng)計(jì)操作更加高效的進(jìn)行。下面結(jié)合圖3描述本發(fā)明一個實(shí)施例的數(shù)據(jù)隔離裝置。圖3示出本發(fā)明數(shù)據(jù)隔離裝置的一個實(shí)施例的結(jié)構(gòu)示意圖。如圖3所示,該實(shí)施例的數(shù)據(jù)隔離裝置30包括:一級鍵K1生成模塊302,用于根據(jù)二級鍵K2和一級鍵生成參數(shù)構(gòu)建生成一級鍵K1。鍵值數(shù)據(jù)存儲模塊304,用于將(K2,V)存儲到定制對象DO中,并采用(K1,DO)的數(shù)據(jù)存儲形式存儲鍵值數(shù)據(jù)。其中,一級鍵K1為定制對象DO的邏輯鍵,二級鍵K2為定制對象DO的數(shù)據(jù)鍵,V為定制對象DO的數(shù)據(jù)值??蛇x的,一級鍵K1由數(shù)據(jù)庫段、數(shù)據(jù)表段、表分區(qū)段組成。此外,鍵值數(shù)據(jù)存儲模塊還可以用于將定制對象以MAP的形式 存儲。下面結(jié)合圖4描述本發(fā)明一個實(shí)施例的數(shù)據(jù)查詢裝置。圖4示出本發(fā)明數(shù)據(jù)查詢裝置的一個實(shí)施例的結(jié)構(gòu)示意圖。如圖4所示,該實(shí)施例的數(shù)據(jù)查詢裝置40包括:一級鍵K1生成模塊402,用于根據(jù)二級鍵K2和一級鍵生成參數(shù)構(gòu)建生成一級鍵K1。定制對象DO查找模塊404,用于根據(jù)一級鍵K1查找到定制對象DO。鍵值對取值模塊406,用于根據(jù)二級鍵K2取出定制對象DO中的數(shù)據(jù)值V??蛇x的,根據(jù)二級鍵K2和一級鍵生成參數(shù)構(gòu)建生成一級鍵K1包括:一級鍵K1由數(shù)據(jù)庫段、數(shù)據(jù)表段、表分區(qū)段組成。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計(jì)算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3