詳見:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt328mysql
關係型數據庫,是創建在關係模型基礎上的數據庫,其藉助於集合代數等數學概念和方法來處理數據庫中的數據。主流的 oracle、DB二、MS SQL Server和mysql都屬於這類傳統數據庫。sql
NoSQL數據庫,全稱爲Not Only SQL,意思就是適用關係型數據庫的時候就使用關係型數據庫,不適用的時候也沒有必要非使用關係型數據庫不可,能夠考慮使用更加合適的數據存儲。主要分爲臨時性鍵值存儲(memcached、Redis)、永久性鍵值存儲(ROMA、Redis)、面向文檔的數據庫(MongoDB、CouchDB)、面向列的數據庫(Cassandra、HBase),每種NoSQL都有其特有的使用場景及優勢。數據庫
oracle,mysql等傳統的關係數據庫很是成熟而且已大規模商用,爲何還要用NoSQL數據庫呢?主要是因爲隨着互聯網發展,數據量愈來愈大,對性能要求愈來愈高,傳統數據庫存在着先天性的缺陷,即單機(單庫)性能瓶頸,而且擴展困難。這樣既有單機單庫瓶頸,卻又擴展困難,天然沒法知足日益增加的海量數據存儲及其性能要求,因此纔會出現了各類不一樣的NoSQL產品,NoSQL根本性的優點在於在雲計算時代,簡單、易於大規模分佈式擴展,而且讀寫性能很是高。數據結構
下面分析下二者的特色,及優缺點:併發
關係型數據庫oracle
<1>關係數據庫的特色是:分佈式
- 數據關係模型基於關係模型,結構化存儲,完整性約束。memcached
- 基於二維表及其之間的聯繫,須要鏈接、並、交、差、除等數據操做。高併發
- 採用結構化的查詢語言(SQL)作數據讀寫。性能
- 操做須要數據的一致性,須要事務甚至是強一致性。
<2>優勢:
- 保持數據的一致性(事務處理)
- 能夠進行join等複雜查詢。
- 通用化,技術成熟。
<3>缺點:
- 數據讀寫必須通過sql解析,大量數據、高併發下讀寫性能不足。
- 對數據作讀寫,或修改數據結構時須要加鎖,影響併發操做。
- 沒法適應非結構化存儲。
- 擴展困難。
- 昂貴、複雜。
NoSQL數據庫
<1>NoSQL數據庫的特色是:
- 非結構化的存儲。
- 基於多維關係模型。
- 具備特有的使用場景。
<2>優勢:
- 高併發,大數據下讀寫能力較強。
- 基本支持分佈式,易於擴展,可伸縮。
- 簡單,弱結構化存儲。
<3>缺點:
- join等複雜操做能力較弱。
- 事務支持較弱。
- 通用性差。
- 無完整約束複雜業務場景支持較差。