?
?
一、關系型數據庫
?
1、關系型數據庫的由來
雖然網狀數據庫和層次數據庫已經很好的解決了數據的集中和共享問題,但是在數據庫獨立性和抽象級別上扔有很大欠缺。用戶在對這兩種數據庫進行存取時,仍然需要明確數據的存儲結構,指出存取路徑。而關系型數據庫就可以較好的解決這些問題。
2、關系型數據庫介紹
關系型數據庫模型是把復雜的數據結構歸結為簡單的二元關系(即二維表格形式)。在關系型數據庫中,對數據的操作幾乎全部建立在一個或多個關系表格上,通過對這些關聯的表格分類、合并、連接或選取等運算來實現數據庫的管理。
關系型數據庫誕生40多年了,從理論產生發展到現實產品,例如:Oracle和MySQL,Oracle在數據庫領域上升到霸主地位,形成每年高達數百億美元的龐大產業市場。
?
?
二、非關系型數據庫
?
1、非關系型數據庫誕生背景
NoSQL,泛指非關系型的數據庫。隨著互聯網web2.0網站的興起,傳統的關系數據庫在應付web2.0網站,特別是超大規模和高并發的SNS類型的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,而非關系型的數據庫則由于其本身的特點得到了非常迅速的發展。NoSql數據庫在特定的場景下可以發揮出難以想象的高效率和高性能,它是作為對傳統關系型數據庫的一個有效的補充。
NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,是一項全新的數據庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關系型的數據存儲,相對于鋪天蓋地的關系型數據庫運用,這一概念無疑是一種全新的思維的注入。
2、非關系型數據庫種類
?
(1)鍵值存儲數據庫(key-value)
鍵值數據庫就類似傳統語言中使用的哈希表。可以通過key來添加、查詢或者刪除數據庫,因為使用key主鍵訪問,所以會獲得很高的性能及擴展性。
鍵值數據庫主要使用一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的數據。Key/value模型對于IT系統來說的優勢在于簡單、易部署、高并發。
典型產品:Memcached、Redis、MemcacheDB
(2)列存儲(Column-oriented)數據庫
列存儲數據庫將數據存儲在列族中,一個列族存儲經常被一起查詢的相關數據,比如人類,我們經常會查詢某個人的姓名和年齡,而不是薪資。這種情況下姓名和年齡會被放到一個列族中,薪資會被放到另一個列族中。
這種數據庫通常用來應對分布式存儲海量數據。
典型產品:Cassandra、HBase
(3)面向文檔(Document-Oriented)數據庫
文檔型數據庫的靈感是來自于Lotus Notes辦公軟件,而且它同第一種鍵值數據庫類似。該類型的數據模型是版本化的文檔,半結構化的文檔以特定的格式存儲,比如JSON。文檔型數據庫可以看作是鍵值數據庫的升級版,允許之間嵌套鍵值。而且文檔型數據庫比鍵值數據庫的查詢效率更高。
面向文檔數據庫會將數據以文檔形式存儲。每個文檔都是自包含的數據單元,是一系列數據項的集合。每個數據項都有一個名詞與對應值,值既可以是簡單的數據類型,如字符串、數字和日期等;也可以是復雜的類型,如有序列表和關聯對象。數據存儲的最小單位是文檔,同一個表中存儲的文檔屬性可以是不同的,數據可以使用XML、JSON或JSONB等多種形式存儲。
典型產品:MongoDB、CouchDB
(4)圖形數據庫
圖形數據庫允許我們將數據以圖的方式存儲。實體會被作為頂點,而實體之間的關系則會被作為邊。比如我們有三個實體,Steve Jobs、Apple和Next,則會有兩個“Founded by”的邊將Apple和Next連接到Steve Jobs。
典型產品:Neo4J、InforGrid
?
四種非關系型數據庫對比:
?
?
?
?
?
?