1. 程式人生 > >資料庫簡介、及常用資料庫介紹

資料庫簡介、及常用資料庫介紹

一、資料庫簡介

資料庫:就是資料的倉庫,它是長期儲存在計算機內,有組織的、可共享的資料的集合。

資料庫管理系統(DBMS: 用來對資料進行儲存、管理等操作的軟體

二、資料庫分類

資料庫通常分為層次式資料庫網路式資料庫關係式資料庫三種。而不同的資料庫是按不同的資料結構來聯絡和組織的。而在當今的網際網路中,最常見的資料庫模型主要是兩種,即關係型資料庫(SQL)非關係型資料庫(NoSQL,Not Only SQL)

關係型資料庫

    關係 :關係就是二維表。並滿足如下性質:

  •     表中的行、列次序並不重要
  •     行row:表中的每一行,又稱為一條記錄
  •     列column:表中的每一列,稱為屬性,欄位     field 域
  •     主鍵PK(Primary key):用於惟一確定一個記錄的欄位      外來鍵FK
  •     域domain:屬性的取值範圍,如,性別只能是‘男’和‘女’兩個值

    缺點:效能沒有非關係性資料庫好    優點:資料統計有嚴謹性

非關係型資料庫

NoSQL資料儲存不需要固定的表結構,通常也不存在連線操作。在大資料存取上具備關係型資料庫無法比擬的效能優勢。

  • 搜尋鍵值儲存資料庫(key-value):
    鍵值資料庫就類似傳統語言中使用的雜湊表。可以通過key來新增、查詢或者刪除資料庫,因為使用key主鍵訪問,所以會獲得很高的效能及擴充套件性。Key/value模型對於IT系統來說的優勢在於簡單、易部署、高併發。典型產品:Memcached、Redis、MemcacheDB
  • 列儲存(Column-oriented)資料庫
    列儲存資料庫將資料儲存在列族中,一個列族儲存經常被一起查詢的相關資料,比如人類,我們經常會查詢某個人的姓名和年齡,而不是薪資。這種情況下姓名和年齡會被放到一個列族中,薪資會被放到另一個列族中。


    這種資料庫通常用來應對分散式儲存海量資料。
  • 面向文件(Document-Oriented)資料庫
    文件型資料庫可以 看作是鍵值資料庫的升級版,允許之間巢狀鍵值。而且文件型資料庫比鍵值資料庫的查詢效率更高。面向文件資料庫會將資料以文件形式儲存。典型產品:MongoDB 適用於敏捷開發

常見關係型資料庫:

  • 大型:Oracle、DB2 等;
  • 中型:SQL Server、MySQL 等;
  • 小型:Access 等。

三、關係型資料庫和非關係型資料庫比較:

關係型資料庫:

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

關係型資料庫的最大特點就是事務的一致性:傳統的關係型資料庫讀寫操作都是事務的,具有ACID的特點,這個特性使得關係型資料庫可以用於幾乎所有對一致性有要求的系統中,如典型的銀行系統。

優點:

  • 容易理解:二維表結構是非常貼近邏輯世界的一個概念,關係模型相對網狀、層次等其他模型來說更容易理解
  • 使用方便:通用的SQL語言使得操作關係型資料庫非常方便
  • 易於維護:豐富的完整性(實體完整性、參照完整性和使用者定義的完整性)大大減低了資料冗餘和資料不一致的概率
缺點:
  •  資料讀寫必須經過sql解析,大量資料、高併發下讀寫效能不足。對於傳統關係型資料庫來說,硬碟I/O是一個很大的瓶頸。
  • 具有固定的表結構,因此擴充套件困難
  • 多表的關聯查詢導致效能欠佳

非關係型資料庫

特點:

  •  非結構化的儲存。
  • 基於多維關係模型。
  •  具有特有的使用場景。

優點:

  •  高併發,大資料下讀寫能力較強。(基於鍵值對的,可以想象成表中的主鍵和值的對應關係,而且不需要經過SQL層的解析,所以效能非常高)
  •  基本支援分散式,易於擴充套件,可伸縮。(因為基於鍵值對,資料之間沒有耦合性,所以非常容易水平擴充套件。)
  •  簡單,弱結構化儲存。

缺點:

  • 事務支援較弱。
  • 通用性差。
  • 無完整約束複雜業務場景支援較差。