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