国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MongoDB的非關系型數(shù)據(jù)庫的設計研究

2024-07-01 15:27:12施瑩超
科技資訊 2024年8期

施瑩超

摘要:為了解決傳統(tǒng)關系數(shù)據(jù)庫所存在的海量級數(shù)據(jù)處理效率低下等問題,利用MongoDB技術,制定了MongoDB存儲架構(gòu),并采用當前的主流技術,提出一套行之有效的非關系型數(shù)據(jù)庫設計方案。首先對MongoDB技術進行了詳細的介紹,然后基于數(shù)據(jù)庫連接、創(chuàng)建集合、基本操作實現(xiàn)這3個方面入手,設計了基于MongoDB非關系型數(shù)據(jù)庫,這一數(shù)據(jù)庫的實現(xiàn)為后期相關數(shù)據(jù)庫的設計工作提供了重要的參考依據(jù)。

關鍵詞:?關系型數(shù)據(jù)庫?非關系型數(shù)據(jù)庫??前端界面??總體架構(gòu)

中圖分類號:TP311.1

Research?on?the?Design?of?Non-Relational?Databases?Based?on?MongoDB

SHI?Yingchao

Xizang?Agricultural?and?Animal?Husbandry?University,?Linzhi?,?Xizang?Autonomous?Region,860000?China

Abstract:?In?order?to?solve?the?problems?of?low?efficiency?in?processing?massive?data?in?traditional?relational?databases,?this?article?uses?MongoDB?technology?to?develop?a?MongoDB?storage?architecture,?and?adopts?current?mainstream?technologies?to?propose?an?effective?design?scheme?of?non-relational?databases.?Firstly,?it?introduces?MongoDB?technology?in?detail,?and?then?designs?a?non-relational?database?based?on?MongoDB?from?three?aspects:?database?connection,?collection?creation?and?basic?operation?implementation.?The?implementation?of?this?database?provides?important?reference?for?the?design?of?related?databases?in?the?later?stage.

Key?Words:?Relational?database;?Non-relational?database;?Front-end?interface;?Overall?architecture

隨著互聯(lián)網(wǎng)技術的飛速發(fā)展,數(shù)據(jù)庫技術為了更好地適應環(huán)境變化,開始不斷創(chuàng)新。傳統(tǒng)關系型數(shù)據(jù)庫無法保障動態(tài)網(wǎng)站的響應速度,因此出現(xiàn)了新型非關系型數(shù)據(jù)庫,該數(shù)據(jù)庫的出現(xiàn)和應用,可以有效地解決海量數(shù)據(jù)多重問題。本文對比基于MongoDB的非關系型數(shù)據(jù)庫與SQLserver數(shù)據(jù)庫的性能,并采用實例分析的方式[1],全面化分析和研究MongoDB數(shù)據(jù)庫關鍵技術,同時,利用node.計算機圖形圖像處理技術,封裝處理MongoDB數(shù)據(jù)庫,從而凸顯出該數(shù)據(jù)庫在提高動態(tài)網(wǎng)站響應速度的優(yōu)勢。所以,在MongoDB技術的背景下,設計科學的非關系型數(shù)據(jù)庫是技術人員需要思考的內(nèi)容。

1?MongoDB技術

  • 數(shù)據(jù)庫介紹

數(shù)據(jù)庫是指長時間存儲在計算機中的數(shù)據(jù)集合,其具有一定的共享性、組織性特點。數(shù)據(jù)庫在具體運用中,按照數(shù)據(jù)結(jié)構(gòu),對數(shù)據(jù)倉庫進行有效的組織和管理。數(shù)據(jù)庫內(nèi)存中所運行的程序一旦設計不合理,很容易導致數(shù)據(jù)出現(xiàn)丟失、泄露等風險[2]。所以,需要采用持久化存儲的方式,將運行的數(shù)據(jù)直接存儲到硬盤中,從而保證數(shù)據(jù)存儲的安全性和可靠性,而數(shù)據(jù)庫在實現(xiàn)數(shù)據(jù)持久化存儲方面發(fā)揮出重要作用。數(shù)據(jù)庫主要包含以下兩種。

  1. 關系型數(shù)據(jù)庫(SQL)。利用二維表關系模型,對所需數(shù)據(jù)進行組織與存儲,典型的關系型數(shù)據(jù)庫如MySQL數(shù)據(jù)庫、MicrosoftSQLServer數(shù)據(jù)庫等。
  2. 非關系型數(shù)據(jù)庫(NoSQL)。非關系型數(shù)據(jù)庫在具體應用中,主要采用鍵值對的方式,對所需數(shù)據(jù)進行組織和存儲,MongoDB、NoSQL是非關系型數(shù)據(jù)庫的常見代表。

以上兩種數(shù)據(jù)庫區(qū)別如下。

(1)存儲結(jié)構(gòu)。MicrosoftSQLServer數(shù)據(jù)庫在具體構(gòu)建時,需要在參照數(shù)據(jù)庫、表、記錄3個層次結(jié)構(gòu)的基礎上,采用表格的方式,對所需數(shù)據(jù)進行存儲;MongoDB數(shù)據(jù)庫在具體構(gòu)建時,需要參照數(shù)據(jù)庫、集合、文檔對象結(jié)構(gòu),在此基礎上采用鍵值對方式,存儲相關的數(shù)據(jù)。(2)成本。MongoDB具有易部署、成本低等特點,該數(shù)據(jù)庫屬于典型的開源軟件,無需像MicrosoftSQLServer數(shù)據(jù)庫那樣花費較高成本。(3)查詢速度。MongoDB數(shù)據(jù)庫在具體應用中,需要將所需數(shù)據(jù)直接存儲到緩存空間中,無需經(jīng)過SQL層解析處理,而MicrosoftSQLServer數(shù)據(jù)庫需要將數(shù)據(jù)直接存儲到硬盤中,因此,其查詢速度相對較低,遠遠低于MongoDB數(shù)據(jù)庫。

  • MongoDB簡介

MongoDB作為一種非關系型數(shù)據(jù)庫,主要是在參照分布式文件存儲原理提出的,MongoDB主要用于對Web網(wǎng)站的高效化開發(fā),可以對所需要數(shù)據(jù)進行實時插入、查詢與更新等[3]。MongoDB具有容易操作、維護方便、容易存儲等優(yōu)勢,并且還可以將存儲的數(shù)據(jù)直接復制。MongoDB作為一種非關系型數(shù)據(jù)庫,與關系型數(shù)據(jù)庫高度一致,并且其文檔(Document)屬于MongoDB基本數(shù)據(jù)單位[4],而文檔數(shù)據(jù)的結(jié)構(gòu)包括多個關聯(lián)值、鍵等。集合與關系型數(shù)據(jù)庫中的表非常相似,所以采用分類存儲,在相應集合中應用文檔存儲。數(shù)據(jù)庫(DataBase)內(nèi)部含有大量的集合[5]。如下圖1所示為MongoDB數(shù)據(jù)庫層次結(jié)構(gòu),可以看出數(shù)據(jù)庫的層次關系,單個數(shù)據(jù)庫管理軟件內(nèi)部中擁有多個集合,而集合主要是指數(shù)據(jù)庫中同種類型的數(shù)據(jù),單個集合內(nèi)含有若干個文檔,文檔主要是指數(shù)據(jù)庫中一條條數(shù)據(jù),字段主要是指每條數(shù)據(jù)所對應的屬性名稱。在本次設計時,主要用到Mongoose對象模型工具,該工具主要是借助node.js所開發(fā)的。在異步環(huán)境下,可以直接執(zhí)行Mongoose。

2基于MongoDB非關系型數(shù)據(jù)庫設計實現(xiàn)

本文以“旅游類的電子導游項目”為實例項目,主要運用管理員、消息、新聞等多個數(shù)據(jù)庫模型。為保證該項目用戶登錄功能實現(xiàn)效果,結(jié)合MongoDB基本操作,完成對如表1所示的用戶信息表的設計以及如圖2所示的用戶E-R圖繪制。另外,采用舉例說明的方式,介紹MongoDB對象模型MongoDB數(shù)據(jù)庫實現(xiàn)相關操作。

2.1數(shù)據(jù)庫需求分析

在設計和實現(xiàn)一個數(shù)據(jù)庫系統(tǒng)的過程中,理解并滿足用戶需求是至關重要的。為了實現(xiàn)這一目標,我們可以將需求分析過程劃分為兩個主要的操作步驟,這兩個步驟緊密相連,共同構(gòu)成了用戶與數(shù)據(jù)庫交互的核心。首先,用戶對本地數(shù)據(jù)進行瀏覽與管理,并通過Excel文件將文件批量導入,也可以直接在MongoDB數(shù)據(jù)庫中導入序列文件。這種直接導入的方式對于處理結(jié)構(gòu)化或半結(jié)構(gòu)化數(shù)據(jù),尤其是大數(shù)據(jù)量的情況,可以大大提高效率;其次,數(shù)據(jù)的處理。用戶對于數(shù)據(jù)進行查找與瀏覽后,下載序列文件。通過細致地分析和設計數(shù)據(jù)庫的用戶操作流程,創(chuàng)建一個既滿足用戶需求,又具有高效、安全和易用特性的系統(tǒng),為用戶的數(shù)據(jù)管理與分析提供支持。

2.2數(shù)據(jù)庫連接

在進行數(shù)據(jù)庫連接時,首先,使用require語句,完成對所需模塊的加載,在此基礎上,創(chuàng)建所需要的數(shù)據(jù)庫;其次,運用connect語句,確保各個數(shù)據(jù)庫之間建立良好的連接關系,connect語句中的url主要用于對服務器地址的指定。

2.3創(chuàng)建集合

當數(shù)據(jù)庫連接完畢后,需要做好對集合規(guī)則和集合的設定和創(chuàng)建,集合創(chuàng)建主要包含以下兩個環(huán)節(jié):(1)采用schema定義的方式,對集合規(guī)定進行科學設定,并對整個集合中存在的字段類型進行精確化描述,字段功能與表結(jié)構(gòu)性極其類似;(2)使用規(guī)則,創(chuàng)建集合。在這個過程中,僅僅可以創(chuàng)建schema中所定義好的屬性。在創(chuàng)建這些屬性時,主要運用model方法。在model函數(shù)中,主要運用集合名稱、集合規(guī)則兩個參數(shù)。運用Model方法,對于構(gòu)造函數(shù)實施返回處理,借助構(gòu)造函數(shù)將內(nèi)容添加到集合內(nèi),創(chuàng)建文檔。而文檔創(chuàng)建首先需要創(chuàng)建集合實例。其次,結(jié)合實例對象,調(diào)用save方法,確保數(shù)據(jù)安全、可靠地傳輸和存儲于數(shù)據(jù)庫中。此外,采用構(gòu)造create函數(shù)法,創(chuàng)建所需文檔。

2.4總體架構(gòu)設計

該系統(tǒng)整合了網(wǎng)絡、服務器、存儲等構(gòu)成虛擬化資源池,基于應用系統(tǒng)的需要,靈活分配物理資源,提高資源利用率。同時,利用資源池動態(tài)可伸縮的特點,部署在分布式應用系統(tǒng)內(nèi),數(shù)據(jù)層采用MongoDB,可以確保整體功能的負載均衡。接口層提供對外的數(shù)據(jù)訪問接口、查詢接口,使層與層之間的交互更加方便。展示層則是用戶操作界面,確保界面簡潔明了。

2.5基本操作的實現(xiàn)

采用服務器組建MongoDB分布式集群,服務器配置相同,操作系統(tǒng)為Ubuntu?20.04,磁盤容量?1TB、CPU為4核、內(nèi)存為8GB。MongoDB非關系型數(shù)據(jù)庫負責對基本操作的增加、刪除、修改等,利用圖2所示的node.js操作數(shù)據(jù)庫,實現(xiàn)數(shù)據(jù)庫的基本操作。另外,利用MongoDB技術,直接調(diào)用model模塊,實現(xiàn)數(shù)據(jù)操作。

另外,以“數(shù)據(jù)庫信息增加”為實例,演示運用代碼添加數(shù)據(jù)過程,其他集合操作與數(shù)據(jù)添加操作極其類似。通常情況下,MongoDB數(shù)據(jù)庫主要調(diào)用insert()方法、save()方法,將數(shù)據(jù)插入到集合中。

3結(jié)語

綜上所述,本文所設計的MongoDB非關系型數(shù)據(jù)庫具有成本低、易操作、寫入便捷高效等特點。但是,該數(shù)據(jù)庫也存在以下弊端:(1)一旦旅游數(shù)據(jù)規(guī)模過大,會嚴重影響旅游數(shù)據(jù)查詢速度;(2)該數(shù)據(jù)庫在刪除記錄數(shù)據(jù)后,不能立即釋放存儲空間,導致空間占用率相對較高。為解決該數(shù)據(jù)庫存在的弊端,技術人員要合理優(yōu)化設計非關系型數(shù)據(jù)庫。

參考文獻

[1] 宋瑜輝,張俠,艾琳,等.基于Mongodb的智能電網(wǎng)大數(shù)據(jù)存儲設計[J].電子制作,2020(19):64-67.

[2] 劉江濤,王亮亮,崔夏陽,等.基于Node.js和MongoDB的鐵路選線案例系統(tǒng)設計與實現(xiàn)[J].鐵路計算機應用,2021,30(9):42-46.

[3] 彭燦華,韋曉敏.基于MongoDB的艦橋SCADA系統(tǒng)實時數(shù)據(jù)庫構(gòu)建[J].艦船科學技術,2020,42(22):163-165.

[4] 鄔學敏,高靜.基于MongoDB蒙古高原家畜基因組大數(shù)據(jù)管理系統(tǒng)的設計與實現(xiàn)[J].軟件,2022,43(12):4-8,14.

[5] 李鑫.基于MongoDB數(shù)據(jù)庫的智能醫(yī)療分布式數(shù)據(jù)提取算法[J].微型電腦應用,2022,38(1):150-153,163.

金平| 南溪县| 垫江县| 天等县| 赫章县| 泽普县| 开江县| 上杭县| 东乌| 东兰县| 余江县| 富蕴县| 安乡县| 建瓯市| 临沧市| 固原市| 肥乡县| 睢宁县| 佛冈县| 普安县| 昌平区| 承德市| 循化| 克山县| 长丰县| 博兴县| 襄城县| 齐河县| 孝义市| 壤塘县| 嵊州市| 报价| 清远市| 南宫市| 平远县| 满城县| 阳山县| 曲松县| 天水市| 景东| 岚皋县|