NoSQL概述
單機MySQL時代
? 大資料時代,一般的資料庫無法進行分析處理
- 資料量如果太大,一個機器放不下
- 資料的索引(B+ Tree),一個機器記憶體也放不下
- 訪問量(讀寫混合),一個機器承受不了
Memecache + MySQL+垂直拆分(讀寫分離)
減輕服務器壓力,使用快取
發展程序:優化資料結構和索引-->檔案快取(IO)-->Memcached
分庫分表+水平拆分+MySQL集群
早些年MyISAM:表鎖,在高并發下嚴重影響效率
Innodb:行鎖
使用分庫分表來解決寫的壓力!
如今年代
MySQL等關系型資料庫不夠用!資料量大,變化很大
MySQL有的使用它來存盤一些比較大的檔案,博客,圖片等,資料表很大,效率就低了,
大資料的IO壓力下,表幾乎沒法更大
目前一個基本的互聯網專案

為什么要用NoSQL
用戶的個人資訊,社交網路,地理位置,用戶自己產生的資料,日志等等爆發式增長,無法使用關系型資料庫進行存盤,需要使用NoSQL!
什么是NoSQL
NoSQL = Not Only SQL
關系型資料庫:表格,行,列
泛指非關系型資料庫,隨著web2.0到來,傳統關系型資料庫很難對付web2.0,尤其是超大規模的高并發的社區,暴露出很多難以克服的問題,Redis是當下發展最快的,必須掌握的技術
很多的資料型別個人資訊,社交網路,地理位置等不需要一個固定的格式!不需要過多的操作就可以橫向擴展!Map<String,Object>使用鍵值對來控制
NoSQL特點
-
方便擴展(資料之間沒有關系,很好擴展)
-
大資料量高性能(Redis一秒寫8萬次,讀取11萬次,NoSQL的快取記錄是一種細粒度的快取,性能比較高)
-
資料型別是多樣型別的(不需要事先設計資料庫,隨取隨用)
-
傳統RDBMS和NoSQL
傳統的RDBMS - 結構化組織 - SQL - 資料和關系都存在單獨的表中 - 操作,資料定義語言 - 嚴格的一致性 - 基礎的事務 -------NoSQL - 不僅僅是資料 - 沒有固定的查詢語言 - 鍵值對存盤,列存盤,檔案存盤,圖形資料庫 - 最終一致性 - CAP定理和BASE理論 - 高性能,高可用,高可擴 - ----了解3V+3高
大資料時代的3V : 主要是描述問題的 1.海量Volume 2.多樣Variety 3.實時Velocity 大資料時代的3高:主要是對程式的要求 1.高并發 2.高可擴(隨時水平拆分) 3.高性能NoSQL四大分類
K-V鍵值對:
- 新浪:Redis
- 美團:Redis+Tair
- 阿里、百度:Redis+memecache
檔案型資料庫(bson格式和json一樣):
- MongoDB
- 基于分布式檔案存盤的資料里,C++撰寫,處理大量的檔案
- 介于關系型資料庫和非關系型資料庫的中間產品
- 是非關系型資料中最像關系型資料庫
- ConchDB
列存盤資料庫
- HBase
- 分布式檔案系統弄
圖關系資料庫
存放的不是圖,是關系!
總結

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/162017.html
標籤:Java
