壹、NoSQL定義
NoSQL(Not Only SQL),意即?不僅僅是SQL?,泛指非關系型數據庫。NoSQL數據庫的產生就是為了解決大規模數據集合多重數據種類帶來的挑戰,例如谷歌或Facebook每天為他們的用戶收集萬億比特的數據,這些類型的數據存儲不需要固定的模式,無需多余操作就可以橫向擴展。
二、NoSQL的優勢
1.易擴展
NoSQL數據庫種類繁多,但有壹個***同的特點是去掉關系數據庫的關系型特性。數據間無關系,這樣就非常容易拓展,無形之間在架構層面上帶來了可擴展的能力。
2.大數據量高性能
NoSQL數據庫具有非常高的讀寫性能,尤其在大數據量下,壹秒鐘寫8萬,讀16萬次
3.多樣靈活的數據模型
NoSQL無需事先為要存儲的數據建立字段,隨時可以根據存儲自定義數據格式,而在關系型數據庫裏增刪字段,比如在存儲微信用戶信息的表裏添加壹個手機號字段,簡直就是噩夢。
4.RDBMS和NoSQL
關系型數據庫&非關系型數據庫的對比
三、3V+3高
海量:微博
多樣:呈現方式是圖片、文字等,終端是手機、電腦、pad等。
實時:12306的鐵路信息需要做到實時更新,但是做不到絕對的實時,只能做到準實時。
高並發:12306在搶火車票的時候是高並發的
高可擴(擴展性):
橫向擴展:針對多臺機器,多臺機器整合成壹個集群
縱向擴展:針對壹臺機器,2G不夠了,插兩條4G就變8G,但縱向擴展長期來看總有盡頭
四、NoSQL數據模型簡介
(壹)以壹個電商客戶、訂單、訂購、地址模型來對比關系型數據庫和非關系型數據庫數據庫
1.關系型數據庫:
2.非關系型數據庫:
就像壹個jason串壹樣,被稱為聚合模型
(二)思考
為什麽上述情況可以用聚合模型來處理?
1.在關系型數據庫裏用left join 關聯查詢,但是涉及多張表,查詢語句很長很復雜
2.跨庫
3.分布式事務無法支持太多並發
?4.NoSQL只要查到客戶信息的ID,所有的信息都放在壹起,不用像關系型數據庫查很多表
(三)、聚合模型
1.KV鍵-值對
2.文檔型數據庫(Bson格式比較多):見上截圖
Monddb,最像關系型數據庫的非關系型數據庫
3.列存儲數據庫:
4. 圖關系數據庫:
就像我們復雜的親戚人際關系,如:微博上妳的好友關註什麽話題
五、在分布式數據庫中CAP原理CAP+BASE
(壹)CAP
ACID:傳統的關系型數據庫
CAP:NoSQL
CAP只能三個中滿足兩個,而由於當前的網絡硬件肯定會出現延遲丟包等問題,所以分區容錯性是我們必須要實現的,我們只能在壹致性和可用性之間進行權衡。
CA:傳統型Oracle數據庫
AP:大多數網站架構的選擇
CP:Redis、Mongodb
強壹致性(C),淘寶商品的點贊數不用做到強壹致性;但公司每日的早晚打卡軟件就需要做到強壹致性,不然影響員工的KPI
高可用性(A),網站不能崩了
分區容忍性(P)
補充:C與A的選擇
(二)BASE
雙十壹當時可能商品點贊數10000,但是只統計到6000,是弱壹致性,但是高峰結束之後還是想讓數據不那麽離譜,所以加上BASE,BASE最重要的就是最終執行
犧牲C,換取AP
集群就相當於之前的負載均衡
(壹)Redis-NoSql是什麽、能幹嘛,與關系型數據庫的區別
標簽:操作簡單oracle數據庫數據格式網絡高性能字段分區集群