對的,NoSQL數據庫是針對點的,關係型數據庫是針對面的前端
①KV鍵值對:redis,內容緩存,主要用於處理大量數據的高訪問負載等;
②bson:文檔數據庫,MongoDB 是一個基於分佈式文件存儲的數據庫,C++編寫的。皆在爲web應用提供可擴展的高性能數據存儲解決方案。它介於關係型數據庫與非關係型數據庫之間的產品,是非關係型中功能最豐富的,且最像關係型數據庫的;
③列存儲數據庫:分佈式文件系統
④圖關係型數據庫 :它不是放圖的,放的是 關係:如朋友圈社交網絡等。專一於關係圖譜。web
主從複製:往主服務裏插入一條數據的同時,也往從服務裏寫入一條數據(備份、容災)
讀寫分離:通常主做爲寫(20%),從做爲讀(80%)redis
全部的東西都部署在一臺機器上,包括站點、數據庫、文件等等(如今阿里雲的出現方便了不少)。核心工做就是:前端傳過來一些數據,而後業務邏輯層拼裝,而後訪問數據庫,數據庫返回數據,數據拼裝成頁面,最終返回到瀏覽器。
這時候數據庫可能會率先成爲瓶頸,在流量峯值期容易宕機,第一能夠優化sql語句,第二,典型的應用都是讀數據庫頻率遠大於寫數據庫頻率。這時候能夠採用讀寫分離,多讀一寫的數據庫架構(通常是20%是寫庫,80%是讀庫);算法
這時候的主要矛盾點已經變爲業務複雜度的提高帶來的耦合,致使升級困難,開發容易引入bug,維護成本也提高。sql
一、Memcached 分佈式緩存服務器,經過文件緩存來緩解數據庫壓力,爲多個web服務器提供了一個共享的高性能緩存服務。在Memcached服務器上,又發展了根據hash算法來進行多臺Memcached緩存服務的擴展,而後又出現了一致性hash來解決增長或減小緩存服務器致使從新hash帶來的大量緩存失效的弊端。數據庫
不足:
因爲數據庫的寫入壓力增長,Memcached只能緩解數據庫的讀取壓力。讀寫集中在一個數據庫上讓數據庫不堪重負,大部分網站開始使用主從複製技術來達到讀寫分離,以提升讀寫性能和讀庫的可擴展性。Mysql的master-slave模式成爲這個時候的網站標配了。json
二、主從複製讀寫分離
主從複製:往主服務裏插入一條數據的同時,也往從服務裏寫入一條數據(備份、容災)
讀寫分離:通常主做爲寫(20%),從做爲讀(80%)數組
三、在Memcached 高速緩存、MySQL主從複製,讀寫分離的基礎之上,因爲大量數據的增長,寫壓力開始出現瓶頸,因爲MyISAM使用表鎖,在高併發下會出現嚴重的鎖問題,大量的高併發MySQL應用開始使用InnoDB引擎代替MyISAM。
同時開始使用分庫分表來緩解壓力。
MySQL的擴展性差(須要複雜的技術來實現),大數據下IO壓力大,表結構更改困難,正是當前使用MySQL的開發人員面臨的問題。瀏覽器
四、爲何用NoSQL?
今天咱們能夠經過第三方平臺(如:Google,Facebook等)能夠很容易的訪問和抓取數據。用戶的我的信息,社交網絡,地理位置,用戶生成的數據和用戶操做日誌已經成倍的增長。
咱們若是要對這些用戶數據進行挖掘,那SQL數據庫已經不適合這些應用了, NoSQL數據庫的發展也卻能很好的處理這些大的數據。緩存
NoSQL(NoSQL = Not Only SQL ),意即「不只僅是SQL」, 泛指非關係型的數據庫。
一、做用
NoSQL數據庫種類繁多,可是一個共同的特色都是去掉關係數據庫的關係型特性。數據之間無關係,這樣就很是容易擴展。也無形之間,在架構的層面上帶來了可擴展的能力。
NoSQL數據庫都具備很是高的讀寫性能,尤爲在大數據量下,這得益於它的無關係性,數據庫的結構簡單。
NoSQL無需事先爲要存儲的數據創建字段,隨時能夠存儲自定義的數據格式。而在關係數據庫裏,增刪字段是一件很是麻煩的事情。若是是很是大數據量的表,增長字段簡直就是一個噩夢。
二、關係型數據庫(RDBMS)VS 非關係型數據庫(NoSQL)
RDBMS:
基礎事務
NoSQL:
總結: RDBMS 和NoSQL都有各自的特色和使用的應用場景,讓關係數據庫關注在關係上,NoSQL關注在存儲上。
一、3V 和 3高
3V: 海量的數據流量;多樣(商品種類、各式各樣);實時的數據需求
3高: 高併發;高可用;高性能
4、NoSQL 數據模型簡介
傳統的關係型數據模型的設計基本上是 基於數據庫範式創建1:1 / 1:N / N:N,主外鍵的關係設計。
一、NoSQL的設計:
使用Bson() 相似於json的一種二進制形式的存儲格式,簡稱 Binary JSON,它也一樣支持內嵌的文檔對象和數組對象。
二、聚合模型
高併發的操做是不太建議有關聯查詢的,互聯網公司用冗餘數據來避免關聯查詢,分佈式事務是支持不了太多的併發的。
三、NoSQL數據庫的四大分類:
①KV鍵值對:redis,內容緩存,主要用於處理大量數據的高訪問負載等;
②bson:文檔數據庫,MongoDB 是一個基於分佈式文件存儲的數據庫,C++編寫的。皆在爲web應用提供可擴展的高性能數據存儲解決方案。它介於關係型數據庫與非關係型數據庫之間的產品,是非關係型中功能最豐富的,且最像關係型數據庫的;
③列存儲數據庫:分佈式文件系統
④圖關係型數據庫 :它不是放圖的,放的是 關係:如朋友圈社交網絡等。專一於關係圖譜。
參考:互聯網背景下爲何會出現NoSQL? - CSDN博客https://blog.csdn.net/u013709087/article/details/78313923