非關係型資料庫(NOSQL)和關係型資料庫(SQL)區別詳解

追逐時光者發表於2021-02-01

前言:

在我們的日常開發中,關係型資料庫和非關係型資料庫的使用已經是一個成熟的軟體產品開發過程中必不可卻的儲存資料的工具了。那麼用了這麼久的關聯式資料庫和非關係型資料庫你們都知道他們之間的區別了嗎?下面我們來詳細的介紹一下。

關係型資料庫(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. 複雜表關聯查詢不容易實現。

相關文章