前言:
在我們的日常開發中,關系型資料庫和非關系型資料庫的使用已經是一個成熟的軟體産品開發過程中必不可卻的存儲資料的工具了。那麼用了這麼久的關系資料庫和非關系型資料庫你們都知道他們之間的差別了嗎?下面我們來詳細的介紹一下。
關系型資料庫(SQL):
什麼是(SQL)關系型資料庫:
關系型資料庫指的是使用關系模型(二維表格模型)來組織資料的資料庫。
什麼是關系模型:
關系模型可以簡單了解為二維表格模型,而一個關系型資料庫就是由二維表及其之間的關系組成的一個資料組織。
常見關系型資料庫管理系統(ORDBMS):
- Oracle
- MySql
- Microsoft SQL Server
- SQLite
- PostgreSQL
- IBM DB2
關系型資料庫的優勢:
- 采用二維表結構非常貼近正常開發邏輯(關系型資料模型相對層次型資料模型和網狀型資料模型等其他模型來說更容易了解);
- 支援通用的SQL(結構化查詢語言)語句;
- 豐富的完整性大大減少了資料備援和資料不一緻的問題。并且全部由表結構組成,檔案格式一緻;
- 可以用SQL句子多個表之間做非常繁雜的查詢;
- 關系型資料庫提供對事務的支援,能保證系統中事務的正确執行,同時提供事務的恢複、復原、并發控制和死鎖問題的解決。
- 資料存儲在磁盤中,安全可靠。
關系型資料庫存在的不足:
随着網際網路企業的不斷發展,資料日益增多,是以關系型資料庫面對海量的資料會存在很多的不足。
- 高并發讀寫能力差:網站類使用者的并發性通路非常高,而一台資料庫的最大連接配接數有限,且硬碟 I/O 有限,不能滿足很多人同時連接配接。
- 海量資料情況下讀寫效率低:對大資料量的表進行讀寫操作時,需要等待較長的時間等待響應。
- 可擴充性不足:不像web server和app server那樣簡單的新增硬體和服務節點來拓展性能和負荷工作能力。
- 資料模型靈活度低:關系型資料庫的資料模型定義嚴格,無法快速容納新的資料類型(需要提前知道需要存儲什麼樣類型的資料)。
非關系型資料庫(NOSQL):
什麼是(NOSQL)非關系型資料庫:
非關系型資料庫又被稱為 NoSQL(Not Only SQL ),意為不僅僅是 SQL。通常指資料以對象的形式存儲在資料庫中,而對象之間的關系通過每個對象自身的屬性來決定,常用于存儲非結構化的資料。
常見的NOSQL資料庫:
- 鍵值資料庫:Redis、Memcached、Riak
- 列族資料庫:Bigtable、HBase、Cassandra
- 文檔資料庫:MongoDB、CouchDB、MarkLogic
- 圖形資料庫:Neo4j、InfoGrid
非關系型資料庫的優勢:
- 非關系型資料庫存儲資料的格式可以是 key-value 形式、文檔形式、圖檔形式等。使用靈活,應用場景廣泛,而關系型資料庫則隻支援基礎類型。
- 速度快,效率高。 NoSQL 可以使用硬碟或者随機存儲器作為載體,而關系型資料庫隻能使用硬碟。
- 海量資料的維護和處理非常輕松,成本低。
- 非關系型資料庫具有擴充簡單、高并發、高穩定性、成本低廉的優勢。
- 可以實作資料的分布式處理。
非關系型資料庫存在的不足:
- 非關系型資料庫暫時不提供 SQL 支援,學習和使用成本較高。
- 非關系資料庫沒有事務處理,無法保證資料的完整性和安全性。适合處理海量資料,但是不一定安全。
- 功能沒有關系型資料庫完善。
- 複雜表關聯查詢不容易實作。
參考文章:
http://c.biancheng.net/view/6490.html
https://baike.baidu.com/item/NoSQL
https://baike.baidu.com/item/%E5%85%B3%E7%B3%BB%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B3%BB%E7%BB%9F
作者:追逐時光者
作者簡介:一個熱愛程式設計,善于分享,喜歡學習、探索、嘗試新事物,新技術的程式猿。
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。如果該篇文章對您有幫助的話,可以點一下右下角的【♥推薦♥】,希望能夠持續的為大家帶來好的技術文章,文中可能存在描述不正确或錯誤的地方,歡迎指正、補充,不勝感激 !