非關係型數據庫(NOSQL)和關係型數據庫(SQL)區別詳解

前言:

在咱們的平常開發中,關係型數據庫和非關係型數據庫的使用已是一個成熟的軟件產品開發過程當中必不可卻的存儲數據的工具了。那麼用了這麼久的關係數據庫和非關係型數據庫大家都知道他們之間的區別了嗎?下面咱們來詳細的介紹一下。

關係型數據庫(SQL):

什麼是(SQL)關係型數據庫:

關係型數據庫指的是使用關係模型(二維表格模型)來組織數據的數據庫。

什麼是關係模型:

關係模型能夠簡單理解爲二維表格模型,而一個關係型數據庫就是由二維表及其之間的關係組成的一個數據組織。

常見關係型數據庫管理系統(ORDBMS):

  1. Oracle
  2. MySql
  3. Microsoft SQL Server
  4. SQLite
  5. PostgreSQL
  6. IBM DB2

關係型數據庫的優點:

  1. 採用二維表結構很是貼近正常開發邏輯(關係型數據模型相對層次型數據模型和網狀型數據模型等其餘模型來講更容易理解);
  2. 支持通用的SQL(結構化查詢語言)語句;
  3. 豐富的完整性大大減小了數據冗餘和數據不一致的問題。而且所有由表結構組成,文件格式一致;
  4. 能夠用SQL句子多個表之間作很是繁雜的查詢;
  5. 關係型數據庫提供對事務的支持,能保證系統中事務的正確執行,同時提供事務的恢復、回滾、併發控制和死鎖問題的解決。
  6. 數據存儲在磁盤中,安全可靠。

關係型數據庫存在的不足:

隨着互聯網企業的不斷髮展,數據日益增多,所以關係型數據庫面對海量的數據會存在不少的不足。
  1. 高併發讀寫能力差:網站類用戶的併發性訪問很是高,而一臺數據庫的最大鏈接數有限,且硬盤 I/O 有限,不能知足不少人同時鏈接。
  2. 海量數據狀況下讀寫效率低:對大數據量的表進行讀寫操做時,須要等待較長的時間等待響應。
  3. 可擴展性不足:不像web server和app server那樣簡單的添加硬件和服務節點來拓展性能和負荷工做能力。
  4. 數據模型靈活度低:關係型數據庫的數據模型定義嚴格,沒法快速容納新的數據類型(須要提早知道須要存儲什麼樣類型的數據)。

非關係型數據庫(NOSQL):

什麼是(NOSQL)非關係型數據庫:

非關係型數據庫又被稱爲 NoSQL(Not Only SQL ),意爲不單單是 SQL。一般指數據以對象的形式存儲在數據庫中,而對象之間的關係經過每一個對象自身的屬性來決定,經常使用於存儲非結構化的數據。

常見的NOSQL數據庫:

  1. 鍵值數據庫:Redis、Memcached、Riak
  2. 列族數據庫:Bigtable、HBase、Cassandra
  3. 文檔數據庫:MongoDB、CouchDB、MarkLogic
  4. 圖形數據庫:Neo4j、InfoGrid

非關係型數據庫的優點:

  1. 非關係型數據庫存儲數據的格式能夠是 key-value 形式、文檔形式、圖片形式等。使用靈活,應用場景普遍,而關係型數據庫則只支持基礎類型。
  2. 速度快,效率高。 NoSQL 可使用硬盤或者隨機存儲器做爲載體,而關係型數據庫只能使用硬盤。
  3. 海量數據的維護和處理很是輕鬆,成本低。
  4. 非關係型數據庫具備擴展簡單、高併發、高穩定性、成本低廉的優點。
  5. 能夠實現數據的分佈式處理。

非關係型數據庫存在的不足:

  1. 非關係型數據庫暫時不提供 SQL 支持,學習和使用成本較高。
  2. 非關係數據庫沒有事務處理,沒法保證數據的完整性和安全性。適合處理海量數據,可是不必定安全。
  3. 功能沒有關係型數據庫完善。
  4. 複雜表關聯查詢不容易實現。
相關文章
相關標籤/搜索