重溫《NoSQL精粹》

在網上有關Redis相關文章滿天飛的時候,這個時候我決定重溫一下NoSQL。它是什麼,用於解決什麼問題,有哪些相相似的技術,與傳統的關係型數據庫有哪些差異,何時使用?
也正如書中所說的,篇幅短小,內容卻很豐富。新技術的誕生,咱們應該以既穩健又前瞻的心態看待它。程序員

1. 它是什麼,用於解決什麼問題?

其實NoSQL的定義並不許確,初意Not Only SQL,不是表達No,SQL!
它就泛指如今描述的非關係型數據庫,幫助主張無模式(schemaless)的數據,能夠運行在集羣環境,可以犧牲傳統數據庫所具有的一致性,換取一些新特性。能構建出穩定性更高,擴展性更好的編程系統。
有兩個主要解決問題:數據庫

  • 應用程序的開發效率。更符合應用程序的數據模型,簡化交互,減小代碼量。
  • 大規模數據。快速獲取並處理數據。編程


     
    NoSQL

2.它的「友邦」

 
聚合數據模型

分佈式模型

催生NoSQL的主要緣由是:須要一種能勾運行在大集羣上的數據庫。隨着數據量愈來愈多,購買服務器的縱向擴展scale up會變得愈發困難和昂貴,因此催生橫向擴展的面向聚合數據庫。服務器

3. 選擇合適的數據庫

寬泛的說,選用NoSQL數據庫有兩個緣由:less

  • 提升程序員的工做效率;
  • 改善數據訪問性能;

兩種因素可能互補也可能相互衝突,由於很難將數據存儲模型的決策過程抽象出來,稍後再要修改,也頗爲不易分佈式

在決定適用某個NoSQL技術前,必定要測試其是否如預期般改進了程序員工做效率及數據訪問性能。用服務封裝數據庫,能在需求變動或技術成熟後改換其餘數據庫技術。性能

相關文章
相關標籤/搜索