我有一個在提取資料方面要求很高的應用程式。每次用戶登錄都會拉取資料,每次訪問新頁面都會拉取資料,等等。
假設這些查詢永遠不會涉及連接。
我可以假設查詢會擴展嗎?
uj5u.com熱心網友回復:
不,這并不意味著使用 MongoDB 并且不使用連接意味著“您的查詢將擴展”。這是 MongoDB 營銷所講的一個神話,而不是真正的軟體工程。
這取決于您的查詢在做什么。無論您使用什么品牌的資料存盤,每個查詢都有成本。每個資料訪問都需要使用服務器上的資源,并且資源使用量加起來。您是否查詢會掃描 MongoDB 資料存盤中的數千或數百萬個檔案?他們需要做map-reduce嗎?查詢回應中有多少檔案?是拉取快取的資料,還是拉取該資料會產生 I/O 開銷?您每秒需要處理多少個請求?MongoDB 能否支持您需要執行的查詢速率?您是在配置 MongoDB 副本集還是分片集群?您查詢需要訪問多少個分片才能獲得結果?托管每個節點的服務器有多強大?
這些是您需要了解和分析查詢和 MongoDB 集群的問題型別的一些示例(串列不完整)。
你不需要給我這些問題的答案。我只是用它們來說明為什么問“它會擴展嗎?”是一個天真的問題。
這就像問“我需要開車去我哥哥家,我需要給我的油箱加滿油嗎?” 這些資訊不足以回答問題。你弟弟家離你有多遠?你有什么型別的車輛?它的燃油效率如何?您的車輛是否裝載了大量重型貨物?你需要多少次旅行?你開多快?路線上的道路有多崎嶇?
uj5u.com熱心網友回復:
根據您的需要,可能有很多事情需要考慮,但我認為主要區別來自檔案資料模型(MongoDB 旨在支持和擴展)
檔案 => 1 個地方的更多相關資料
- 更少的連接(昂貴,特別是如果資料在不同的機器上)
- 更少的交易(單個檔案更新是原子的)
- 更簡單的小架構,更適合您的應用程式
- 資料模型,類似于程式員在物件(地圖)/陣列上保存資料的方式
如果您有許多應用程式或太多不同的方式來訪問相同的資料,也許您最終會將更多的資料規范化為更通用的資料表示 => 失去上述一些好處或復制一些資料以滿足不同的需求。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/389735.html
標籤:sql 数据库 MongoDB nosql 关系型数据库
上一篇:為什么設定了readPreference=secondaryPreferred然后在主服務器關閉時無法連接到資料庫?
