嗨,我正在從系統設計的角度學習 NoSQL 資料庫的功能,并且還了解到很多大公司使用分片 RDBMS 而不是那些 nosql 資料庫來保存他們的資料。
這是否使得 NoSQL 資料(Cassandra/MongoDB)的唯一優勢是因為它是現成的分布式解決方案并且維護成本低?
uj5u.com熱心網友回復:
讀到很多大公司都使用 shard rmdb
在我的上一份作業中,我的組織支持手動分片 Postgres 解決方案。它給我們帶來了巨大的痛苦,因為它的大小難以管理和維護。請記住,RDBMS 并不是真正設計為以這種方式作業的。
nosql 的唯一優勢......是因為它是現成的分布式解決方案
這個決定實際上是關于權衡的。當您的資料作業負載無法由單個資料庫實體處理或您需要正常運行時間而沒有單點故障時,NoSQL 可以為您提供幫助。經常發現為了磁區容錯性和可用性而犧牲一致性的資料庫(“AP”資料庫)能夠以很少的延遲處理大型作業負載,因為它們能夠將資料(以及查詢)傳播到多個服務器實體。
此外,如果您的資料需要具有地理或資料中心意識,您將需要一個支持該功能的資料庫。試圖使資料庫產品以原始設計沒有考慮的方式作業,是痛苦的秘訣。
維護成本低
詢問任何經營企業資料庫組織的人,他們會告訴你 NoSQL 維護起來并不便宜(或容易)。當然,您可能會得到一個您不必“購買”的開源產品,但您將需要(通常是高薪的)資料庫工程師來維護它。
可擴展性隨著 nosql 的設計而出現,但似乎 sql 也可以實作相同的目標,主要問題只是擴展時的維護/配置。
這取決于。您計劃擴展到多大,需要支持多少資料副本?像 Apple 這樣的大型企業擁有數千臺運行 Apache Cassandra 的服務器。他們這樣做是因為 iCloud 需要擴展以支持 9 億 iPhone 用戶的需求。他們可以根據對計算資源的需求輕松添加(放大)或洗掉(縮小)。
與使用 Cassandra (NoSQL) 相比,使用關系資料庫實作這種級別的可伸縮性需要做更多的作業。當您發現需要進一步擴展時,您基本上是在查看資料重新加載方案(因為分片大小本質上會發生變化)以將資料獲取到新實體。資料庫團隊將(很快)達到擴展 RDBMS 所需的作業量不切實際的地步。
The other aspect, is that how does the client application know which of the relational database servers to send the query? For most relational databases, you'll end up having to build out or augment that logic layer somehow. And when the number of database instances changes, you'll need the application to know about that, too. NoSQL databases account for node discovery, and (most) abstract that so the client application doesn't need to worry about it.
Also remember that not all NoSQL databases are created equally. On some products, only certain nodes will accept writes. On some products, any node can handle a read or a write. Relational databases don't have any concept of that, so you would have to account for that as well.
tl;dr;
由于縮放,它比僅維護要復雜得多。如果不是這樣,每個主要的關系資料庫都會有一種簡單的方法來處理它,而 NoSQL DB 將是無關緊要的。但那還沒有發生。
uj5u.com熱心網友回復:
關系資料庫和 nosql 資料庫是不同的野獸。關系資料庫在大多數用例中都能很好地服務,但它們在滿足網路規模資料方面存在不足,因為這些資料在很短的時間內就會出現數百萬條記錄。為了解決這些問題(網路規模資料),設計了 nosql 解決方案。所以不要認為組織更喜歡 nosql 只是為了便宜的維護,它是定義使用哪種資料庫技術的用例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/422861.html
標籤:
