天天看點

NoSQL 入門和概述

1、入門概述

(1)為什麼用 NoSQL

下面按順序逐漸演進!!!

I、單機 MySQL
NoSQL 入門和概述
II、Memcached(緩存) + MySQL + 垂直拆分
NoSQL 入門和概述
III、MySQL 主從讀寫分離
NoSQL 入門和概述
IV、分表分庫 + 水準拆分 + MySQL 叢集
NoSQL 入門和概述
V、MySQL 的擴充性瓶頸
NoSQL 入門和概述
VI、今天是什麼樣子
NoSQL 入門和概述
VII、為什麼使用 NoSQL
NoSQL 入門和概述

(2)NoSQL 是什麼

NoSQL 入門和概述

(3)NoSQL 能幹嘛

  • 易擴充:NoSQL 資料庫種類繁多,但是一個共同的特點都是去掉關系資料庫的關系型特性,資料之間無關系,這樣就非常容易擴充。也無形之間,在架構的層面上帶來了可擴充的能力。
  • 大資料量高性能:NoSQL 資料庫都具有非常高的讀寫性能,尤其在大資料量下,同樣表現優秀。這得益于它的無關系性,資料庫的結構簡單。一般 MySQL 使用 Query Cache,每次表的更新 Cache 就失效,是一種大粒度的 Cache,在針對 web2.0 的互動頻繁的應用,Cache 性能不高。而 NoSQL 的 Cache 是記錄級的,是一種細粒度的 Cache,是以 NoSQL 在這個層面上來說就要性能高很多了。
  • 多樣靈活的資料模型:NoSQL 無需事先為要存儲的資料建立字段,随時可以存儲自定義的資料格式。而在關系資料庫裡,

    增删字段是一件非常麻煩的事情。如果是非常大資料量的表,增加字段簡直就是一個噩夢。

  • 傳統 RDBMS VS NOSQL:
    • RDBMS
      • 高度組織化結構化資料
      • 結構化查詢語言(SQL)
      • 資料和關系都存儲在單獨的表中。
      • 資料操縱語言,資料定義語言
      • 嚴格的一緻性
      • 基礎事務
    • NoSQL
      • 代表着不僅僅是 SQL
      • 沒有聲明性查詢語言
      • 沒有預定義的模式
      • 鍵 - 值對存儲,列存儲,文檔存儲,圖形資料庫

(4)常見的 NoSQL 資料庫

  • Redis
  • Memcache
  • MongDB

2、3 V + 3 高

(1)大資料時代的 3 V

  • 海量 Volume
  • 多樣 Variety
  • 實時 Velocity

(2)網際網路需求的 3 高

  • 高并發
  • 高可用
  • 高性能

3、NoSQL 資料模型簡介

(1)聚合模型

  • key - value 鍵值
  • Bson
  • 列族
  • 圖形

4、NoSQL 資料庫的四大分類

(1)key - value 鍵值

  • 新浪:BerkeleyDB + redis
  • 美團:redis + tair
  • 阿裡、百度:memcache + redis

(2)文檔型資料庫(Bson 格式比較多)

  • CouchDB
  • MongoDB

(3)列存儲資料庫

  • Cassandra, HBase
  • 分布式檔案系統

(4)圖關系資料庫

  • 朋友圈、社交網絡、廣告推薦
  • Neo4J, InfoGrid

(5)四者對比

NoSQL 入門和概述

5、在分布式資料庫中 CAP 原理 + Base

(1)傳統的 ACID

  • A (Atomicity) 原子性:原子性很容易了解,也就是說事務裡的所有操作要麼全部做完,要麼都不做,事務成功的條件是事務裡的所有操作都成功,隻要有一個操作失敗,整個事務就失敗,需要復原。
  • C (Consistency) 一緻性:一緻性也比較容易了解,也就是說資料庫要一直處于一緻的狀态,事務的運作不會改變資料庫原本的一緻性限制。
  • I (Isolation) 隔離性:所謂的獨立性是指并發的事務之間不會互相影響,如果一個事務要通路的資料正在被另外一個事務修改,隻要另外一個事務未送出,它所通路的資料就不受未送出事務的影響。
  • D (Durability) 持久性:持久性是指一旦事務送出後,它所做的修改将會永久的儲存在資料庫上,即使出現當機也不會丢失。

(2)CAP

  • C:Consistency(強一緻性)
  • A:Availability(可用性)
  • P:Partition tolerance(分區容錯性)

(3)CAP 的 3 進 2

CAP理論就是說在分布式存儲系統中,最多隻能實作上面的兩點。而由于目前的網絡硬體肯定會出現延遲丢包等問題,是以分區容忍性是我們必須需要實作的。

是以我們隻能在一緻性和可用性之間進行權衡,沒有 NoSQL 系統能同時保證這三點。

NoSQL 入門和概述

(4)經典 CAP 圖

NoSQL 入門和概述

(5)Base

NoSQL 入門和概述

(6)分布式 + 叢集簡介

NoSQL 入門和概述