1. 程式人生 > >資料庫基礎之NoSQL與RDBMS

資料庫基礎之NoSQL與RDBMS

   NoSQL(Not  Only  SQL)

   NoSQL非關係型資料庫,用於超大規模資料儲存。

   1、代表著不僅僅是SQL

   2、 沒有宣告型查詢語言

   3、沒有預定義模式

   4、鍵-值對儲存,列儲存,文件儲存,圖形資料庫

   5、最終一致性,而非ACID屬性

   6、非結構化和不可預知的資料

   7、CAP定理

   8、高效能,高可用性和可伸縮性

   優點:高可擴充套件性;分散式計算;低成本;架構的靈活性,半結構化資料;沒有複雜的關係

   缺點:沒有標準化;有限的查詢功能;最終一致是不直觀的程式


    NoSQL資料庫分類

      列儲存:Hbase、Cassandra、Hypertable

     文件儲存:MongoDB、CouchDB

     key-value儲存:Tokyo Cabinet/Tyrant 、Berkeley DB 、MemcacheDB、 Redis

     圖形儲存:Neo4J、FlockDB

     物件儲存:db4o、Versant

     xml資料庫:Berkeley DB XML 、 BaseX

     

     RDBMS

      RDBMS關係型資料庫

     1、高度組織化結構化資料

     2、結構化查詢語句(SQL)

     3、資料和關係都儲存在單獨的表中

     4、資料操縱語言,資料定義語言

     5、嚴格的一致性

     6、基礎事務

     

     ACID (Atomicity+Consistency+Isolation+Durability)

     1、A(Atomicity)原子性

     事務裡所有操作要麼全部做完,要麼都不做,事務成功的條件是事務裡的所有操作都成功,要麼一個操作失敗,整個事務就失敗

    2、C(Consistency)一致性

    資料要一直處於一致狀態,事務的執行不會改變資料庫原本的一致性約束

    3、i(Isolation)獨立性

    事務之間不會互相影響

    4、D(Durability)永續性

    一旦事務提交後,他所做的修改將會永久儲存 在資料庫上

  

  CAP定理(CAP theorem)     

   CAP定理,也稱為布魯爾定理,指出對於一個分散式計算系統來說,不可能同時滿足以下三點:

     1、一致性(Consistency)(所有節點在同一時間具有相同的資料)        

     2、可用性(Availability)(保證每個請求不管成功或者失敗都有響應)

     3、分隔容忍(Partition  tolerance)(系統中任意資訊的丟失或失敗不會影響系統的繼續執行)

     核心:一個分散式系統不可能同時很好的滿足一致性,可用性和分割槽容錯性這三個需求,最多隻能同時較好的滿足兩個

     根據CAP原理分類NoSQL資料庫

     1、CA-單點叢集,滿足一致性,可用性的系統,通常在可擴充套件性上不強大

     2、CP-滿足一致性,分割槽容忍性的系統,通常效能不是特別高

     3、AP-滿足可用性,分割槽容忍性的系統,通常可能對一致性要求低一些


     BASE

   BASE(Basically Available,Soft-state,Eventually Consistent),是NoSQL資料庫通常對可用性及一致性的弱要求原則

    Basically  Available - 基本可用

    Soft-state - 軟狀態/柔性事務。“Soft-state”無連線,"Hard-state" 面向連線

    Eventually Consistency - 最終一致性

    

   分散式系統

  分散式系統:由多臺計算機和通訊的軟體元件通過計算機網路連線(本地網路和廣域網)組成。分散式系統具有高度的內聚性和透明性


   分散式計算

  優點:

   1、可靠性(容錯):一臺伺服器的系統崩潰並不影響到其餘的伺服器

   2、可擴充套件性:可以根據需求增加更多的機器

   3、資源共享

   4、靈活性:易於安裝,實施,除錯

   5、更快的速度

   6、開放系統

   7、更高的效能

   缺點:

   1、故障排除:故障排除及問題診斷

   2、軟體:更少的軟體支援是分散式計算系統的主要缺點

   3、網路:網路基礎設施的問題,如:傳輸問題,高負載,資訊丟失等

   4、安全性