NoSQL概述

擊上方藍色字體,選擇「置頂或者星標」 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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索