在網上有關Redis相關文章滿天飛的時候,這個時候我決定重溫一下NoSQL。它是什麼,用於解決什麼問題,有哪些相類似的技術,與傳統的關係型資料庫有哪些差別,什麼時候使用?也正如書中所說的,篇幅短小,內容卻很豐富。新技術的誕生,我們應該以既穩健又前瞻的心態看待它。 1. 它是什麼,用於解決什麼問題? ...
在網上有關Redis相關文章滿天飛的時候,這個時候我決定重溫一下NoSQL。它是什麼,用於解決什麼問題,有哪些相類似的技術,與傳統的關係型資料庫有哪些差別,什麼時候使用?
也正如書中所說的,篇幅短小,內容卻很豐富。新技術的誕生,我們應該以既穩健又前瞻的心態看待它。
1. 它是什麼,用於解決什麼問題?
其實NoSQL的定義並不准確,初意Not Only SQL,不是表達No,SQL!
它就泛指現在描述的非關係型資料庫,幫助主張無模式(schemaless)的數據,可以運行在集群環境,能夠犧牲傳統資料庫所具備的一致性,換取一些新特性。能構建出穩定性更高,擴展性更好的編程系統。
有兩個主要解決問題:
- 應用程式的開發效率。更符合應用程式的數據模型,簡化交互,減少代碼量。
-
大規模數據。快速獲取並處理數據。
NoSQL
2.它的“友邦”
聚合數據模型分散式模型
催生NoSQL的主要原因是:需要一種能勾運行在大集群上的資料庫。隨著數據量越來越多,購買伺服器的縱向擴展scale up會變得愈發困難和昂貴,所以催生橫向擴展的面向聚合資料庫。
3. 選擇合適的資料庫
寬泛的說,選用NoSQL資料庫有兩個原因:
- 提高程式員的工作效率;
- 改善數據訪問性能;
兩種因素可能互補也可能相互衝突,因為很難將數據存儲模型的決策過程抽象出來,稍後再要修改,也頗為不易。
在決定適用某個NoSQL技術前,一定要測試其是否如預期般改進了程式員工作效率及數據訪問性能。用服務封裝資料庫,能在需求變更或技術成熟後改換其他資料庫技術。