本發(fā)明屬互聯(lián)網(wǎng)技術(shù)領(lǐng)域,具體涉及一種基于不同數(shù)據(jù)組織方式的虛擬身份管理系統(tǒng)副本策略。
背景技術(shù):
eID(electronic IDentity)全稱為公民網(wǎng)絡(luò)電子身份標(biāo)識,elD是網(wǎng)絡(luò)上遠(yuǎn)程證明個人真實(shí)身份的權(quán)威性電子信息文件。當(dāng)eID在網(wǎng)絡(luò)上遠(yuǎn)程使用時,使用基于公安人口數(shù)據(jù)庫以及elD服務(wù)平臺完成真實(shí)身份的驗(yàn)證,可在實(shí)現(xiàn)個人身份的真實(shí)性和有效性確認(rèn)的同時保護(hù)公民身份隱私,具有權(quán)威性、安全性、可追溯、方便易用等特點(diǎn)。在互聯(lián)網(wǎng)中,用戶與各種應(yīng)用、平臺下的虛擬身份之間存在著一對多的關(guān)系,而在基于eID的網(wǎng)絡(luò)環(huán)境中,上述這些對應(yīng)關(guān)系都可基于eID這個唯一標(biāo)識,而虛擬身份數(shù)據(jù)指的就是eID用戶在不同的應(yīng)用下具有的所有數(shù)據(jù)。
文獻(xiàn)[2]中的一致性hash算法是一種特殊的hash算法,當(dāng)調(diào)整hash表大小時,平均只有K/n個數(shù)據(jù)需要被重新映射,其中K是數(shù)據(jù)量的大小,n是緩沖的大小。相對地,在大多數(shù)其它hash表中,緩沖數(shù)組的變化基本上導(dǎo)致其中所有數(shù)據(jù)都需要重新映射。
文獻(xiàn)[3]中的分布式一致性hash算法就是在一致性hash算法的基礎(chǔ)之上增加了虛擬節(jié)點(diǎn)的考慮,其目的就是把hash的結(jié)果盡可能平均地分布到所有的緩沖中去,這樣可以使得所有的緩沖空間都得到利用。
文獻(xiàn)[3]中采用了Cassandra數(shù)據(jù)庫來存儲虛擬身份數(shù)據(jù),通過建立外部索引來提高查詢效率,采用Cassandra自帶的副本策略來實(shí)現(xiàn)數(shù)據(jù)的備份,合理利用 了文獻(xiàn)[1]和文獻(xiàn)[2]的技術(shù),對海量虛擬身份數(shù)據(jù)的存儲有較高的效率。但該方法是通過建立大量的外部索引來提高查詢效率,所需存儲空間較大,算法比較復(fù)雜;在副本問題上,沿用了Cassandra數(shù)據(jù)庫自帶的副本策略,將副本僅僅當(dāng)做存儲冗余來看待,并沒有合理利用副本的作用。
[1]JiaKui Zhao,PingFei Zhu,LiangHuai,Yang.Effective Data Localization Using Consistent Hashing in Cloud Time-Series Databases[J].Applied Mechanics and Materials,2013,347:2246-2251.
[2]一致性哈希改進(jìn)[EB/OL].http://blog.163.com/lin_guoqian@126/blog/static/1693687432012151010409/.
[3]鄧璐,海量虛擬身份數(shù)據(jù)的存儲管理關(guān)鍵技術(shù)研究與實(shí)現(xiàn),2010.
技術(shù)實(shí)現(xiàn)要素:
針對以上問題,本發(fā)明參考文獻(xiàn)[3]的方法選用Cassandra數(shù)據(jù)庫來存儲虛擬身份數(shù)據(jù)庫,提供一種基于不同數(shù)據(jù)組織方式的虛擬身份管理系統(tǒng)副本策略,適用于虛擬身份管理系統(tǒng)的數(shù)據(jù)副本放置問題。
本發(fā)明的技術(shù)方案如下:
一種基于不同數(shù)據(jù)組織方式的虛擬身份管理系統(tǒng)副本策略,主要包括以下步驟:
(1)虛擬身份數(shù)據(jù)劃分:將Cassandra列數(shù)據(jù)庫的按列存儲的思想應(yīng)用在虛擬身份數(shù)據(jù)上,對虛擬身份數(shù)據(jù)進(jìn)行水平劃分與垂直劃分,水平方向按照eID進(jìn)行劃分,垂直方向按照應(yīng)用程序進(jìn)行劃分;
(2)副本1的數(shù)據(jù)組織:將同一個用戶的所有數(shù)據(jù)對象存儲在一起,存儲完一個用戶的所有數(shù)據(jù)后,再存儲下一個用戶,同時,在用戶的存儲順序上,將同一個地區(qū)的用戶集中存儲并按注冊時間的先后順序進(jìn)行排序;
(3)副本2的數(shù)據(jù)組織;
(4)副本分布;
(5)數(shù)據(jù)查詢:當(dāng)客戶端要查詢數(shù)據(jù)的時候,先分析查詢語句,然后根據(jù)分析結(jié)果選擇指令發(fā)送到副本1或副本2。
進(jìn)一步的,在所述的步驟(3)中還包括以下步驟:
1)按應(yīng)用平臺對數(shù)據(jù)對象進(jìn)行劃分;
2)在各個應(yīng)用平臺內(nèi)部,按照用戶所在地區(qū)進(jìn)行劃分;
3)應(yīng)用平臺內(nèi)一個地區(qū)的用戶,按照數(shù)據(jù)副本1的方式排序;
4)如果用戶在平臺下未注冊,則直接跳過。
進(jìn)一步的,在所述的步驟(4)中還包括以下步驟:
1)將副本1和副本2分開存儲,副本1存儲在集群的奇數(shù)節(jié)點(diǎn)上,副本2存儲在集群的偶數(shù)節(jié)點(diǎn)上;
2)奇數(shù)節(jié)點(diǎn)與偶數(shù)節(jié)點(diǎn)相鄰,節(jié)點(diǎn)1與節(jié)點(diǎn)2n相鄰;
3)設(shè)定兩種不同的hash函數(shù),使計(jì)算得出的數(shù)據(jù)對象的hash值分別按副本1和副本2的數(shù)據(jù)組織方式進(jìn)行排序,然后用一致性hash算法將數(shù)據(jù)和節(jié)點(diǎn)進(jìn)行映射。
更進(jìn)一步的,在所述的步驟3)中所述的hash函數(shù)是將一個對象映射成另一個對象,可以先將對象排序,然后再根據(jù)對象的排序方式,設(shè)置hash函數(shù)。
更進(jìn)一步的,在所述的步驟3)中進(jìn)行一致性hash算法計(jì)算數(shù)據(jù)對象hash值時,將數(shù)據(jù)對象的基本單位設(shè)定為某個用戶在某個應(yīng)用下的所有數(shù)據(jù),及一個eID賬號和一個應(yīng)用名稱共同組成一個數(shù)據(jù)對象的主鍵。
進(jìn)一步的,在所述的步驟(5)中還包括以下步驟:
1)分析查詢語句,判斷是否為以用戶為主的查詢;
2)若是以用戶為主的查詢,則將指令發(fā)送到副本1,并執(zhí)行查詢操作;
3)若不是以用戶為主的查詢,則分析查詢語句,判斷是否為以應(yīng)用平臺為主的查詢;
4)若是以應(yīng)用平臺為主的查詢,則將指令發(fā)送到副本2,并執(zhí)行查詢操作;
5)若不是以應(yīng)用平臺為主的查詢,則根據(jù)當(dāng)前系統(tǒng)負(fù)載選擇副本,并執(zhí)行查詢操作。
本發(fā)明的有益效果是:傳統(tǒng)的副本策略要求相同數(shù)據(jù)的副本不能放到同一臺物理機(jī)上,但對不同數(shù)據(jù)的副本之間的放置沒有要求。本發(fā)明主要對Cassandra數(shù)據(jù)庫的副本策略進(jìn)行改進(jìn),副本數(shù)量設(shè)置為2,當(dāng)Csassandra數(shù)據(jù)庫用一致性hash算法對虛擬身份數(shù)據(jù)進(jìn)行劃分之后,將數(shù)據(jù)的副本重新組織,選用有利于查詢的劃分方法對虛擬身份數(shù)據(jù)進(jìn)行重新劃分,然后遵從相同數(shù)據(jù)副本不在同一臺物理機(jī)的規(guī)則對副本進(jìn)行放置。數(shù)據(jù)副本1的組織方式有利于將eID用戶數(shù)據(jù)分地區(qū)管理,當(dāng)需要讀取數(shù)據(jù)的時候,根據(jù)要請求數(shù)據(jù)的特點(diǎn),選擇要進(jìn)行操作的副本,從而提高數(shù)據(jù)訪問效率,使得數(shù)據(jù)副本不再只是為了災(zāi)備而進(jìn)行的冗余存儲,而是通過不同副本采用不同的數(shù)據(jù)組織方式以應(yīng)對不同的查詢請求,減少查詢時間,減少網(wǎng)絡(luò)傳輸代價,最大化系統(tǒng)效率,適用于虛擬身份管理系統(tǒng)的數(shù)據(jù)副本放置問題。
附圖說明
圖1為本發(fā)明的數(shù)據(jù)查詢流程圖。
圖2為本發(fā)明的副本分布圖。
圖3為本發(fā)明實(shí)施例1中的虛擬身份信息圖。
圖4為本發(fā)明實(shí)施例1中的副本1的組織方式圖。
圖5為本發(fā)明實(shí)施例1中的虛擬身份數(shù)據(jù)分布圖。
圖6為本發(fā)明實(shí)施例1中的副本2的組織方式圖。
具體實(shí)施方式
為了便于理解本發(fā)明,以下結(jié)合說明書附圖和實(shí)施例對本發(fā)明作進(jìn)一步說明。
本發(fā)明提供一種基于不同數(shù)據(jù)組織方式的虛擬身份管理系統(tǒng)副本策略,主要包括以下步驟:
(1)虛擬身份數(shù)據(jù)劃分:將Cassandra列數(shù)據(jù)庫的數(shù)據(jù)模型應(yīng)用在虛擬身份數(shù)據(jù)上,對虛擬身份數(shù)據(jù)進(jìn)行水平劃分與垂直劃分,水平方向按照eID進(jìn)行劃分,垂直方向按照應(yīng)用程序進(jìn)行劃分;
(2)副本1的數(shù)據(jù)組織:將同一個用戶的所有數(shù)據(jù)對象存儲在一起,存儲完一個用戶的所有數(shù)據(jù)后,再存儲下一個用戶,同時,在用戶的存儲順序上,將同一個地區(qū)的用戶集中存儲并按固定的順序進(jìn)行排序;
(3)副本2的數(shù)據(jù)組織;
(4)副本分布;
(5)數(shù)據(jù)查詢:當(dāng)客戶端要查詢數(shù)據(jù)的時候,先分析查詢語句,然后根據(jù)分析結(jié)果選擇指令發(fā)送到副本1或副本2。
本發(fā)明的開發(fā)環(huán)境:Linux操作系統(tǒng)的X86平臺,JDK1.7,采用java語言編寫,數(shù)據(jù)服務(wù)器需要安裝Cassandra1.0或更高版本的數(shù)據(jù)庫軟件,為系統(tǒng)提供數(shù)據(jù)支持。
本發(fā)明的運(yùn)行環(huán)境:服務(wù)器端運(yùn)行于安裝有Linux操作系統(tǒng)的X86平臺,JDK1.7或以上版本的多個機(jī)器節(jié)點(diǎn),客戶端為普通個人電腦。
以下為本發(fā)明的典型實(shí)施方式:
實(shí)施例1:
(1)虛擬身份數(shù)據(jù)劃分:在網(wǎng)域空間,用戶根據(jù)自己的需求在不同的應(yīng)用平臺上注冊賬號,這些應(yīng)用平臺包括電子商務(wù),社交網(wǎng)絡(luò),網(wǎng)絡(luò)游戲等。虛擬身份管理系統(tǒng)通過eID將這些信息統(tǒng)一起來,一個用戶擁有唯一的eID標(biāo)識,他在不同的應(yīng)用平臺下又擁有不同的虛擬賬戶,這些數(shù)據(jù)部結(jié)構(gòu)不一,大小不同,而且數(shù)據(jù)量巨大。將Cassandra列數(shù)據(jù)庫的數(shù)據(jù)模型應(yīng)用在虛擬身份數(shù)據(jù)上,如表1所示:
表1虛擬身份數(shù)據(jù)模型
本發(fā)明根據(jù)以上存儲模型,對虛擬身份數(shù)據(jù)進(jìn)行水平劃分與垂直劃分,水平方向按照eID進(jìn)行劃分,垂直方向上按照應(yīng)用程序進(jìn)行劃分,在進(jìn)行一致性hash算法計(jì)算數(shù)據(jù)對象hash值時,將數(shù)據(jù)對象單位設(shè)定為某個用戶在某個應(yīng)用下的所有數(shù)據(jù),及一個eID賬號和一個應(yīng)用名稱共同組成一個數(shù)據(jù)對象的“主鍵”。本發(fā)明不關(guān)注一個數(shù)據(jù)對象內(nèi)部的數(shù)據(jù)組織方式,而是主要解決不同副本數(shù)據(jù)對象之間的組織方式。
(2)副本1的數(shù)據(jù)組織方式:在實(shí)際的數(shù)據(jù)請求操作中,往往會請求某個用戶在所有應(yīng)用平臺下的虛擬身份信息,例如,用戶張三的eID數(shù)據(jù)出現(xiàn)了異 常,存在被盜的可能,此時就需要查看張三的所有虛擬身份數(shù)據(jù)。假設(shè)用戶張三一共申請了包括社交網(wǎng)絡(luò),電子商務(wù)網(wǎng)站,網(wǎng)絡(luò)游戲等8個應(yīng)用平臺,那么他在網(wǎng)域空間中的所有虛擬身份信息如圖3所示,其中一個矩形框表示一個數(shù)據(jù)對象。
如果將這些數(shù)據(jù)對象按照隨機(jī)的方式分布在數(shù)據(jù)節(jié)點(diǎn)上,那么在完成上述查詢的時候可能會跨越很多個不同的節(jié)點(diǎn),不僅影響查詢速度,還會占用網(wǎng)絡(luò)帶寬,因此,基于本發(fā)明技術(shù),數(shù)據(jù)副本1的組織方式將同一個用戶的所有數(shù)據(jù)對象存儲在一起,存儲完一個用戶的所有數(shù)據(jù)后,再存儲下一個用戶,以此類推。在用戶的存儲的順序上,考慮將同一個地區(qū)的用戶集中存儲,統(tǒng)一地區(qū)的用戶按照一個固定的順序進(jìn)行排序。這樣有利于將eID用戶數(shù)據(jù)分地區(qū)管理。最終副本1的組織方式如圖4所示。
(3)副本2的組織方式:在實(shí)際的數(shù)據(jù)請求操作中,通常會對某一個應(yīng)用平臺的數(shù)據(jù)進(jìn)行操作,例如查看淘寶網(wǎng)在各個地區(qū)的用戶情況。此時需要獲得淘寶網(wǎng)應(yīng)用的所有虛擬用戶數(shù)據(jù),淘寶網(wǎng)的虛擬身份數(shù)據(jù)分布如圖5所示。
如果將所有的數(shù)據(jù)對象按照一致性hash隨機(jī)分布在數(shù)據(jù)節(jié)點(diǎn)上或者按照副本1的方式進(jìn)行分布,在進(jìn)行這個操作的時候,同樣會跨越很多節(jié)點(diǎn),占用帶寬,較低了的集群的效率,同時數(shù)據(jù)副本2僅僅作為了副本1的冗余,并沒有把它的作用發(fā)揮到最大?;谝陨峡紤],本發(fā)明將數(shù)據(jù)副本2按照如下方式進(jìn)行組織:1、先按應(yīng)用平臺對數(shù)據(jù)對象進(jìn)行劃分;2、在各個應(yīng)用平臺內(nèi)部,按照用戶所在地區(qū)進(jìn)行劃分;3、應(yīng)用平臺內(nèi)一個地區(qū)的用戶,按照數(shù)據(jù)副本1的方式排序;4、如果某用戶在某平臺下未注冊,則直接跳過即可,如圖6所示。
(4)副本分布:本發(fā)明將副本1和副本2分開存儲,即副本1存儲在集群 其中一半節(jié)點(diǎn)上,副本2存儲在整個集群的另一半節(jié)點(diǎn)上,其分布如圖2所示。其中奇數(shù)節(jié)點(diǎn)與偶數(shù)節(jié)點(diǎn)相鄰,節(jié)點(diǎn)1與節(jié)點(diǎn)2n相鄰。選擇合適的hash函數(shù),使得數(shù)劇對象的hash值按照副本1和副本2組織方式進(jìn)行排序,然后用一致性hash算法將數(shù)據(jù)和節(jié)點(diǎn)進(jìn)行映射。至此,所有的數(shù)據(jù)副本都按照指定方法分布在了集群中。
所述的hash函數(shù)是將一個對象映射成另一個對象,可以先將對象排序,然后再根據(jù)對象的排序方式,設(shè)置hash函數(shù)。
(5)數(shù)據(jù)查詢:當(dāng)客戶端要查詢數(shù)據(jù)的時候,先分析查詢語句,然后根據(jù)分析結(jié)果選擇指令發(fā)送到副本1或副本2,其流程如圖1所示。
傳統(tǒng)的副本策略要求相同數(shù)據(jù)的副本不能放到同一臺物理機(jī)上,但對不同數(shù)據(jù)的副本之間的放置沒有要求。本發(fā)明主要對Cassandra數(shù)據(jù)庫的副本策略進(jìn)行改進(jìn),副本數(shù)量設(shè)置為2,當(dāng)Csassandra數(shù)據(jù)庫用一致性hash算法對虛擬身份數(shù)據(jù)進(jìn)行劃分之后,將數(shù)據(jù)的副本重新組織,選用有利于查詢的劃分方法對虛擬身份數(shù)據(jù)進(jìn)行重新劃分,然后遵從相同數(shù)據(jù)副本不在同一臺物理機(jī)的規(guī)則對副本進(jìn)行放置。數(shù)據(jù)副本1的組織方式有利于將eID用戶數(shù)據(jù)分地區(qū)管理,當(dāng)需要讀取數(shù)據(jù)的時候,根據(jù)要請求數(shù)據(jù)的特點(diǎn),選擇要進(jìn)行操作的副本,從而提高數(shù)據(jù)訪問效率,使得數(shù)據(jù)副本不再只是為了災(zāi)備而進(jìn)行的冗余存儲,而是通過不同副本采用不同的數(shù)據(jù)組織方式以應(yīng)對不同的查詢請求,減少查詢時間,減少網(wǎng)絡(luò)傳輸代價,最大化系統(tǒng)效率,適用于虛擬身份管理系統(tǒng)的數(shù)據(jù)副本放置問題。
以上是對本發(fā)明進(jìn)行了示例性的描述,顯然本發(fā)明的實(shí)現(xiàn)并不受上述方式的限制,只要采用了本發(fā)明技術(shù)方案進(jìn)行的各種改進(jìn),或未經(jīng)改進(jìn)將本發(fā)明的 構(gòu)思和技術(shù)方案直接應(yīng)用于其它場合的,均在本發(fā)明的保護(hù)范圍內(nèi)。