一種基于HBase高表的主鍵設(shè)計(jì)方法
【專利摘要】本發(fā)明屬于數(shù)據(jù)庫(kù)存儲(chǔ)技術(shù)領(lǐng)域,特別涉及一種基于HBase高表的主鍵設(shè)計(jì)方法。本發(fā)明的具體步驟包括以應(yīng)用為中心,分析應(yīng)用中數(shù)據(jù)的事務(wù)特性、存儲(chǔ)場(chǎng)景、組成結(jié)構(gòu),并確定所述應(yīng)用模式的數(shù)據(jù)是否適用于HBase高表;若數(shù)據(jù)適用于HBase高表,分析數(shù)據(jù)的組成結(jié)構(gòu),明確主鍵的組成和排列順序,若數(shù)據(jù)不適用于HBase高表,則終止以下操作;并對(duì)主鍵進(jìn)行去重處理,對(duì)已經(jīng)去重處理過(guò)的數(shù)據(jù),設(shè)置對(duì)應(yīng)的數(shù)據(jù)檢索接口,并在應(yīng)用中使用該數(shù)據(jù)。因此本方法提供了一種在使用列式存儲(chǔ)數(shù)據(jù)庫(kù)HBase存儲(chǔ)海量數(shù)據(jù)時(shí),其數(shù)據(jù)主鍵的設(shè)計(jì)方法,該方法在設(shè)計(jì)指導(dǎo)非關(guān)系型數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)具備很強(qiáng)的通用性。
【專利說(shuō)明】
-種基于HBase高表的主鍵設(shè)計(jì)方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于數(shù)據(jù)庫(kù)存儲(chǔ)技術(shù)領(lǐng)域,特別設(shè)及一種基于皿ase高表的主鍵設(shè)計(jì)方法。
【背景技術(shù)】
[0002] 隨著信息技術(shù)的飛速發(fā)展,信息系統(tǒng)需要處理的數(shù)據(jù)量越來(lái)越大,如何有效的存 儲(chǔ)和檢索海量的數(shù)據(jù)已經(jīng)成為制約信息系統(tǒng)發(fā)展的重要瓶頸。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)經(jīng)過(guò)四 十多年的發(fā)展,在各個(gè)領(lǐng)域都取得了驕人的業(yè)績(jī),伴隨關(guān)系型數(shù)據(jù)庫(kù)也衍生出了 W數(shù)據(jù)為 中屯、的指導(dǎo)數(shù)據(jù)庫(kù)設(shè)計(jì)的設(shè)計(jì)范式。
[0003] 然而,隨著數(shù)據(jù)量的急劇增長(zhǎng),關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)越來(lái)越不能適應(yīng)業(yè)務(wù)數(shù)據(jù)的需 要,為了應(yīng)對(duì)海量的數(shù)據(jù),多種NoSQL數(shù)據(jù)庫(kù)被設(shè)計(jì)用來(lái)解決相應(yīng)領(lǐng)域的問(wèn)題,其中皿ase為 一種開(kāi)源的列式存儲(chǔ)NoS化數(shù)據(jù)庫(kù),由于NoSQL數(shù)據(jù)庫(kù)的實(shí)現(xiàn)和關(guān)系型數(shù)據(jù)庫(kù)有極大的不 同,被設(shè)計(jì)用來(lái)指導(dǎo)關(guān)系型數(shù)據(jù)庫(kù)設(shè)計(jì)的設(shè)計(jì)范式不能用來(lái)指導(dǎo)NoS化數(shù)據(jù)庫(kù)的設(shè)計(jì)。
[0004] 通常使用反范式來(lái)指導(dǎo)NoS化數(shù)據(jù)庫(kù)的設(shè)計(jì),但由于NoSQL數(shù)據(jù)庫(kù)通常為了解決特 定的目的而設(shè)計(jì),因此用來(lái)指導(dǎo)某一數(shù)據(jù)庫(kù)設(shè)計(jì)的反范式方法不能夠用來(lái)指導(dǎo)NoSQL數(shù)據(jù) 庫(kù)的設(shè)計(jì),不具有很強(qiáng)的通用性,因此亟需提出一種具備很強(qiáng)通用性的設(shè)計(jì)方法用于指導(dǎo) 數(shù)據(jù)庫(kù)的設(shè)計(jì)。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明為了克服上述現(xiàn)有技術(shù)的不足,提供了一種基于皿ase高表的主鍵設(shè)計(jì)方 法,本方法在指導(dǎo)數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)具備很強(qiáng)的通用性。
[0006] 為實(shí)現(xiàn)上述目的,本發(fā)明采用了 W下技術(shù)措施:
[0007] -種基于皿ase高表的主鍵設(shè)計(jì)方法,包括W下步驟:
[000引S1、首先分析應(yīng)用模式,確定所述應(yīng)用模式中數(shù)據(jù)的存儲(chǔ)、檢索需求,并確定所述 應(yīng)用模式的數(shù)據(jù)是否適用于皿ase高表;
[0009] S2、若數(shù)據(jù)適用于皿ase高表,分析數(shù)據(jù)的結(jié)構(gòu),明確主鍵的組成和排列順序,再進(jìn) 行步驟S3操作;若數(shù)據(jù)不適用于皿ase高表,則終止W下操作;
[0010] S3、對(duì)主鍵進(jìn)行去重處理;
[0011] S4、對(duì)已經(jīng)去重處理過(guò)的數(shù)據(jù),設(shè)置數(shù)據(jù)檢索接口;
[0012] S5、在應(yīng)用中使用已經(jīng)去重處理過(guò)的數(shù)據(jù)。
[0013] 優(yōu)選的,步驟Sl具體包括W下步驟:
[0014] SlUW應(yīng)用為中屯、,分析應(yīng)用模式中數(shù)據(jù)的事務(wù)需求;當(dāng)數(shù)據(jù)間有事務(wù)需求時(shí),不 適用于皿ase高表;當(dāng)數(shù)據(jù)間無(wú)事務(wù)需求時(shí),則數(shù)據(jù)適用于皿ase高表;
[0015] S12、W應(yīng)用為中屯、,分析應(yīng)用模式中數(shù)據(jù)的存儲(chǔ)場(chǎng)景;當(dāng)數(shù)據(jù)的并發(fā)寫(xiě)入大于每 秒鐘一萬(wàn)條記錄時(shí)或數(shù)據(jù)不更新時(shí),則數(shù)據(jù)適用于皿ase高表;
[0016] S13、W應(yīng)用為中屯、,分析應(yīng)用模式中數(shù)據(jù)的組成結(jié)構(gòu);當(dāng)數(shù)據(jù)的檢索條件組合可 W構(gòu)成主鍵時(shí),則數(shù)據(jù)適用于皿as e高表。
[0017] 優(yōu)選的,所述檢索條件組合為在日常中使用到的幾率大于80%的檢索條件。
[0018] 優(yōu)選的,所述去重處理包括在主鍵的末尾添加一個(gè)具備唯一性的UUID或在主鍵的 末尾添加一個(gè)從皿ase increament API中獲取的序號(hào)。
[0019] 進(jìn)一步的,所述數(shù)據(jù)檢索接口為皿ase Scan。
[0020] 進(jìn)一步的,所述去重處理的操作在客戶端或皿ase的協(xié)處理器來(lái)實(shí)現(xiàn)。
[0021] 本發(fā)明的有益效果在于:
[0022] 1)、本發(fā)明W應(yīng)用為中屯、,分析應(yīng)用模式中數(shù)據(jù)的事務(wù)特性、存儲(chǔ)場(chǎng)景、組成結(jié)構(gòu), 并確定所述應(yīng)用模式的數(shù)據(jù)是否適用于皿ase高表;若數(shù)據(jù)適用于皿ase高表,分析數(shù)據(jù)的 結(jié)構(gòu),明確主鍵的組成和排列順序,并對(duì)主鍵進(jìn)行去重處理,對(duì)已經(jīng)去重處理過(guò)的數(shù)據(jù),設(shè) 置對(duì)應(yīng)的數(shù)據(jù)檢索接口,并在應(yīng)用中使用該數(shù)據(jù)。因此本方法提供了一種在使用列式存儲(chǔ) 數(shù)據(jù)庫(kù)皿ase存儲(chǔ)海量數(shù)據(jù)時(shí),其數(shù)據(jù)主鍵的設(shè)計(jì)方法,該方法在設(shè)計(jì)指導(dǎo)非關(guān)系型數(shù)據(jù)庫(kù) 設(shè)計(jì)時(shí)具備很強(qiáng)的通用性。
[0023] 2)、所述去重處理包括在主鍵的末尾添加一個(gè)具備唯一性的UUID或在主鍵的末尾 添加一個(gè)從皿ase increament API中獲取的序號(hào),該方法穩(wěn)定可靠,便利簡(jiǎn)單,并且確保了 數(shù)據(jù)之間不會(huì)重復(fù),保證了數(shù)據(jù)的唯一性。
【附圖說(shuō)明】
[0024] 圖1為本發(fā)明的流程圖;
[0025] 圖2為本發(fā)明中確定應(yīng)用模式的數(shù)據(jù)適用皿ase高表的流程圖;
[0026] 圖3為本發(fā)明主鍵的構(gòu)造圖;
[0027] 圖4為本發(fā)明的車輛通行數(shù)據(jù)主鍵的構(gòu)造圖。
【具體實(shí)施方式】
[0028] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0029] 如圖1所示,一種基于皿ase高表的主鍵設(shè)計(jì)方法,包括W下步驟:
[0030] S1、分析應(yīng)用模式,確定所述應(yīng)用模式的數(shù)據(jù)的存儲(chǔ)、檢索需求,確定所述應(yīng)用模 式的數(shù)據(jù)是否適用于皿ase高表;
[0031] S2、若數(shù)據(jù)適用于皿ase高表,分析數(shù)據(jù)的組成結(jié)構(gòu),明確主鍵的組成和排列順序; 若數(shù)據(jù)不適用于皿ase高表,則終止W下操作;
[0032] S3、對(duì)主鍵進(jìn)行去重處理;
[0033] S4、對(duì)已經(jīng)去重處理過(guò)的數(shù)據(jù),設(shè)置對(duì)應(yīng)的數(shù)據(jù)檢索接口;
[0034] S5、在應(yīng)用中使用所述數(shù)據(jù)。
[0035] 為了更清楚的說(shuō)明上述步驟Sl中的具體實(shí)施流程,下面對(duì)Sl進(jìn)行具體說(shuō)明,圖2示 出了步驟Sl的具體流程,如下:
[0036] SlUW應(yīng)用為中屯、,分析應(yīng)用模式中數(shù)據(jù)的事務(wù)需求;當(dāng)數(shù)據(jù)間有事務(wù)需求時(shí),不 適用于皿ase高表;當(dāng)數(shù)據(jù)間無(wú)事務(wù)需求時(shí),則數(shù)據(jù)適用于皿ase高表;
[0037] 所述事務(wù)需求是指在更新多條數(shù)據(jù)時(shí),要么都成功,要么都失敗的一種行為。
[0038] S12、W應(yīng)用為中屯、,分析應(yīng)用模式中數(shù)據(jù)的存儲(chǔ)場(chǎng)景;當(dāng)數(shù)據(jù)的并發(fā)寫(xiě)入大于每 秒鐘一萬(wàn)條記錄時(shí)或數(shù)據(jù)不更新時(shí),則數(shù)據(jù)適用于皿ase高表;
[0039] S13、W應(yīng)用為中屯、,分析應(yīng)用模式中數(shù)據(jù)的組成結(jié)構(gòu);當(dāng)數(shù)據(jù)的檢索條件組合可 W構(gòu)成主鍵時(shí),則數(shù)據(jù)適用于皿as e高表。
[0040] 表1: 「nn/M 1
L0042J 牢輛通斤數(shù)據(jù)一股由交通卡口、電于警察前端巧備、虛擬卡口系統(tǒng)生成,W牢輛通 過(guò)交通卡口為例,每一輛車通過(guò)某一個(gè)交通卡口時(shí),就會(huì)生成一條車輛通行數(shù)據(jù),但由于車 輛通行數(shù)據(jù)越來(lái)越多,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)無(wú)法勝任如此龐大的數(shù)據(jù)量。
[0043] 如圖1~4所示,W-種基于皿ase高表的主鍵設(shè)計(jì)方法為指導(dǎo),設(shè)計(jì)車輛通行數(shù)據(jù) 存儲(chǔ)方案的過(guò)程,包括:
[0044] S1、W應(yīng)用為中屯、,分析應(yīng)用中數(shù)據(jù)的事務(wù)特性
[0045] 根據(jù)車輛通行數(shù)據(jù)的業(yè)務(wù)特性,數(shù)據(jù)生成后,通常不會(huì)進(jìn)行修改,主要W檢索查 看、挖掘分析為主,且各條車輛通行數(shù)據(jù)之間,并沒(méi)有事務(wù)的關(guān)系,因此符合皿ase高表進(jìn)行 存儲(chǔ)的條件。
[0046] S2、W應(yīng)用為中屯、,分析應(yīng)用中數(shù)據(jù)的存儲(chǔ)場(chǎng)景
[0047] 根據(jù)車輛通行數(shù)據(jù)的業(yè)務(wù)特性,數(shù)據(jù)主要應(yīng)用于對(duì)相關(guān)敏感車輛的通行記錄進(jìn)行 檢索查詢,因此運(yùn)是一種寫(xiě)多讀少的業(yè)務(wù)場(chǎng)景,系統(tǒng)需要承擔(dān)大量的并發(fā)數(shù)據(jù)寫(xiě)入,只有較 少的數(shù)據(jù)讀取,需要盡量將主鍵平均的分配在總主鍵范圍的各個(gè)區(qū)間上,從而提高寫(xiě)入性 能。
[004引S3、W應(yīng)用為中屯、,分析數(shù)據(jù)的組成結(jié)構(gòu)
[0049] 每一條車輛通行記錄都有通行時(shí)間When、卡口 Where、號(hào)碼號(hào)牌Who的S個(gè)屬性,從 理論上來(lái)說(shuō),運(yùn)=個(gè)屬性可W唯一確定一條車輛通行記錄。
[0050] 車輛通行數(shù)據(jù),通常是W車輛為目標(biāo)進(jìn)行檢索查詢,查詢的結(jié)果通常需要按照時(shí) 間進(jìn)行排序,根據(jù)主鍵設(shè)計(jì)原則,需要將主鍵按照如下順序進(jìn)行排列,號(hào)碼號(hào)牌+通行時(shí)間+ 卡口,在應(yīng)用中,可W快速的檢索出指定號(hào)碼號(hào)牌的車輛通行記錄集。
[0化1] S4、對(duì)主鍵進(jìn)行去重處理
[0052]由于套牌、前端設(shè)備識(shí)別錯(cuò)誤、時(shí)鐘不同步等原因,通常會(huì)有極少的數(shù)據(jù)出現(xiàn)組合 主鍵一致的情況,若主鍵一致,必須進(jìn)行去重處理,去重并不是將重復(fù)的數(shù)據(jù)丟棄不用,而 是將主鍵進(jìn)行擴(kuò)展,在尾部追加一個(gè)不會(huì)重復(fù)的數(shù)據(jù),從而使原本主鍵重復(fù)的數(shù)據(jù)可W同 時(shí)存儲(chǔ)在數(shù)據(jù)庫(kù)中。
[0化3] 所述去重處理包括在主鍵的末尾添加一個(gè)具備唯一性的UUID或在主鍵的末尾添 加一個(gè)從皿ase increament API中獲取的序號(hào)。
[0化4] 主鍵的去重處理,可W在客戶端實(shí)現(xiàn),也可W通過(guò)皿ase的協(xié)處理器來(lái)實(shí)現(xiàn)。
[0055] S5、針對(duì)進(jìn)行去重處理過(guò)的數(shù)據(jù),設(shè)計(jì)??诘臄?shù)據(jù)檢索接口
[0056] 由于皿ase Get操作需要明確給出數(shù)據(jù)的主鍵值,由于UUID是一個(gè)隨機(jī)生成的唯 一值,車輛通行記錄的業(yè)務(wù)主鍵為號(hào)碼號(hào)牌+通行時(shí)間+卡口,因此,當(dāng)給定業(yè)務(wù)主鍵時(shí),數(shù) 據(jù)檢索接口為皿ase Scan。
[0057] 同時(shí),為了應(yīng)對(duì)少數(shù)情況下的數(shù)據(jù)更新業(yè)務(wù),需要將數(shù)據(jù)先通過(guò)皿ase Scan API 獲取其存儲(chǔ)主鍵即號(hào)碼號(hào)牌+通行時(shí)間+卡口+UUID,再進(jìn)行數(shù)據(jù)更新。
[0058] S6、在應(yīng)用中使用該數(shù)據(jù)
[0059] 在一種基于皿ase高表的主鍵設(shè)計(jì)方法的基礎(chǔ)上,可W設(shè)計(jì)相應(yīng)的業(yè)務(wù)接口,包 括:
[0060] 1、存儲(chǔ)給定的車輛通行數(shù)據(jù);
[0061 ] 2、檢索給定業(yè)務(wù)主鍵的車輛通行數(shù)據(jù);
[0062] 3、更新給定業(yè)務(wù)主鍵的車輛通行數(shù)據(jù);
[0063] 4、給定號(hào)碼號(hào)牌,返回最新的n條數(shù)據(jù)。
[0064] 因此本發(fā)明在可W用來(lái)指導(dǎo)NoSQL數(shù)據(jù)庫(kù)的設(shè)計(jì),而且本發(fā)明具備很強(qiáng)的通用性。
【主權(quán)項(xiàng)】
1. 一種基于HBase高表的主鍵設(shè)計(jì)方法,其特征在于,包括以下步驟: 51、 首先分析應(yīng)用模式,確定所述應(yīng)用模式中數(shù)據(jù)的存儲(chǔ)、檢索需求,并確定所述應(yīng)用 模式的數(shù)據(jù)是否適用于HBase高表; 52、 若數(shù)據(jù)適用于HBase高表,分析數(shù)據(jù)的結(jié)構(gòu),明確主鍵的組成和排列順序,再進(jìn)行步 驟S3操作;若數(shù)據(jù)不適用于HBase高表,則終止以下操作; 53、 對(duì)主鍵進(jìn)行去重處理; 54、 對(duì)已經(jīng)去重處理過(guò)的數(shù)據(jù),設(shè)置數(shù)據(jù)檢索接口; 55、 在應(yīng)用中使用已經(jīng)去重處理過(guò)的數(shù)據(jù)。2. 如權(quán)利要求1所述的一種基于HBase高表的主鍵設(shè)計(jì)方法,其特征在于,步驟Sl具體 包括以下步驟: 511、 以應(yīng)用為中心,分析應(yīng)用模式中數(shù)據(jù)的事務(wù)需求;當(dāng)數(shù)據(jù)間有事務(wù)需求時(shí),不適用 于HBase高表;當(dāng)數(shù)據(jù)間無(wú)事務(wù)需求時(shí),則數(shù)據(jù)適用于HBase高表; 512、 以應(yīng)用為中心,分析應(yīng)用模式中數(shù)據(jù)的存儲(chǔ)場(chǎng)景;當(dāng)數(shù)據(jù)的并發(fā)寫(xiě)入大于每秒鐘 一萬(wàn)條記錄時(shí)或數(shù)據(jù)不更新時(shí),則數(shù)據(jù)適用于HBase高表; 513、 以應(yīng)用為中心,分析應(yīng)用模式中數(shù)據(jù)的組成結(jié)構(gòu);當(dāng)數(shù)據(jù)的檢索條件組合可以構(gòu) 成主鍵時(shí),則數(shù)據(jù)適用于HBase高表。3. 如權(quán)利要求2所述的一種基于HBase高表的主鍵設(shè)計(jì)方法,其特征在于:所述檢索條 件組合為在日常中使用到的幾率大于80 %的檢索條件。4. 如權(quán)利要求1所述的一種基于HBase高表的主鍵設(shè)計(jì)方法,其特征在于:所述去重處 理包括在主鍵的末尾添加一個(gè)具備唯一性的UUID或在主鍵的末尾添加一個(gè)從HBase increament API中獲取的序號(hào)。5. 如權(quán)利要求1所述的一種基于HBase高表的主鍵設(shè)計(jì)方法,其特征在于:所述數(shù)據(jù)檢 索接口為HBase Scan。6. 如權(quán)利要求1或4所述的一種基于HBase高表的主鍵設(shè)計(jì)方法,其特征在于:所述去重 處理的操作在客戶端或HBase的協(xié)處理器來(lái)實(shí)現(xiàn)。
【文檔編號(hào)】G06F17/30GK105956099SQ201610287545
【公開(kāi)日】2016年9月21日
【申請(qǐng)日】2016年4月28日
【發(fā)明人】劉春琿, 張躍, 周春寅, 余保華
【申請(qǐng)人】安徽四創(chuàng)電子股份有限公司