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