一、一個大型的SNS網(wǎng)站,是否適合數(shù)據(jù)庫全部用mongodb來做,為什么
一個大型的SNS網(wǎng)站,數(shù)據(jù)庫不適合全部用mongodb來做,原因如下。
1、數(shù)據(jù)一致性問題
MongoDB雖然支持事務(wù),但在某些特定場景下,如對多文檔的復雜操作仍然存在局限性。相較于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,在數(shù)據(jù)一致性方面還存在一定的問題。
2、存儲空間占用較大
MongoDB在存儲文檔的時候會將字段名稱存儲在每個文檔中,這會導致存儲空間占用較大。在大型SNS網(wǎng)站存儲海量數(shù)據(jù)時,這可能會成為一個問題。
3、不支持 JOIN 操作
MongoDB不支持關(guān)系型數(shù)據(jù)庫中類似于JOIN操作的高級查詢功能,這意味著如果需要多表查詢,開發(fā)人員需要自己手動處理,增加系統(tǒng)的復雜度和耗費更多的時間和精力。
4、缺乏豐富的管理工具和資源
相較于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,MongoDB缺乏成熟的管理工具和豐富的資源。在大規(guī)模的SNS網(wǎng)站中,這可能會導致管理和維護數(shù)據(jù)庫變得更加困難和耗時。
5、適用場景有限
MongoDB適合存儲非常規(guī)或更加復雜的數(shù)據(jù)類型,例如嵌套文檔和數(shù)組等。然而,對于結(jié)構(gòu)化類型的數(shù)據(jù)(如用戶登錄、訂單管理等)來說,使用一種傳統(tǒng)的關(guān)系型數(shù)據(jù)庫可能會更加適合。
二、MongoDB概述
1、簡介
MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫。由C++語言編寫。旨在為WEB應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案。
MongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲比較復雜的數(shù)據(jù)類型。Mongo最大的特點是它支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。
簡而言之,MongoDB是文檔型的NoSQL數(shù)據(jù)庫,數(shù)據(jù)以文檔(對應(yīng)關(guān)系型數(shù)據(jù)庫的記錄)的形式在MongoDB中保存,文檔實際上就是一個個JSON字符串,使用JSON的好處是非常直觀,通過一系列的Key-Value鍵值對來表示數(shù)據(jù),符合我們的閱讀習慣。
2、特點
高性能:
MongoDB提供高性能的數(shù)據(jù)持久性。對嵌入式數(shù)據(jù)模型的支持減少了數(shù)據(jù)庫系統(tǒng)上的IO活動。索引支持更快的查詢,并且包含嵌入式文檔和數(shù)組的鍵。
文本索引解決搜索的需求;TTL索引解決歷史數(shù)據(jù)自動過期的需求;地理位置索引可用于構(gòu)建各種 O2O 應(yīng)用。高可用性:
MongoDB的復制工具稱為副本集(reolica set),它包含提供自動故障轉(zhuǎn)移和數(shù)據(jù)冗余。
高可用性:
MongoDB提供了水平可擴展性作為其核心功能的一部分。分片將數(shù)據(jù)分布在一組集群的機器上。(海量數(shù)據(jù)存儲、服務(wù)能力水平擴展)
從3.4起,MongoDB支持基于片鍵創(chuàng)建數(shù)據(jù)區(qū)域,在一個平衡的集群中,MongoDB將一個區(qū)域所覆蓋的讀寫只定向到該區(qū)域內(nèi)的那些片。
豐富的查詢支持:
MongoDB支持豐富的查詢語言,支持讀寫(CRUD)操作、比如數(shù)據(jù)聚合、文本搜索、地理空間查詢等。
其他特點:
如動態(tài)模式、靈活的文檔模型。
3、應(yīng)用場景
游戲場景:使用MongoDB存儲游戲用戶信息、裝備、積分等,直接以內(nèi)嵌文檔的形式存儲,方便查詢、更新。物流場景:使用MongoDB存儲訂單信息、訂單狀態(tài)、物流信息,訂單狀態(tài)在運送過程中飛速迭代、以MongoDB內(nèi)嵌數(shù)組的形式來存儲,一次查詢就能將訂單所有的變更查出來,牛逼plus。社交場景:使用MongoDB存儲用戶信息,朋友圈信息,通過地理位置索引實現(xiàn)附近的人、定位功能。物聯(lián)網(wǎng)場景:使用MongoDB存儲設(shè)備信息、設(shè)備匯報的日志信息、并對這些信息進行多維度分析。視頻直播:使用MongoDB存儲用戶信息、點贊互動信息。4、語言支持
MongoDB有官方的驅(qū)動如下:
CC++C# / .NETErlangHaskellJavaJavaScriptLispnode.JSPerlPHPPythonRubyScalaGo5、應(yīng)用案例
Craiglist,上使用MongoDB的存檔數(shù)十億條記錄。FourSquare,基于位置的社交網(wǎng)站,在Amazon EC2的服務(wù)器上使用MongoDB分享數(shù)據(jù)。Shutterfly,以互聯(lián)網(wǎng)為基礎(chǔ)的社會和個人出版服務(wù),使用MongoDB的各種持久性數(shù)據(jù)存儲的要求。bit.ly, 一個基于Web的網(wǎng)址縮短服務(wù),使用MongoDB的存儲自己的數(shù)據(jù)。spike.com,一個MTV網(wǎng)絡(luò)的聯(lián)營公司, spike.com使用MongoDB的。Intuit公司,一個為小企業(yè)和個人的軟件和服務(wù)提供商,為小型企業(yè)使用MongoDB的跟蹤用戶的數(shù)據(jù)。sourceforge.net,資源網(wǎng)站查找,創(chuàng)建和發(fā)布開源軟件免費,使用MongoDB的后端存儲。etsy.com ,一個購買和出售手工制作物品網(wǎng)站,使用MongoDB。紐約時報,名列前茅的在線新聞門戶網(wǎng)站之一,使用MongoDB。CERN,知名的粒子物理研究所,歐洲核子研究中心大型強子對撞機的數(shù)據(jù)使用MongoDB。延伸閱讀1:什么是SNS
SNS俗稱社會性網(wǎng)絡(luò)服務(wù),是一種新興的網(wǎng)絡(luò)應(yīng)用,是指人和人之間通過朋友、理想、交易、興趣、愛好等一定關(guān)系建立起來的社交化網(wǎng)絡(luò)結(jié)構(gòu),它是基于現(xiàn)實六度關(guān)系理論發(fā)展起來的社會網(wǎng)絡(luò)關(guān)系系統(tǒng)網(wǎng)絡(luò)形態(tài)。具有代表性的如微博、人人網(wǎng)、開心網(wǎng)等,它們擁有大量的用戶群體,對很多人特別是年輕群體有著深刻的影響,由于高昂的人氣,而蘊含著巨大商機,引發(fā)更多的企業(yè)以SNS營銷創(chuàng)造更大價值。