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)
主流表明爲Redis, Amazon DynamoDB, Memcached,Microsoft Azure Cosmos DB和Hazelcast
2)面向海量數據訪問的面向文檔數據庫(json)
主流表明爲MongoDB,Amazon DynamoDB,Couchbase,Microsoft Azure Cosmos DB和CouchDB
3)面向搜索數據內容的搜索引擎
主要是用於對海量數據進行近實時的處理和分析處理,可用於機器學習和數據挖掘
主流表明爲Elasticsearch,Splunk,Solr,MarkLogic和Sphinx
4)面向可擴展性的分佈式數據庫
將數據存儲在記錄中,可以容納大量動態列。因爲列名和記錄鍵不是固定的,而且因爲記錄可能有數十億列,所以可擴展性存儲能夠看做是二維鍵值存儲。
主流表明爲Cassandra,HBase,Microsoft Azure Cosmos DB,Datastax Enterprise和Accumulo
C(Consistency)
一致性,
A(Availability)
可用性,
P(Partition tolerance)
分區容錯性
Nosql
數據庫:易部署,開源
Nosql
數據庫快:數據存儲於緩存之中,並且不須要通過
SQL
層的解析,
Nosql
的存儲格式多:
key,value
形式、文檔形式、圖片形式等等
Nosql
基於鍵值對,數據之間沒有耦合性,因此很是容易水平擴展。
Nosql
不使用於持久存儲