點擊上方藍色字體,選擇「置頂或者星標」 web
優質文章第一時間送達!sql
NoSQL概述
爲何要使用Nosql
咱們如今處理什麼年代 2020年 大數據時代 適者生存 學習纔是在這個社會生存的惟一法則。數據庫
1.單機MySQL的年代
90年代, 一個基本網站訪問量通常不會太大, 單個數據庫徹底足夠!那個時候更多的使用靜態網頁 HTML 服務器根本沒有壓力 思考下:整個網站的瓶頸是什麼?編程
-
數據量太大, 一個機器放不下json
-
數據索引 (300萬條數據就必定創建索引! B+樹), 一個機器內存也放不下瀏覽器
-
訪問量(讀寫混合), 一臺服務器承受不了緩存
只要你開始出現以上三種狀況之一, 那麼就必須晉級!服務器
2.Memcached(緩存) + MySQL + 垂直拆分
網站80%的狀況都是在讀數據, 每次都要查詢數據就很麻煩, 因此說咱們但願減輕數據壓力, 咱們可使用緩存來保證效率!微信
發展過程:優化數據結構-->文件緩存(IO)-->Memcached(緩存 當時最熱門的技術!)網絡
3.分庫分表+水平拆分+MySQL集羣
技術和業務發展的同時, 對人的要求也愈來愈高 本質:數據庫(讀 寫)
早些年MyISAM:表鎖, 十分影響效率!高併發下就會出現嚴重的問題, 轉到Innodb:行鎖
慢慢的就開始使用分庫分表來解決寫的壓力! MySQL在那個年代推出了表分區 這個並無多少公司使用 MySQL集羣
4.現在年代
技術爆炸 2010-2020 十年之間, 世界發生翻天覆地的變化
MySQl關係型數據庫就不夠用了, 數量巨多, 變化很快
MySQL有的使用它來存儲一些比較大的文件, 博客 圖片 數據庫表很大, 效率就低了!若是有一種數據庫專門來處理這種數據 MySQL的壓力就會十分小(研究如何處理這些問題) 大數據IO壓力下, 表幾乎沒辦法更大!
5.目前一個基本互聯網項目!
6.爲何要用NoSQL
用戶的我的信息, 社交網絡, 地理位置. 用戶本身產生的數據, 用戶日誌等等爆發式的增加 這時候咱們就應該使用NoSQL數據庫, NoSQL能夠很好的處理以上的狀況.
什麼是NoSQL
NoSQL
NoSQL = Not Only SQL(不只僅是SQL)泛指非關係型數據庫,隨着 Web2.0 互聯網的誕生, 傳統關係型數據庫很難對付web2.0時代!尤爲是超大規模的高併發的社區 暴露出不少難以克服的問題, NoSQL在當今大數據環境下發展的十分迅速,Redis是發展最快的,並且當下必須掌握一個技術
不少數據類型用戶的我的信息,社交網絡,地理位置。這些數據類型的存儲要有一個固定的格式!不須要多餘的格式就能夠橫向擴展的!Map<String, Object> 使用鍵值對
NoSQL特色
解耦
-
方便拓展(數據之間沒有關係, 很好擴展)
-
大數據量 高性能(Redis一秒些8萬次 讀取11萬 NoSQL的緩存記錄, 是一種細粒度的緩存, 性能會比較高)
-
數據類型是多樣的!(不須要事先設計數據庫! 隨取隨用 若是是十分大的表, 不少人就沒法設計了)
-
傳統的RDBMS和NoSQL
-
傳統的RDBMS:結構化組織、SQL、數據和關係都存在單獨的表中row col、操做數據、數據定義語言、嚴格的一致性、基礎事務......
-
NoSQL: 不只僅是數據、沒有固定的查詢語言、鍵值對存儲、列存儲、文檔存儲(社交關係)、最終一致性、CAP原理 和 BASE (異地多活)、高性能、高可用、高可擴、......
-
瞭解3V + 3高
大數據時代的3V:主要描述問題
-
海量Volume
-
多樣Variety
-
實時Velocity
大數據時代的3高:主要是對程序的要求
-
高併發
-
高可擴(隨時水平拆分,機器不夠用了,能夠擴展機器)
-
高性能(保證咱們的用戶體驗)
真正在公司中的實踐:NoSQL + RDBMS 一塊兒使用纔是最強大的, 阿里巴巴的架構引進.
阿里巴巴演進分析
思考問題 這麼多的數據難道都是在一個數據庫中的麼?
敏捷開發、極限編程
開源纔是技術的王道
任何一家互聯網公司,都不可能簡簡單單讓用戶能用就行了 大量公司作的都是相同的業務;(競品協議)
若是將來至關一個架構師:沒有什麼是加一層解決不了的!
商品的基本信息
名稱 價格 商家信息 關係型數據庫就能就解決 MySQL/oracle (淘寶早就去IOE了 王堅:推薦文章 :阿里雲的這羣瘋子) 淘寶內部的MySQL 不是你們用的MySQL
商品描述 評論(文字比較多)
文檔型數據庫中 MongDB
圖片
分佈式文件存儲系統 FastDFS
-
淘寶本身的 TFS
-
Google GFS
-
Hadoop HDFS
-
阿里雲的 oss
商品關鍵字(搜索)
-
搜索引擎:solr elasticsearch
-
ISerach:多隆(多關注技術大佬)
商品熱門的波段信息
-
內存數據庫‘
-
Reids Tair Memache
商品的交易 外部的支付接口
-
第三方應用
要知道, 一個簡單的網頁背後的技術必定不是你們所想象的那麼簡單
大型互聯網應用問題
-
數據類型太多了
-
數據源多, 常常重構(敏捷開發)!
-
數據要改造, 大面積改造
解決問題:
NoSQL的四大分類
KV鍵值對
-
新浪:Redis
-
美團:Redis + Tair
-
阿里、百度:Redis + memecache
文檔型數據庫(bson格式 和json同樣)
-
MongoDB(通常必需要掌握)
-
MongoDB是一個基於分佈式文件存儲的數據庫, C++編寫, 主要用來處理大量的文檔
-
MongoDB是一個介於關係型數據庫和非關係型數據庫中中間產品 MongoDB是非關係型數據庫中功能最豐富, 最像關係型數據庫.
-
-
ConthDB
列存儲
-
HBase
-
分佈式文件系統
圖關係數據庫
-
他不是存儲圖形, 放的是關係, 好比:朋友圈社交網絡 廣告推薦
-
Neo4j InfoGrid
四者對比
Web1.0:以靜態、單向閱讀爲主,網站內信息能夠直接和其餘網站信息進行交互,能經過第三方信息平臺同時對多家網站信息進行整合使用。
Web2.0:以分享爲特徵的實時網絡,用戶在互聯網上擁有本身的數據,並能在不一樣的網站上使用。
Web3.0:將以網絡化和個性化爲特徵,提供更多人工智能服務,徹底基於Web,用瀏覽器便可實現複雜的系統程序才具備的功能。
Web3.0的特徵分析:一、微內容(Widget)的自由整合與有效聚合 二、適合多種終端平臺,實現信息服務的普適性 三、良好的人性化用戶體驗,以及基礎性的個性化配置 四、有效和有序的數字新技術
本文分享自微信公衆號 - 掌上編程(ThePalmJava)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。