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

?

基于MongoDB的社區(qū)論壇設計與研究

2015-11-13 11:32楊衛(wèi)平張子頔
電腦知識與技術 2015年23期

楊衛(wèi)平++張子頔

摘要:現(xiàn)有基于SQL數(shù)據(jù)庫設計社區(qū)論壇在面對海量數(shù)據(jù)和大量并發(fā)用戶訪問時顯得力不從心,使用一種全新的架構解決此問題變得迫在眉睫。該文研究了基于MongoDB的社區(qū)論壇,采用NoSQL文檔型數(shù)據(jù)庫作為數(shù)據(jù)庫存儲數(shù)據(jù),實現(xiàn)了論壇所具備的發(fā)帖、留言、用戶管理等基本功能,在處理海量數(shù)據(jù)和大量訪問時論壇性能表現(xiàn)良好。

關鍵詞:MongoDB;NoSQL;社區(qū)論壇

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2015)23-0007-04

Community Forum Design and Research Base on Mongo DB

YANG Wei-ping, ZHANG Zi-di

(Department of Electrical Engineering and Information Technology, Shandong University of Science and Technology, Jinan 250031, China)

Abstract: Existing SQL-based database design community forum is difficult to meet the requirements of massive data and large numbers of concurrent users accessing. A new architecture to solve this problem has become urgent. In this paper, a community forumbasedon MongoDB has been designed. By using NoSQL documents data architecture, the forum implements posting, message, user management and other basic functions. In dealing with massive amounts of data, the performance is excellent according to the experimental data.

Key words: MongoDB; NoSQL; community forums

隨著Web2.0技術的成熟,越來越多的個人用戶參與到互聯(lián)網(wǎng)體系中來。廣大個人用戶所貢獻的智慧和個人聯(lián)系形成的社群影響,代替了原來少數(shù)人所控制和制造的影響。社區(qū)論壇是用戶使用Internet來進行連接,執(zhí)行下載數(shù)據(jù)或程序、上傳數(shù)據(jù)、閱讀新聞、與其他用戶交換信息的分享平臺。

然而,用戶數(shù)據(jù)的激增、用戶實時性要求的增高、需求頻繁的變化使得基于SQL數(shù)據(jù)庫設計的傳統(tǒng)社區(qū)論壇無法滿足新的挑戰(zhàn)。

因此,尋找一種能夠適應未來挑戰(zhàn)的社區(qū)系統(tǒng)解決方案迫在眉睫。

1 NoSQL數(shù)據(jù)庫

NoSQL,即“不僅僅是SQL”,是一場全新的數(shù)據(jù)革命性運動。正如Rick Cattel所指出的NoSQL系統(tǒng)通常具有如下特征:

能夠使用簡單的操作橫向擴展很多節(jié)點;

能夠向節(jié)點復制和分配數(shù)據(jù);

擁有簡單的開發(fā)接口或協(xié)議;

使用弱并發(fā)模型(a weaker concurrency model)而不是使用ACID事務的關系型數(shù)據(jù)庫系統(tǒng);

能夠高效的使用索引和內(nèi)存存儲數(shù)據(jù);

能夠動態(tài)添加新的數(shù)據(jù)屬性。

因此,使用NoSQL設計的數(shù)據(jù)庫系統(tǒng)具有高并發(fā)處理能力、彈性弱存儲結構、動態(tài)的可擴展性等特點,能夠滿足新型社區(qū)系統(tǒng)的需求。

目前,主流NoSQL數(shù)據(jù)庫有MongoDB 、Redis、CouchDB、TC等。其中,MongoDB是一個使用C++開發(fā)的文檔型非關系數(shù)據(jù)庫,MongoDB可以解決海量數(shù)據(jù)的訪問效率問題,對于規(guī)模不斷擴大、數(shù)據(jù)激增的社區(qū)論壇系統(tǒng),這樣的能力顯得尤為重要。MongoDB在數(shù)據(jù)類50GB以上的時候,其訪問速度是MySQL的10倍以上,每秒可處理0.5萬~1.5萬次讀寫請求,同時還包含了支持海量數(shù)據(jù)存儲的分布式文件系統(tǒng)GridFS,同時具有使用Hadoop集群的能力,進一步提高了數(shù)據(jù)處理能力。

2 系統(tǒng)和模塊設計

2.1 系統(tǒng)架構設計

現(xiàn)代Web程序通常規(guī)模龐大,結構復雜,使用良好的設計模式不僅能夠加快開發(fā)速度,還能降低維護難度。因此,系統(tǒng)使用MVC開發(fā)模式,采用Struts2、Spring和Spring-Data開發(fā)框架。Struts2不僅能夠提供一個清晰的框架,通過Action、攔截器等功能可以快速開發(fā)J2EE程序;Spring提供了控制反轉(zhuǎn)、面向方面的編程以及一系列實用的開發(fā)框架; Spring-Data是一款用于非關系數(shù)據(jù)庫的開發(fā)框架,它可以非常容易的訪問非關系型數(shù)據(jù)庫,但是它是一個新型的開發(fā)框架,功能提供并不是很全面,所以部分對MongoDB的操作還需要破解和完善。

系統(tǒng)整體通過MVC設計,用戶在前臺頁面請求操作,Strut2接收操作并使用Spring裝配模型對象,通過Spring-Data與MongoDB進行通信,實現(xiàn)數(shù)據(jù)交換,之后MongoDB返回數(shù)據(jù)給SpringData并與Spring框架通信裝配模型對象,最后通過Struts2返回至前臺頁面,最終用戶將在前臺頁面看到結果。

2.2 系統(tǒng)功能設計

社區(qū)論壇的主體為數(shù)據(jù)內(nèi)容,用戶通過帖子頁面瀏覽他人分享的數(shù)據(jù)內(nèi)容。因此,論壇要能夠瀏覽帖子,同時,當用戶在瀏覽完帖子后使用回帖功能發(fā)表對帖子的見解。用戶可以通過信息面板了解用戶的等級信息,可以修改自己的昵稱進行每日簽到等功能。

社區(qū)論壇通常會通知自己的會員活動消息,因此,用戶應該能夠瀏覽新聞,管理員則應該能夠管理新聞。

部分權限不足的用戶是不能訪問重要帖子的,因此需要權限管理的功能。同時,管理員能夠禁言用戶,增加刪除新聞,以及增加、刪除和修改版塊信息等功能。如圖2所示為功能UML用例圖。

2.3 數(shù)據(jù)庫設計

MongoDB是文檔型非關系數(shù)據(jù)庫。它由數(shù)據(jù)庫、文檔、集合三部分組成。數(shù)據(jù)庫是MongoDB的最大存儲單位,每個數(shù)據(jù)庫可以包含多個集合,每個集合又可以包含多個文檔。每個文檔是可以有自己的數(shù)據(jù)結構的,不像關系型數(shù)據(jù)庫每行記錄都有相同的信息,MongoDB文檔的屬性可以在需要的時候為特定文檔加入,這樣就節(jié)省了存儲空間。圖3是它的基本架構。

MongoDB文檔是可以通過對象直接對應文檔屬性的,這樣符合面向?qū)ο蟮某绦蛟O計思想,有利于程序的開發(fā),且適應變化的需求。

4 性能測試

本系統(tǒng)使用CPU為E3-1230v3內(nèi)存8GB的服務器上測試,分別使用不同的數(shù)據(jù)量進行插入和查詢操作,其中插入操作耗時為一次插入全部數(shù)據(jù)量的耗時,它模擬了大量用戶連續(xù)數(shù)據(jù)交換的場景,可以發(fā)現(xiàn)約29.57s即可插入百萬級數(shù)據(jù)量,即使插入千萬級也僅僅需要4min,完全能夠滿足大量用戶插入數(shù)據(jù)。查詢耗時為在數(shù)據(jù)量基礎上進行單記錄查詢,實驗結果表明查詢速度完全滿足需求。

5 結束語

在NoSQL文檔型數(shù)據(jù)庫MongoDB,以及Struts2、Spring和Sprint-Data開發(fā)框架下,實現(xiàn)的社區(qū)論壇系統(tǒng)能夠滿足海量數(shù)據(jù)存儲及大量用戶訪問的需求,且性能表現(xiàn)良好。

參考文獻:

[1] 黃銳, 孫娜. Web2.0環(huán)境下SNS的發(fā)展策略探析[J]. 商場現(xiàn)代化, 2009(7): 14-15.

[2] 霍多羅夫. MongoDB權威指南[M].北京: 人民郵電出版社, 2011.

[3] Cattell R. Scalable SQL and NoSQL data stores[J]. Acm Sigmod Record, 2010, 39(4): 12-27.

[4] 潘凡. 從MySQL到MongoDB——視覺中國的NoSQL之路[J]. 程序員, 2010(6): 79-81.

[5] Dede E, Govindaraju M, Gunter D, et al. Performance evaluation of a MongoDB and hadoop platform for scientific data analysis[C]// Proceedings of the 4th ACM workshop on Scientific cloud computingACM, 2013.

[6] 張文盛, 鄭漢華. 基于MongoDB構建高性能網(wǎng)站技術研究[J]. 吉林師范大學學報:自然科學版, 2013, 34(1): 123-127.

[7] 蔡柳青. 基于MongoDB的云監(jiān)控設計與應用[D]. 北京: 北京交通大學, 2011.