關係型數據庫與非關係型數據庫

1. 定義redis

  (1)關係型數據庫sql

    指採用了關係模型來組織數據的數據庫。關係模型指的就是二維表格模型,而一個關係型數據庫就是由二維表及其之間的聯繫所組成的一個數據組織。mongodb

    pro:數據庫

    1.容易理解:二維表結構是很是貼近邏輯世界的一個概念,關係模型相對網狀、層次等其餘模型來講更容易理解
    2.使用方便:通用的SQL語言使得操做關係型數據庫很是方便
    3.易於維護:豐富的完整性(實體完整性、參照完整性和用戶定義的完整性)大大減低了數據冗餘和數據不一致的機率apache

    con:json

    1.網站的用戶併發性很是高,每每達到每秒上萬次讀寫請求,對於傳統關係型數據庫來講,硬盤I/O是一個很大的瓶頸緩存

    2.效率低: 難以處理大量請求數據結構

    

    4.性能欠佳:併發

      多表的關聯查詢,以及複雜的數據分析類型的複雜SQL報表查詢。爲了保證數據庫的ACID特性,必須儘可能按照其要求的範式進行設計,關係型數據庫中的表都是存儲一個格式化的數據結構。機器學習

      ACID特性,ACID分別是Atomic原子性,Consistency一致性,Isolation隔離性,Durability持久性。

  (2)非關係型數據庫

    指非關係型的,分佈式的,且通常不保證遵循ACID原則的數據存儲系統。

    非關係型數據庫以鍵值對存儲,且結構不固定,每個元組能夠有不同的字段,每一個元組能夠根據須要增長一些本身的鍵值對,不侷限於固定的結構,能夠減小一些時間和空間的開銷。

    Pro:

    1.靈活:可隨意添加字段,僅需id便可取出相應的value

    2.便於升級:SNS(Social Networking Services)

    Con:

    不適用於複雜的查詢數據

    =======================================================================

    分類:

    1)面向高性能併發讀寫的key-value數據庫(map)

      主流表明爲RedisAmazon DynamoDBMemcachedMicrosoft Azure Cosmos DBHazelcast

    2)面向海量數據訪問的面向文檔數據庫(json)

      主流表明爲MongoDBAmazon DynamoDBCouchbaseMicrosoft Azure Cosmos DBCouchDB

    3)面向搜索數據內容的搜索引擎

      主要是用於對海量數據進行近實時的處理和分析處理,可用於機器學習和數據挖掘
     主流表明爲ElasticsearchSplunkSolrMarkLogicSphinx

    4)面向可擴展性的分佈式數據庫

      將數據存儲在記錄中,可以容納大量動態列。因爲列名和記錄鍵不是固定的,而且因爲記錄可能有數十億列,所以可擴展性存儲能夠看做是二維鍵值存儲。

      主流表明爲CassandraHBaseMicrosoft Azure Cosmos DBDatastax EnterpriseAccumulo

    CAP理論: C(Consistency)一致性, A(Availability)可用性, P(Partition tolerance)分區容錯性


2. 對比
  1.成本: Nosql數據庫:易部署,開源
  2.查詢速度:
     Nosql數據庫快:數據存儲於緩存之中,並且不須要通過 SQL層的解析,
    關係型數據庫慢:數據存儲在硬盤中。
  3.存儲數據的格式:
     Nosql的存儲格式多: key,value形式、文檔形式、圖片形式等等
    關係型數據庫:僅支持基礎類型。
  4.擴展性:
     Nosql基於鍵值對,數據之間沒有耦合性,因此很是容易水平擴展。
    關係型數據庫有相似join這樣的多表查詢機制的限制致使擴展很艱難。
  5.持久存儲:
     Nosql不使用於持久存儲
    關係型數據庫適用
  6.數據一致性:
    非關係型數據庫強調 數據最終一致性,不支持transaction
    關係型數據庫強調數據的強一致性,從非關係型數據庫中讀到的有可能仍是處於一箇中間態的數據,
相關文章
相關標籤/搜索