關系型數據庫
關系:可以理解為一張二維表,每個關系都具有一個關系名,就是通常說的表名
元組:可以理解為二維表中的一行,在數據庫中經常被稱為記錄
屬性:可以理解為二維表中的一列,在數據庫中經常被稱為字段
域:屬性的取值范圍,也就是數據庫中某一列的取值限制
關鍵字:一組可以唯一標識元組的屬性,數據庫中常稱為主鍵,由一個或多個列組成
關系模式:指對關系的描述。其格式為:關系名(屬性1,屬性2, ... ... ,屬性N),在數據庫中成為表結構
在關系型數據庫中,導致性能欠佳的最主要原因是多表的關聯查詢,以及復雜的數據分析類型的復雜SQL報表查詢。為了保證數據庫的ACID(Atomic原子性,Consistency一致性,Isolation隔離性,Durability持久性)特性,我們必須盡量按照其要求的范式進行設計,關系型數據庫中的表都是存儲一個格式化的數據結構。每個元組字段的組成都是一樣,即使不是每個元組都需要所有的字段,但數據庫會為每個元組分配所有的字段,這樣的結構可以便于標語表之間進行鏈接等操作,但從另一個角度來說它也是關系型數據庫性能瓶頸的一個因素。
NoSQL
非關系型數據庫提出另一種理念,例如,以鍵值對存儲,且結構不固定,每一個元組可以有不一樣的字段,每個元組可以根據需要增加一些自己的鍵值對,這樣就不會局限于固定的結構,可以減少一些時間和空間的開銷。使用這種方式,用戶可以根據需要去添加自己需要的字段,這樣,為了獲取用戶的不同信息,不需要像關系型數據庫中,要對多表進行關聯查詢。僅需要根據id取出相應的value就可以完成查詢。但非關系型數據庫由于很少的約束,他也不能夠提供像SQL所提供的where這種對于字段屬性值情況的查詢。并且難以體現設計的完整性。他只適合存儲一些較為簡單的數據,對于需要進行較復雜查詢的數據,SQL數據庫顯的更為合適。
面向高性能并發讀寫的key-value數據庫:
key-value數據庫的主要特點即使具有極高的并發讀寫性能,Redis,Tokyo Cabinet,Flare就是這類的代表
面向海量數據訪問的面向文檔數據庫:
這類數據庫的特點是,可以在海量的數據中快速的查詢數據,典型代表為MongoDB以及CouchDB
面向可擴展性的分布式數據庫:
這類數據庫想解決的問題就是傳統數據庫存在可擴展性上的缺陷,這類數據庫可以適應數據量的增加以及數據結構的變化
參考原文
http://blog.csdn.net/robinjwong/article/details/18502195