?

基于MongoDB的社區論壇設計與研究

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

楊衛平++張子頔

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

關鍵詞:MongoDB;NoSQL;社區論壇

中圖分類號: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技術的成熟,越來越多的個人用戶參與到互聯網體系中來。廣大個人用戶所貢獻的智慧和個人聯系形成的社群影響,代替了原來少數人所控制和制造的影響。社區論壇是用戶使用Internet來進行連接,執行下載數據或程序、上傳數據、閱讀新聞、與其他用戶交換信息的分享平臺。

然而,用戶數據的激增、用戶實時性要求的增高、需求頻繁的變化使得基于SQL數據庫設計的傳統社區論壇無法滿足新的挑戰。

因此,尋找一種能夠適應未來挑戰的社區系統解決方案迫在眉睫。

1 NoSQL數據庫

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

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

能夠向節點復制和分配數據;

擁有簡單的開發接口或協議;

使用弱并發模型(a weaker concurrency model)而不是使用ACID事務的關系型數據庫系統;

能夠高效的使用索引和內存存儲數據;

能夠動態添加新的數據屬性。

因此,使用NoSQL設計的數據庫系統具有高并發處理能力、彈性弱存儲結構、動態的可擴展性等特點,能夠滿足新型社區系統的需求。

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

2 系統和模塊設計

2.1 系統架構設計

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

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

2.2 系統功能設計

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

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

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

2.3 數據庫設計

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

MongoDB文檔是可以通過對象直接對應文檔屬性的,這樣符合面向對象的程序設計思想,有利于程序的開發,且適應變化的需求。

4 性能測試

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

5 結束語

在NoSQL文檔型數據庫MongoDB,以及Struts2、Spring和Sprint-Data開發框架下,實現的社區論壇系統能夠滿足海量數據存儲及大量用戶訪問的需求,且性能表現良好。

參考文獻:

[1] 黃銳, 孫娜. Web2.0環境下SNS的發展策略探析[J]. 商場現代化, 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構建高性能網站技術研究[J]. 吉林師范大學學報:自然科學版, 2013, 34(1): 123-127.

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

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合