NoSQL綜述

一.什麼是NoSQL

1.NoSQL: not only SQL ,非關係型數據庫
2.NoSQL是一個通用術語

  • 指不遵循傳統RDBMS模型的數據庫
  • 數據是非關係的,且不適用SQL作爲只要查詢語言
  • 解決數據庫的可伸縮性和可用性問題
  • 不針對原子性或一致性問題

二.爲什麼使用NoSQL

互聯網的發展,傳統關係型數據庫存在瓶頸

  • 高併發讀寫
  • 高存儲量
  • 高可用性
  • 高擴展性
  • 低成本

三.NoSQL和關係型數據庫的對比

主要有以下一些區別
在這裏插入圖片描述

四.NoSQL的特點

  1. 最終一致性
  2. 應用程序增加了維護一致性和處理事務等職責
  3. 冗餘數據存儲
  4. NoSQL !=大數據
    • NoSQL產品是爲了幫助解決大數據的存儲問題
    • 大數據不僅僅包含數據存儲問題
      Hadoop
      Kafka
      Spark等

五.NoSQL三大基石:CAP,BASE,最終一致性

1.CAP理論

  • 數據庫最多支持3箇中的2個

    Consistency(一致性)
    Availability(可用性)
    Partition Tolerance(分區容錯性)

  • NoSQL不保證 「ACID」
  • 提供"最終一致性"

2.BASE

  • Basically Availble(基本可用)

    保證核心可用

  • Soft-state (軟狀態)

    狀態可以有一段時間不同步

  • Eventual Consistency(最終一致性)

    系統經過一段時間後,數據最終能後達到一致的狀態

  • 核心思想是基石無法做到強一致性,但應用可以選擇適合的方式達到最終一致性

3.最終一致性

  • 最終結果保持一致,而不是時時一致
  • 如賬戶餘額,庫存量等數據需強一致性
  • 如catalog等信息不需要強一致性

    Causal consistency (因果一致性)
    Read-your-writes consistency
    Session consistency

六.索引和查詢

  • Indexing(索引)

    大多數NoSQL是按key進行索引
    大部分NoSQL允許二級索引
    Hbase使用HDFS,append-only
    批處理寫入logged
    重新創建並排序文件

  • Query(查詢)

    沒有專門的查詢語言,永昌使用腳本語言查詢
    有些開始支持SQL查詢
    有些可以使用MapReduce代碼查詢

  • MapReduce

    不是hadoop的MapReduce.概念相關
    可進行數據的處理查詢

  • Sharding

    一種分區模式
    可以複製分片
    有利於災難恢復

七.NoSQL分類

主要分爲以下四類
在這裏插入圖片描述

  • 鍵值存儲數據庫(Key-Value)
    在這裏插入圖片描述
  • 列存儲數據庫
    在這裏插入圖片描述
  • 文檔存儲數據庫
    在這裏插入圖片描述
  • 圖數據庫
    在這裏插入圖片描述