999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于某項目的NoSQL數(shù)據(jù)庫設(shè)計與研究

2019-07-19 08:18:55李順
關(guān)鍵詞:數(shù)據(jù)庫用戶

李順

[摘 ? ? ? ? ? 要] ?基于為學(xué)校開發(fā)的實際項目,首先對NoSQL數(shù)據(jù)庫的理論和方向進行闡述,然后從總體的設(shè)計與需求出發(fā),對以Redis技術(shù)為主的NoSQL數(shù)據(jù)庫應(yīng)用進行探究。

[關(guān) ? ?鍵 ? 詞] ?數(shù)據(jù)庫;NoSQL技術(shù);Redis

[中圖分類號] ?TP311.1 ? ? ? ? ? [文獻標(biāo)志碼] ?A ? ? ? ? ? ?[文章編號] ?2096-0603(2019)15-0034-02

數(shù)據(jù)庫是數(shù)據(jù)存儲的主要場所,當(dāng)前的數(shù)據(jù)庫技術(shù)主要是以MySQL、PosrareSQL等為主的關(guān)系數(shù)據(jù)庫。隨著網(wǎng)站技術(shù)的發(fā)展,特別是微博之類大型網(wǎng)站的出現(xiàn)讓人們意識到了關(guān)系數(shù)據(jù)庫的局限性,那就是關(guān)系數(shù)據(jù)庫的設(shè)計約束不夠靈活和海量數(shù)據(jù)處理能力不足,使用戶的體驗過程很不理想。所以為了優(yōu)化用戶的體驗,滿足數(shù)據(jù)庫低延時和高并發(fā)的需求,研究人員開始將目光投入到非關(guān)系數(shù)據(jù)庫上,也就是本文所研究的NoSQL技術(shù)。從本質(zhì)上來說,NoSQL技術(shù)是對關(guān)系數(shù)據(jù)庫的補足,主要是應(yīng)對高并發(fā)和大數(shù)據(jù)的需求進行構(gòu)架,充分開發(fā)了以集合論為代數(shù)基礎(chǔ)的結(jié)構(gòu)化查詢語言,保證了事物的一致性,滿足了網(wǎng)站對數(shù)據(jù)庫伸縮性和高可用性的要求。

一、NoSQL簡介

NoSQL是基于CAP理論、最終一致性和BASE思想而構(gòu)建起來的技術(shù)體系,與傳統(tǒng)的關(guān)系數(shù)據(jù)庫的數(shù)據(jù)模型有著很大的區(qū)別。傳統(tǒng)的關(guān)系數(shù)據(jù)庫的數(shù)據(jù)模型表現(xiàn)為關(guān)系型數(shù)據(jù)模型,而NoSQL拋棄了關(guān)系型模型的框架和模式,從鍵值、文檔、列、圖四個存儲應(yīng)用方向出發(fā)進行構(gòu)架。

鍵值(key-value)存儲是一張類似于HashTable集合的數(shù)據(jù)結(jié)構(gòu)的哈希表,能夠根據(jù)結(jié)構(gòu)中的key值進行存儲,與其對應(yīng)的value沒有過多的限制,能夠根據(jù)產(chǎn)品的不同進行不同的操作。但是通常情況下的NoSQL數(shù)據(jù)庫不提供針對單獨value值的操作,而是根據(jù)key值開放delet、set等操作,目前常見的鍵值數(shù)據(jù)庫產(chǎn)品為Redis。

文檔(key-文檔)存儲與鍵值存儲類似,但對應(yīng)的vale值從任意數(shù)值變成了結(jié)構(gòu)化的文檔。文檔存儲的優(yōu)勢在于只要文檔滿足XML、JSON等存儲格式,就能夠?qū)崿F(xiàn)文檔內(nèi)嵌套的復(fù)雜存儲方式。所以文檔存儲可以看作是鍵值存儲的升級版本,目前常見的文檔存儲數(shù)據(jù)庫產(chǎn)品為CouchDB。

列(key-列)存儲在設(shè)計上與前兩種截然不同,它是一種能夠以傳統(tǒng)關(guān)系結(jié)構(gòu)的表模型(Table)為基礎(chǔ),打破了多行進行連續(xù)存儲的方式,從而提高壓縮率和緩存的利用率。但列存儲因為結(jié)構(gòu)特性有著無法聚集、無法形成唯一索引、無法包含稀疏列等缺點,所以列存儲的應(yīng)用范圍有限,通常被應(yīng)用在數(shù)據(jù)倉庫或者匯總上,目前常見的列存儲數(shù)據(jù)庫產(chǎn)品為HBase。

圖存儲是利用圖結(jié)構(gòu)的算法來實現(xiàn)存儲,常見的圖存儲算法為最短路徑尋址算法。圖存儲的計算方式是基于整個圖進行,所以其復(fù)雜算法不適合分布式集群方案。圖存儲的主要應(yīng)用范圍在社交網(wǎng)絡(luò)這類能夠構(gòu)建出關(guān)系圖譜的平臺上,目前常見的圖存儲數(shù)據(jù)庫產(chǎn)品為InfoGrid等。

二、基于NoSQL技術(shù)的數(shù)據(jù)庫設(shè)計

本次研究所構(gòu)架NoSQL數(shù)據(jù)庫的方向為鍵值存儲,研究的項目為redis問答系統(tǒng)設(shè)計與實現(xiàn),旨在解決用戶對筆者所在學(xué)校及其相關(guān)辦學(xué)情況的疑惑。用戶可以在問答系統(tǒng)上自行發(fā)布問題,由學(xué)校內(nèi)部人員進行解答。

(一)總體設(shè)計與需求分析

首先,需要對用戶的相關(guān)需求進行分析,用戶登錄系統(tǒng)之后需要先對問題進行搜索,借助搜索引擎對問題進行定位;其次,如果用戶沒有發(fā)現(xiàn)相關(guān)問題,那么就可以通過自行提問,然后由學(xué)校安排特定人員進行登錄解答;最后,用戶對感興趣的問題進行關(guān)注,從而隨之對問題答案消息進行接收。所以跟據(jù)以上三種情況,筆者將主要的模塊分為四種:用戶模塊、關(guān)注模塊、點贊模塊和問題與評論模塊。全文搜索相關(guān)功能需要借助其他框架實現(xiàn),本文不多進行贅述。本次研究項目后臺使用Java,采用了SSM的架構(gòu)方式。

1.用戶模塊

用戶在瀏覽網(wǎng)站首頁的時候需要進行權(quán)限認證,然后跳轉(zhuǎn)至登錄頁面進行登錄,在登錄驗證成功后就可以跳轉(zhuǎn)到之前的目標(biāo)界面,如果沒有成功再會提示用戶信息出現(xiàn)問題。登錄驗證也分為新用戶和老用戶兩種驗證方式,新用戶需要提交權(quán)限認證和注冊,老用戶只需要輸入賬號密碼。

因為學(xué)校的用戶規(guī)模有限,并且各個用戶之間的關(guān)聯(lián)性較強,所以用戶模塊的數(shù)據(jù)存儲使用的是關(guān)系型數(shù)據(jù)庫,并且使用了MD5加密技術(shù)進行加密。在用戶模塊字段的描述方面:id表示系統(tǒng)記錄的用戶主鍵序號;name表示賬戶名;password表示密碼;slat表示根據(jù)原始密碼生成的加密技術(shù);head url表示頭像的url。

2.問題與評論模塊

用戶在沒有找到自己想要了解的問題情況下,就需要自行進行發(fā)布請求的提交,這時系統(tǒng)會檢查用戶是否已經(jīng)登錄,如果用戶沒有登錄,就會彈出相應(yīng)登錄界面。在用戶已經(jīng)登陸的情況下就可以提示用戶是否需要進行問題的發(fā)布,如果需要,就進入相關(guān)發(fā)布界面;如果不需要,就進入相關(guān)評論界面,兩個界面都需要填寫信息后提交,最終結(jié)果會在對應(yīng)的界面上顯示。問題與評論模塊是相互對應(yīng)進行設(shè)計的,所以選用的是傳統(tǒng)關(guān)系型數(shù)據(jù)庫進行數(shù)據(jù)存儲。

在問題模塊字段的描述方面:id表示系統(tǒng)記錄的問題主鍵序號;title表示標(biāo)題;content表示內(nèi)容;user-id表示發(fā)布者的用戶表序號;created-time表示創(chuàng)建問題時間;comment-count表示問題下方的評論數(shù)量。

在評論模塊字段的描述方面:id表示系統(tǒng)記錄的評論主鍵序號;content表示評論內(nèi)容;user-id表示發(fā)布者的用戶表序號;entity-id表示評論對象的用戶表序號;entity-type表示評論對象的類型;created time表示創(chuàng)建評論時間。

3.點贊模塊

點贊模塊是優(yōu)化用戶體驗的重要內(nèi)容,如果用戶很喜歡某個答案,就可以點贊來作為認可。首先用戶需要提交點贊請求,系統(tǒng)會檢查用戶是否已經(jīng)登錄,如果用戶沒有登錄,就會彈出相應(yīng)登錄界面。在用戶已經(jīng)登陸的情況下就可以讓后臺獲取用戶和問題的相關(guān)信息,針對用戶的需求進行Redis數(shù)據(jù)庫的操作,操作完成后返回頁面顯示成果。

點贊模塊的設(shè)計較為復(fù)雜,需要記錄點贊者、被點贊目標(biāo)和目標(biāo)得到點贊數(shù)等多項信息才能進行完整的描述,所以關(guān)系型數(shù)據(jù)庫已經(jīng)不能夠滿足描述的需要,導(dǎo)致整體點贊行為的讀寫壓力較大,所以筆者采用Redis技術(shù)進行數(shù)據(jù)的存儲。

4.關(guān)注模塊

關(guān)注模塊主要是讓用戶能夠第一時間接收到站內(nèi)的通知,提醒用戶新的答案或者所關(guān)注者的新動態(tài)。首先用戶需要提交關(guān)注請求,系統(tǒng)會檢查用戶是否已經(jīng)登錄,如果用戶沒有登錄,就會彈出相應(yīng)登錄界面。在用戶已經(jīng)登陸的情況下就可以讓后臺獲取到用戶和問題的相關(guān)信息,針對用戶的需求進行Redis數(shù)據(jù)庫的操作,操作完成后返回頁面顯示成果。

關(guān)注模塊是大型網(wǎng)站的主要應(yīng)用模塊,因為每個用戶都有不溝通的關(guān)注和被關(guān)注的需求,所以需要根據(jù)用戶建立不同類型的列表,數(shù)據(jù)量龐大,適合Redis這類NoSQL技術(shù)數(shù)據(jù)庫的發(fā)揮。具體方法是利用Redis的有序集合將關(guān)注實體進行劃分,用戶所關(guān)注的其他用戶為entity type(1),所關(guān)注的問題為entity type(2),從而確保類型的不同。

(二)Redis問答系統(tǒng)的設(shè)計

作為NoSQL數(shù)據(jù)庫的代表,Redis數(shù)據(jù)庫有其固有的優(yōu)勢與劣勢。在一些特定的場景下,非常適合采用Redis數(shù)據(jù)庫存儲數(shù)據(jù),而在其他場景下,Redis有時無法勝任,只能采用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫。本節(jié)主要介紹Redis在此問答系統(tǒng)中的設(shè)計,并對Redis的適應(yīng)場景做一般性的總結(jié)。

1.功能型設(shè)計

作為一種新興的數(shù)據(jù)庫,NoSQL能夠獨立承擔(dān)一些業(yè)務(wù)場景的數(shù)據(jù)存儲工作。當(dāng)存儲的數(shù)據(jù)對結(jié)構(gòu)化要求不高,比如不需進行join查詢,并且這些數(shù)據(jù)是海量的,無法對數(shù)據(jù)的規(guī)模、數(shù)據(jù)的增長速度進行預(yù)期時,就非常適合采用NoSQL數(shù)據(jù)庫,雖然也可使用關(guān)系型數(shù)據(jù)庫完成同樣功能,但性能以及擴展性卻遠不如NoSQL數(shù)據(jù)庫。

以此問答系統(tǒng)為例,對問題和評論場景,只需對問題、評論用戶等數(shù)據(jù)進行存儲,無需進行聯(lián)表查詢,對數(shù)據(jù)的結(jié)構(gòu)化要求不高,而且當(dāng)系統(tǒng)發(fā)展到一定規(guī)模后,用戶數(shù)據(jù)急劇上漲時,對一個熱點問題的評論數(shù)可能達到萬級別以上,而且這只是單個問題,當(dāng)熱點問題數(shù)據(jù)規(guī)模達到百級別時,單獨評論功能的數(shù)據(jù)規(guī)模就可以達到百萬級別以上,這些數(shù)據(jù)是相當(dāng)可觀的。如果采用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,需要額外建立一張表,按照上述數(shù)據(jù)規(guī)模,此表的數(shù)據(jù)可達到百萬條記錄,無疑會對數(shù)據(jù)庫的讀寫帶來極大壓力,并有可能成為系統(tǒng)擴展的瓶頸。

考慮采用Redis實現(xiàn),可以借助Redis內(nèi)置的數(shù)據(jù)結(jié)構(gòu)set集合實現(xiàn)。可以為每個問題都分配一個集合,集合內(nèi)存放的數(shù)據(jù)即為給此問題點贊的用戶id。由于集合內(nèi)存儲的元素只是用戶的id,即使達到百萬級別,其占用的內(nèi)存也是G級別的,相比內(nèi)存的高效存取,完全可以接受,而且用戶每點贊一次,只需向特定集合內(nèi)增加用戶id即可,無須重復(fù)問題id,減少了數(shù)據(jù)冗余。此外,Redis提供了相應(yīng)的集合操作方法,比如統(tǒng)計每個集合內(nèi)元素數(shù)量scard()、判斷集合內(nèi)是否包含某元素sismember()等,可以方便高效地滿足各種需求。

2.類緩存設(shè)計

為了平衡時間與空間的矛盾,考慮使用Redis+MySQL的架構(gòu),以Redis作為數(shù)據(jù)的緩存,數(shù)據(jù)的主體部分存儲在關(guān)系型數(shù)據(jù)庫MySQL中。每個用戶依然存在一個關(guān)注列表,為了減少占用內(nèi)存空間,關(guān)注列表不再存儲關(guān)注的主體內(nèi)容,而是關(guān)注的主鍵記,關(guān)注的主體內(nèi)容存儲在MySQL數(shù)據(jù)庫的關(guān)注表中,獲取事件id后,再根據(jù)id到MySQL獲取實際內(nèi)容。由于列表內(nèi)只存儲關(guān)注的id,其占用的數(shù)據(jù)量大大減少,解決了完全采用Redis存儲大量數(shù)據(jù)冗余的問題;由于根據(jù)關(guān)注的主鍵id到MySQL中獲取信息,其效率也大大提高(關(guān)系型數(shù)據(jù)中一般都提供根據(jù)主鍵獲取信息的優(yōu)化措施),解決了完全采用MySQL存儲性能低下的問題。

參考文獻:

[1]許鑫,時雷,何龍,等.基于NoSQL數(shù)據(jù)庫的農(nóng)田物聯(lián)網(wǎng)云存儲系統(tǒng)設(shè)計與實現(xiàn)[J].農(nóng)業(yè)工程學(xué)報,2019,35(1):172-179.

[2]熊英,程玉.大數(shù)據(jù)時代數(shù)據(jù)庫原理及應(yīng)用教程的教學(xué)模式探索[J].教育現(xiàn)代化,2018,5(50):27-29.

[3]劉玉程,李港.NoSQL數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫對比[J].中國新通信,2018,20(7):81.

[4]洪漪,趙棟祥,趙一鳴.大數(shù)據(jù)環(huán)境下的信息架構(gòu)與數(shù)據(jù)模型[J].信息資源管理學(xué)報,2018,8(1):29-38.

編輯 馮永霞

猜你喜歡
數(shù)據(jù)庫用戶
數(shù)據(jù)庫
財經(jīng)(2017年15期)2017-07-03 22:40:49
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
Camera360:拍出5億用戶
100萬用戶
主站蜘蛛池模板: 色悠久久久久久久综合网伊人| 国产香蕉一区二区在线网站| 宅男噜噜噜66国产在线观看| 久久伊人操| 幺女国产一级毛片| 激情综合五月网| 国产精品林美惠子在线播放| 国产小视频在线高清播放| www.99在线观看| 国产成人凹凸视频在线| 视频一区亚洲| 国产在线精品99一区不卡| 色哟哟国产成人精品| 2019国产在线| 狂欢视频在线观看不卡| a毛片免费看| 亚洲精品777| 人妻一本久道久久综合久久鬼色| 国产玖玖玖精品视频| 久久国产精品电影| 天天操精品| 日日噜噜夜夜狠狠视频| 99久久精品美女高潮喷水| 亚洲系列中文字幕一区二区| 国内黄色精品| 亚洲国产成熟视频在线多多| 999精品免费视频| 黄色网站不卡无码| 一区二区影院| 91精品国产自产91精品资源| 久草国产在线观看| 亚洲AV成人一区二区三区AV| 国产午夜精品鲁丝片| 97视频精品全国免费观看| 不卡无码h在线观看| 欧美午夜视频在线| 亚洲无码高清一区二区| 在线国产欧美| 日本国产一区在线观看| 51国产偷自视频区视频手机观看 | 国产成人高精品免费视频| 欧美国产在线看| 777午夜精品电影免费看| 尤物视频一区| 欧美另类精品一区二区三区| 永久成人无码激情视频免费| 亚洲日韩久久综合中文字幕| 1024你懂的国产精品| 99er精品视频| 午夜国产不卡在线观看视频| 激情国产精品一区| 欧美一区国产| 四虎永久在线视频| 中字无码精油按摩中出视频| 欧美亚洲中文精品三区| 成年人国产视频| 国产欧美日韩另类| 欧美区国产区| 亚洲黄色视频在线观看一区| 亚洲中久无码永久在线观看软件 | AV老司机AV天堂| www.亚洲国产| 欧美日韩国产高清一区二区三区| 91精品啪在线观看国产91九色| 午夜视频在线观看免费网站| 91精品国产一区| 男女男精品视频| 久草性视频| jizz在线观看| 国产成人亚洲毛片| 久久精品国产亚洲麻豆| 欧美成人aⅴ| 久久青草视频| 无码精品国产dvd在线观看9久| 成人综合网址| 国产精品不卡片视频免费观看| 欧美A级V片在线观看| 91麻豆久久久| 亚洲精品无码AV电影在线播放| 亚洲欧美成人| 国产成人精品一区二区| 欧洲成人在线观看|