為了實現高可用性和可伸縮性,術語“最終一致性”指的是在幾台機器上擁有數據的副本。因此,對一個係統上的數據項所做的任何更改都必須複製到所有其他副本上。
數據複製可能不是即時的,因為有些副本隻需更新一次,而其他副本則需要更長的時間。這些副本一開始可能不一致,但隨著時間的推移,它們會變得一致。因此,“終極一致性”一詞應運而生。
基本可用,軟狀態,最終一致性
- 基本可用,意思是根據CAP定理,DB總是可用的。
- 軟狀態,是指即使沒有輸入,係統的狀態也可以改變。
- 最終的一致性,意味著隨著時間的推移,係統將變得更加一致。
NoSQL數據庫的優點:
- 可以將它用作主要數據源或分析數據源。
- 大數據能力。
- 沒有單一的故障點。
- 複製很簡單。
- 不需要單獨的緩存層。
- 它提供了快速性能和水平可伸縮性。
- 能夠有效地處理結構化、半結構化和非結構化數據。
- 麵向對象編程是一種易於使用和適應的編程類型。
- NoSQL數據庫不需要專用的高性能服務器。
- 支持關鍵的開發人員語言和平台。
- RDBMS比較難實現。
- 它有可能成為基於web的應用程序的關鍵數據源。
- 管理大數據,包括數據的速度、多樣性、數量和複雜性。
- 分布式數據庫和多數據中心運營是他的兩個亮點。
- 不需要專門的緩存層進行數據存儲。
- 提供靈活的模式,可以隨時更改,而不會導致停機或服務中斷。
NoSQL數據庫的缺點:
- 沒有標準化的規範。
- 查詢功能有限。
- 關係數據庫管理係統(RDBMS)的數據庫和工具已經比較成熟。
- 它缺乏標準的數據庫特性,例如當多個事務同時執行時的一致性。
- 隨著數據量的增長,保存惟一值變得更加困難,因為鍵變得更加難以記住。
- 對於關係數據,它就不能很好地工作了。
- 對於新手開發人員來說,學習曲線是陡峭的。
- 對於企業來說,開源的選擇並不常見。
下麵我們將看到NoSQL中的一些重要問題:
NoSQL是什麼?
NoSQL指的是一組數據庫技術,該技術是為了應對有關人員、事物和產品的數據量的增加而開發的。訪問該數據的次數,以及性能和處理需求。另一方麵,關係數據庫不是為了處理現代應用程序所麵臨的規模和敏捷性問題而創建的,也不是為了利用當今的低成本存儲和處理能力而構建的。
為什麼NoSQL是最終的一致性?
這是因為幾乎所有的NoSQL係統都是為分布式而構建的,在完全分布式的係統中保持嚴格的一致性有一個超線性的開銷(這意味著在事情變慢之前,您隻能擴展到這個程度,當事情變慢時,您需要再次擴展)。
什麼是CAP定理?
數據庫的一致性、可用性和分區容限(CAP)定理是一個關於分布式數據存儲的理論計算機科學假設,該假設指出,在分布式數據庫發生網絡故障的情況下,一致性或可用性都可以提供,但不能同時提供。
CAP定理適用於NoSQL嗎?
根據CAP定理,NoSQL數據庫有限製。數據庫的三個承諾中隻有兩個可以實現——一致性、可用性和分區容忍度。CAP定理適用於分布式係統,當隻提供三個理想性質中的兩個時。
NoSQL DB如何預算內存?
複製節點是主要的內存使用者,並處理NoSQL DB存儲中的數據。複製節點使用的Java堆和緩存的大小會影響性能。默認情況下,NoSQL DB根據存儲節點的可用內存量計算複製節點堆和緩存。
我們建議為makebootconfig使用-memory mb標誌,或者使用memory mb Storage Node參數為存儲節點提供可用內存。如果不指定內存mb,則將使用節點上可用的內存。由該存儲節點承載的複製節點進程的堆將占內存mb的85%。如果存儲節點有多個複製節點,則內存將在它們之間平均共享。
如果存儲節點上的複製節點數量不同,則會動態計算每個rn的內存。rnHeapPercent Storage Node選項控製使用的堆比例。您可以選擇更改85%的默認值。每個複製節點都有一個緩存,默認情況下,緩存大小設置為複製節點堆的70%。rnCachePercent Replication Node參數可用於覆蓋默認的70%。
還可以通過在複製節點的javaMiscParams參數中指定-Xmx參數直接確定複製節點的堆。類似地,緩存大小複製節點參數可用於設置複製節點緩存的大小。雖然這是可行的,但建議您使用Storage Node內存mb設置。
例如,假設您將內存mb設置為3000,以允許存儲節點使用3000 mb的內存。如果存儲節點承載兩個複製節點,則每個RN的堆將為(3000 *.85)/2 = 1275MB。每個RN緩存將是892MB(1275 *.70)。
NoSQL數據庫與Oracle數據庫交互嗎?
NoSQL數據庫支持外部表功能來獲取記錄。這允許您運行一些Oracle數據庫查詢並從NoSQL數據庫獲取記錄。