亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于非關(guān)系型數(shù)據(jù)庫的大數(shù)據(jù)分布式存儲技術(shù)

        2023-08-07 09:20:42劉志強
        科技創(chuàng)新與應(yīng)用 2023年22期
        關(guān)鍵詞:分片哈希路由

        劉志強

        (山東財經(jīng)大學(xué) 管理科學(xué)與工程學(xué)院,濟南 250000)

        在分布式存儲系統(tǒng)中,數(shù)據(jù)分散存儲,并且數(shù)據(jù)類型多樣,如何快速、精準地查詢到需要的數(shù)據(jù)成為系統(tǒng)使用者關(guān)心的焦點問題。非關(guān)系型數(shù)據(jù)庫具有極強的擴展性,可根據(jù)數(shù)據(jù)存儲需要靈活增、刪節(jié)點,并始終保證不同節(jié)點之間的負載平衡。除此之外,非關(guān)系型數(shù)據(jù)庫還能利用鍵值對實現(xiàn)對目標數(shù)據(jù)的快速查詢?;诖耍疚奶岢隽艘环N基于非關(guān)系型數(shù)據(jù)庫的大數(shù)據(jù)分布式存儲技術(shù),并對其應(yīng)用效果展開了實驗探究。

        1 非關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)存儲結(jié)構(gòu)

        1.1 BSON 文檔系統(tǒng)

        BSON 是一種輕量的二進制格式文件,其功能是把文檔轉(zhuǎn)換成格式統(tǒng)一的字節(jié)或字符串,從而使BSON 文件可以在不同的驅(qū)動程序之間實現(xiàn)數(shù)據(jù)共享。像內(nèi)嵌文檔查詢語句,以及驅(qū)動程序中插入的文檔等,都必須將其轉(zhuǎn)換成BSON 格式,才能支持查詢功能和驅(qū)動功能的實現(xiàn)。BSON 文檔分析流程如下:使用BSON Document 新建一個普通文檔,文檔內(nèi)容為“zhangll”;然后建立一個字節(jié)數(shù)組,作用是存放BSON文檔的轉(zhuǎn)換結(jié)果。之后,Documet 會根據(jù)設(shè)定好的轉(zhuǎn)換規(guī)則,將文檔內(nèi)容轉(zhuǎn)換成為二進制數(shù)組25、0、0、0、2、109、121、116、101、115、116、0、8、0、0、0、122、104、97、110、103、108、108、0、0。

        該二進制數(shù)組共包含25 個字節(jié),其中第1—4 字節(jié)表示BSON 文檔的長度;第5 字節(jié)表示元素類型,即字符串型變量(string)型;第6—11 字節(jié)為文檔內(nèi)容“zhangll”的二進制編碼;第12—13 字節(jié)表示元素的長度;第14—23 字節(jié)是元素內(nèi)容的二進制;最后2 個字節(jié)分別表示子文檔和文檔的結(jié)束符。在非關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)存儲結(jié)構(gòu)上,以BSON 文檔形式保存數(shù)據(jù),具有效率更高、性能優(yōu)越等優(yōu)勢。

        1.2 GridFS 大文件存儲系統(tǒng)

        在非關(guān)系型數(shù)據(jù)庫中,常用持久化存儲文件模塊(GridFS)存儲大二進制文件。從應(yīng)用效果來看,以GridFS 文件保存數(shù)據(jù),可以擺脫對獨立存儲架構(gòu)的依賴,降低了分布式存儲的成本[1]。同時,GridFS 具備分片識別功能,具有較強的故障恢復(fù)能力,保證了存放的大數(shù)據(jù)文件不會丟失、損壞。從存儲容量上來看,GridFS文件的最大存儲容量可以達到2 G。非關(guān)系型數(shù)據(jù)庫在分配數(shù)據(jù)時,可以減少硬盤碎片。對于需要保存到GridFS 文件系統(tǒng)中的單個文件,需要執(zhí)行一個判斷程序。例如,設(shè)定判斷條件為“文件是否大于20 M”,如果判斷結(jié)果為“是”,則需要將該文件拆分成若干個分塊文件,分別保存。同時,對分塊文件也要再次進行判斷,直到所有的文件都小于20 M,原理如圖1 所示。

        圖1 GridFS 文件系統(tǒng)

        在非關(guān)系型數(shù)據(jù)庫中,應(yīng)用GridFS 文件系統(tǒng),可以支持用戶上傳最大容量為2 G 的文件;同時,對于上傳的大容量文件,又會根據(jù)用戶自定義的判斷條件,將大容量文件拆分成若干個分塊文件,將其分別存儲到分布式數(shù)據(jù)庫中。

        2 分布式存儲系統(tǒng)的存儲方式

        2.1 泛洪存儲方式

        對于非結(jié)構(gòu)化系統(tǒng),由于數(shù)據(jù)的分布較為松散,節(jié)點之間不存在固定聯(lián)系,可以采取泛洪(Flooding)存儲方式。在這種存儲模式下,每當有新的節(jié)點被添加到分布式存儲系統(tǒng)時,新添加的節(jié)點只會與臨近的節(jié)點產(chǎn)生聯(lián)系;后期用戶想要搜索該節(jié)點,可以先尋找臨近節(jié)點,并利用臨近節(jié)點上的路由信息,確定新節(jié)點的位置和數(shù)據(jù)。在泛洪存儲方式下,分布式存儲系統(tǒng)中的任意一個節(jié)點都包含一張“鄰居表”,表內(nèi)存儲了該節(jié)點周圍其他節(jié)點的路由信息,大量的節(jié)點利用鄰居表相互連接,從而形成了復(fù)雜的分布式系統(tǒng)。路由途徑如下。

        用戶編輯并發(fā)送查詢指令ping,該指令會路由到最近節(jié)點,并判斷該節(jié)點上是否有用戶需要的數(shù)據(jù)。如果有,則該節(jié)點返回pong 信息,路由過程中止;如果沒有,則該節(jié)點會遍歷鄰居表,將ping 指令發(fā)送給其他的臨近節(jié)點,同時判斷這些臨近節(jié)點上是否有用戶需要的數(shù)據(jù)。重復(fù)上述過程,直到檢索到目標數(shù)據(jù)。另外,搜索指令中包含一個TTL(time_to_live)域,發(fā)揮計數(shù)功能;每向下一級路由1 次,TTL 值減1,當TTL 值為0時,路由停止。

        2.2 基于分布式哈希表的存儲方式

        分布式哈希表(Distributed hash table,DHT)可以將負載均勻地分散到整個系統(tǒng)的所有節(jié)點上;不管是新增節(jié)點,還是節(jié)點失效,分布式哈希表都能夠根據(jù)當前節(jié)點數(shù)量再次平衡負載。同時,每個節(jié)點上也有一張鄰居表,但是該表格中存儲的節(jié)點信息,是距離其有一半節(jié)點數(shù)距離的節(jié)點,從而使數(shù)據(jù)查找的復(fù)雜度從原來的N 變成了N/2?;诜植际焦1淼臄?shù)據(jù)分布與查找方式如圖2 所示。

        圖2 DHT 存儲方式示意圖

        結(jié)合圖2,假設(shè)有2 個節(jié)點A 和B,將A 節(jié)點分成2 個緩存節(jié)點A1 和A2,將B 節(jié)點分成2 個緩存節(jié)點B1 和B2,分別向4 個緩存節(jié)點插入數(shù)據(jù)P1、P2、P3、P4。用一個圈表示數(shù)字的范圍,然后使用哈希(hash)函數(shù)計算這4 個插入數(shù)據(jù)的哈希值,并將其放于圈上的不同位置。沿著順時針方向,將P1、P2、P3、P4 裝入距離該哈希值最近的節(jié)點,完成數(shù)據(jù)的插入。

        當需要從分布式哈希表中查找數(shù)據(jù)時,用戶首先發(fā)送查詢指令,該指令到達最近節(jié)點后,遍歷節(jié)點表格。仍然采用哈希函數(shù)計算要檢索的數(shù)據(jù)的哈希值,然后參考get(key)計算結(jié)果,確定目標數(shù)據(jù)位于分布式存儲系統(tǒng)的哪個節(jié)點上,從而快速、精準地完成數(shù)據(jù)查詢[2]。

        3 基于非關(guān)系型數(shù)據(jù)庫的自動分片技術(shù)

        3.1 數(shù)據(jù)分片

        隨著數(shù)據(jù)量的日益增加,對計算機的存儲空間提出了更高的要求。存儲擴展能夠以相對較低的成本,使計算機的存儲容量得到擴充,以滿足數(shù)據(jù)存儲需要。根據(jù)擴展方式的不同,又可分為縱向擴展、橫向擴展2 種類型。所謂縱向擴展,就是增加硬盤的數(shù)量,并將多個硬盤并聯(lián)實現(xiàn)數(shù)據(jù)共享,這些硬盤共同組成了分布式數(shù)據(jù)庫??v向擴展的優(yōu)勢在于簡便易行,但是數(shù)據(jù)處理速度慢。而橫向擴展則使用到了數(shù)據(jù)分片技術(shù),將數(shù)據(jù)分散到不同的服務(wù)器,并且能夠根據(jù)每一臺服務(wù)器的存儲上限、處理能力等確定數(shù)據(jù)的分攤比例,在不超過存儲上限的前提下保證服務(wù)器數(shù)據(jù)總量相對均衡。這種擴展方式的優(yōu)點在于將多臺服務(wù)器組成了分布式拓撲結(jié)構(gòu),擴展更加簡便,同時保證了較快的數(shù)據(jù)處理速度。

        在非關(guān)系型數(shù)據(jù)庫中,常用的數(shù)據(jù)分片有散列分片、集合分片、列表分片等幾種[3]。其中,散列分片適用于分布式數(shù)據(jù)庫中數(shù)據(jù)并非按照順序保存的情況。在數(shù)據(jù)分片時,可以將數(shù)據(jù)的位置指針放在散列函數(shù)的結(jié)果上,利用合適的散列函數(shù)實現(xiàn)數(shù)據(jù)分片;集合分片則是將分布式數(shù)據(jù)庫中2 個不同的分區(qū)集合到一起,然后按照特定的規(guī)則或者合適的函數(shù)將集合切分成若干小塊。

        3.2 自動分片的實現(xiàn)方式

        基于非關(guān)系型數(shù)據(jù)庫的自動分片流程為:把數(shù)據(jù)庫中現(xiàn)有的所有數(shù)據(jù)集合按照特定的規(guī)則切分成許多小塊。得到的分片小塊均由非關(guān)系型路由器管理。如果有用戶發(fā)起數(shù)據(jù)查詢或數(shù)據(jù)寫入的請求,路由器會根據(jù)分片片鍵(Shard key)規(guī)則快速定位對應(yīng)的分片。同時,挑選分布均勻的片鍵作為分區(qū)標準,以便于保證負載均衡。其中,基于非關(guān)系型數(shù)據(jù)庫的自動分片功能需要由Config 配置服務(wù)器、Mongos 路由服務(wù)器、Mongod 分片區(qū)及Client 客戶端等幾部分組成,系統(tǒng)組成如圖3 所示。

        圖3 MongoDB 系統(tǒng)的結(jié)構(gòu)組成

        用戶從客戶端上發(fā)起訪問請求,該請求經(jīng)Mongos服務(wù)器訪問各個分片區(qū)(Mondod1,Mondod2 等)。這些分片信息被存儲在配置服務(wù)器上,既可以起到均衡負載、分擔存儲壓力的效果,同時還能顯著提高數(shù)據(jù)的安全性[4]。

        3.3 自動分片技術(shù)的應(yīng)用效果

        為了驗證自動分片技術(shù)的應(yīng)用效果,本文使用華為筆記本MateBook 14 進行了實驗,基本參數(shù)如下。

        1)CPU,inel i5-1240p。

        2)內(nèi)存,16 G。

        3)網(wǎng)絡(luò)傳輸,Wi-Fi6。

        4)固態(tài)硬盤,512 GB。

        5)操作系統(tǒng),Windows11。

        6)內(nèi)存頻率,3 733 MHz。

        分別在筆記本的C、D、E、F 4 個硬盤創(chuàng)建了1 個MongoDB 安裝文件,并將C 盤作為配置服務(wù)器。然后輸入命令。

        C:mongodbinmongod--dbpath=C:mongodbdatadb-port3333

        執(zhí)行該命令后,位于C 盤的Mongod 程序開始運行,并將自動分片產(chǎn)生的文件數(shù)據(jù)保存在C:mongodbdatadb 文件夾中,設(shè)定端口號為3333。繼續(xù)輸入以下命令

        D :\mongodbinmongos - port4444 - configdb =127.0.0.1:3333

        執(zhí)行該命令后,將位于D 盤的Mongos 作為新建分片系統(tǒng)的路由服務(wù)器,將該服務(wù)器的IP 設(shè)定為127.0.0.1,設(shè)定端口號為4444。將E 盤和F 盤設(shè)定為系統(tǒng)的2 個分區(qū)。完成上述設(shè)置后,創(chuàng)建一個mytest 數(shù)據(jù)庫,并向該數(shù)據(jù)庫中插入10 萬條指令。自動分片結(jié)束后,輸入db.TestcollectionServer2.find()指令,查看分片后的數(shù)據(jù)分布情況。

        結(jié)果表明,新建數(shù)據(jù)庫mytest 的狀態(tài)為“partitioned”,說明該數(shù)據(jù)庫已經(jīng)采用分區(qū)功能,有2 個分區(qū)。分區(qū)一有3 個文件,分別是test.1、test.2、test.3,大小依次是128、144、156 MB。分區(qū)二有5 個文件,分別是test.1、test.2、test.3、test.4、test.5,大小依次是64、77、59、68、70 MB??梢园l(fā)現(xiàn),該系統(tǒng)可以自動完成分片,各分片的大小雖然有差異,但是在可接受范圍內(nèi),基本上能夠?qū)?shù)據(jù)分散到多個節(jié)點上,保證了負載均衡[5]。

        3.4 自動分片技術(shù)在分布式存儲系統(tǒng)查詢優(yōu)化中的應(yīng)用

        為了進一步提高用戶查詢命令的響應(yīng)速度,本文使用自動分片技術(shù)對分布式存儲系統(tǒng)中的數(shù)據(jù)查詢進行了優(yōu)化。在非關(guān)系型數(shù)據(jù)庫系統(tǒng)中,可用于數(shù)據(jù)查詢的函數(shù)有多種,這里以查詢效率較高的Skip 函數(shù)為例,驗證該函數(shù)在查詢優(yōu)化中的應(yīng)用效果。

        創(chuàng)建1 個新的數(shù)據(jù)庫mytest,在數(shù)據(jù)庫內(nèi)添加一個數(shù)據(jù)集合TestcollectionServer2,其中包含3 708 660條數(shù)據(jù)記錄,集合含有name 鍵,表示如下

        Mongos>db.TestcollectionServer2.count()

        3617551

        其中一條記錄如下

        {id:ObjectID(551CELL1120BA9DC27A6DC76DD),name:zhanglulu0}

        需 要 查 詢 name 鍵 值 在 zhanglulu2000000 ~zhanglulu2000020 之間的記錄。

        本文分別使用了常規(guī)的$gte 函數(shù)和改進的skip 函數(shù)進行數(shù)據(jù)查詢,結(jié)果分別如圖4、圖5 所示。

        圖4 基于$gte 的查詢過程

        圖5 基于skip 的查詢過程

        結(jié)合上圖可知,基于$gte 函數(shù)的數(shù)據(jù)查詢,掃描數(shù)據(jù)為3 708 660 條,即完成了對所有數(shù)據(jù)的掃描,共計用時為2.068 s;基于skip 函數(shù)的數(shù)據(jù)查詢,掃描數(shù)據(jù)為2 000 019 條,共計用時為291 ms。對比可以發(fā)現(xiàn),基于skip 函數(shù)的自動分片技術(shù),在數(shù)據(jù)查詢方面能夠顯著提高查詢效率。

        4 結(jié)束語

        分布式存儲技術(shù)的出現(xiàn),能夠滿足大數(shù)據(jù)時代海量數(shù)據(jù)的存儲需求。分布式數(shù)據(jù)庫雖然存儲容量得到了大幅度提升,但是用戶如何快速、準確查找到需要的數(shù)據(jù),成為必須要解決的問題。本文提出了一種非關(guān)系型數(shù)據(jù)庫的自動分片技術(shù),借助于動態(tài)負載均衡算法,將分片后的數(shù)據(jù)均勻地分散到各個節(jié)點上,保證了負載均衡,節(jié)約了計算機資源,從而顯著提高了數(shù)據(jù)查詢速率,滿足了分布式數(shù)據(jù)庫快速索引的需求。

        猜你喜歡
        分片哈希路由
        上下分片與詞的時空佈局
        詞學(xué)(2022年1期)2022-10-27 08:06:12
        分片光滑邊值問題的再生核方法
        CDN存量MP4視頻播放優(yōu)化方法
        基于模糊二分查找的幀分片算法設(shè)計與實現(xiàn)
        探究路由與環(huán)路的問題
        基于OpenCV與均值哈希算法的人臉相似識別系統(tǒng)
        基于維度分解的哈希多維快速流分類算法
        計算機工程(2015年8期)2015-07-03 12:20:04
        PRIME和G3-PLC路由機制對比
        WSN中基于等高度路由的源位置隱私保護
        計算機工程(2014年6期)2014-02-28 01:25:54
        基于同態(tài)哈希函數(shù)的云數(shù)據(jù)完整性驗證算法
        計算機工程(2014年6期)2014-02-28 01:25:40
        又黄又刺激的网站久久| 久久久国产精品粉嫩av| 亚洲av网站在线免费观看| 国产成人自拍高清在线| 亚洲欧洲精品无码av| 久久免费大片| 少妇人妻字幕一区二区| 国产亚洲成人av一区| 亚洲色在线v中文字幕| 亚洲不卡无码高清视频| 亚洲综合中文一区二区| 亚洲欧洲日产国码av系列天堂 | 55夜色66夜色国产精品视频| 四虎成人精品无码永久在线| 狠狠久久av一区二区三区| 亚洲av福利天堂一区二区三 | 国产精品爽爽VA吃奶在线观看| 尤物国产一区二区三区在线观看| 中文字幕日本人妻久久久免费| 亚洲av无码成人yellow| 亚洲成av在线免费不卡| 国产av精品一区二区三区久久| 特黄特色的大片观看免费视频| 免费一本色道久久一区| 精品国产av一区二区三区| 久久精品国产亚洲av久| 免费人成年小说在线观看| 免费在线观看蜜桃视频| 精品人妻中文av一区二区三区| 久久www色情成人免费观看| 国产精品一区二区久久乐下载| 亚洲人妻御姐中文字幕| 无码爆乳护士让我爽| 亚洲日本va中文字幕久久| 日韩精品中文字幕人妻中出| 草草影院ccyy国产日本欧美| 人妻在线日韩免费视频| 99久久精品国产片| 偷拍美女上厕所一区二区三区| 人人摸人人操| 亚洲中文字幕乱码免费|