1、數據庫簡介
數據庫:就是數據的倉庫,它是長期存儲在計算機內,有組織的、可共享的數據的集合。sql
數據庫管理系統(DBMS: 用來對數據進行存儲、管理等操做的軟件數據庫
2、數據庫分類
數據庫一般分爲層次式數據庫、網絡式數據庫和關係式數據庫三種。而不一樣的數據庫是按不一樣的數據結構來聯繫和組織的。而在當今的互聯網中,最多見的數據庫模型主要是兩種,即關係型數據庫(SQL)和非關係型數據庫(NoSQL,Not Only SQL)。網絡
關係型數據庫
關係 :關係就是二維表。並知足以下性質:數據結構
- 表中的行、列次序並不重要
- 行row:表中的每一行,又稱爲一條記錄
- 列column:表中的每一列,稱爲屬性,字段 field 域
- 主鍵PK(Primary key):用於唯一肯定一個記錄的字段 外鍵FK
- 域domain:屬性的取值範圍,如,性別只能是‘男’和‘女’兩個值
缺點:性能沒有非關係性數據庫好 優勢:數據統計有嚴謹性併發
非關係型數據庫
NoSQL數據存儲不須要固定的表結構,一般也不存在鏈接操做。在大數據存取上具有關係型數據庫沒法比擬的性能優點。dom
- 搜索鍵值存儲數據庫(key-value):
鍵值數據庫就相似傳統語言中使用的哈希表。能夠經過key來添加、查詢或者刪除數據庫,由於使用key主鍵訪問,因此會得到很高的性能及擴展性。Key/value模型對於IT系統來講的優點在於簡單、易部署、高併發。典型產品:Memcached、Redis、MemcacheDB
- 列存儲(Column-oriented)數據庫
列存儲數據庫將數據存儲在列族中,一個列族存儲常常被一塊兒查詢的相關數據,好比人類,咱們常常會查詢某我的的姓名和年齡,而不是薪資。這種狀況下姓名和年齡會被放到一個列族中,薪資會被放到另外一個列族中。
這種數據庫一般用來應對分佈式存儲海量數據。
- 面向文檔(Document-Oriented)數據庫
文檔型數據庫能夠 看做是鍵值數據庫的升級版,容許之間嵌套鍵值。並且文檔型數據庫比鍵值數據庫的查詢效率更高。面向文檔數據庫會將數據以文檔形式存儲。典型產品:MongoDB 適用於敏捷開發
常見關係型數據庫:分佈式
- 大型:Oracle、DB2 等;
- 中型:SQL Server、MySQL 等;
- 小型:Access 等。
3、關係型數據庫和非關係型數據庫比較:
關係型數據庫:
關係型數據庫,是指採用了關係模型來組織數據的數據庫。簡單來講,關係模型指的就是二維表格模型,而一個關係型數據庫就是由二維表及其之間的聯繫所組成的一個數據組織。高併發
關係型數據庫的最大特色就是事務的一致性:傳統的關係型數據庫讀寫操做都是事務的,具備ACID的特色,這個特性使得關係型數據庫能夠用於幾乎全部對一致性有要求的系統中,如典型的銀行系統。性能
優勢:大數據
- 容易理解:二維表結構是很是貼近邏輯世界的一個概念,關係模型相對網狀、層次等其餘模型來講更容易理解
- 使用方便:通用的SQL語言使得操做關係型數據庫很是方便
- 易於維護:豐富的完整性(實體完整性、參照完整性和用戶定義的完整性)大大減低了數據冗餘和數據不一致的機率
缺點:
- 數據讀寫必須通過sql解析,大量數據、高併發下讀寫性能不足。對於傳統關係型數據庫來講,硬盤I/O是一個很大的瓶頸。
- 具備固定的表結構,所以擴展困難。
- 多表的關聯查詢致使性能欠佳
非關係型數據庫
特色:
- 非結構化的存儲。
- 基於多維關係模型。
- 具備特有的使用場景。
優勢:
- 高併發,大數據下讀寫能力較強。(基於鍵值對的,能夠想象成表中的主鍵和值的對應關係,並且不須要通過SQL層的解析,因此性能很是高)
- 基本支持分佈式,易於擴展,可伸縮。(由於基於鍵值對,數據之間沒有耦合性,因此很是容易水平擴展。)
- 簡單,弱結構化存儲。
缺點:
- 事務支持較弱。
- 通用性差。
- 無完整約束複雜業務場景支持較差。