簡體   English   中英

NoSQL(Cassandra/Mongo)與 RDBMS

[英]NoSQL (Cassandra/Mongo) vs RDBMS

嗨,我正在從系統設計的角度學習 NoSQL 數據庫的功能,並且還了解到許多大公司使用分片 RDBMS 而不是那些 nosql 數據庫來保存他們的數據。

這是否使得 NoSQL 數據(Cassandra/MongoDB)的唯一優勢是因為它是現成的分布式解決方案並且維護成本低?

關系數據庫和 nosql 數據庫是不同的野獸。 關系數據庫適用於大多數用例,但無法滿足 web 規模數據的需求,其中數百萬條記錄會在很短的時間內出現。 為了解決這些問題(網絡規模數據),設計了 nosql 解決方案。 所以不要認為組織更喜歡 nosql 只是為了廉價的維護,它是定義使用哪種數據庫技術的用例。

讀到很多大公司都使用 shard rmdb

在我的上一份工作中,我的組織支持手動分片 Postgres 解決方案。 它給我們帶來了巨大的痛苦,因為它的大小難以管理和維護。 請記住,RDBMS 並不是真正設計為以這種方式工作的。

nosql...的唯一優勢是因為它是現成的分布式解決方案

這個決定實際上是關於權衡的。 當您的數據工作負載無法由單個數據庫實例處理或您需要正常運行時間而沒有單點故障時,NoSQL 可以為您提供幫助。 經常發現為了分區容錯性和可用性而犧牲一致性的數據庫(“AP”數據庫)能夠以很少的延遲處理大型工作負載,因為它們能夠將數據(以及查詢)傳播到多個服務器實例。

此外,如果您的數據需要具有地理或數據中心意識,您將需要一個支持該功能的數據庫。 試圖使數據庫產品以原始設計沒有考慮的方式工作,是痛苦的秘訣。

維護成本低

詢問任何經營企業數據庫組織的人,他們會告訴您 NoSQL 維護起來並不便宜(或容易)。 當然,您可能會得到一個您不必“購買”的開源產品,但您將需要(通常是高薪的)數據庫工程師來維護它。

可擴展性隨着 nosql 的設計而出現,但似乎 sql 也可以實現相同的功能,主要問題只是擴展時的維護/配置。

這取決於。 您計划擴展到多大,需要支持多少數據副本? 像 Apple 這樣的大型企業擁有數千台運行 Apache Cassandra 的服務器。 他們這樣做是因為 iCloud 需要擴展以支持 9 億 iPhone 用戶的需求。 他們可以根據對計算資源的需求輕松添加(放大)或刪除(縮小)。

與使用 Cassandra (NoSQL) 相比,使用關系數據庫實現這種級別的可伸縮性需要做更多的工作。 當您發現需要進一步擴展時,您基本上是在查看數據重新加載方案(因為分片大小本質上會發生變化)以將數據獲取到新實例。 數據庫團隊將(很快)達到擴展 RDBMS 所需的工作量不切實際的地步。

另一方面,客戶端應用程序如何知道哪個關系數據庫服務器發送查詢? 對於大多數關系數據庫,您最終將不得不以某種方式構建或擴充該邏輯層。 當數據庫實例的數量發生變化時,您也需要應用程序知道這一點。 NoSQL 數據庫負責節點發現,並且(大多數)將其抽象化,因此客戶端應用程序無需擔心它。

另請記住,並非所有 NoSQL 數據庫都是平等創建的。 在某些產品上,只有某些節點會接受寫入。 在某些產品上,任何節點都可以處理讀取或寫入。 關系數據庫對此沒有任何概念,因此您也必須考慮到這一點。

tl;博士;

由於縮放,它比僅維護要復雜得多 如果不是這樣,每個主要的關系數據庫都會有一個簡單的方法來處理它,並且 NoSQL DB 將是無關緊要的。 但那還沒有發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM