定義:關係模型使用記錄(行或者元組)進行存儲,記錄存儲在表中,表由架構界定。表中的每一個列都有名稱和類型,表中的全部記錄都要符合表的定義。SQL是專門的查詢語言,提供相應的語法查找符合條件的記錄,如表聯接(Join)。表聯接能夠基於表之間的關係在多表之間查詢記錄。
存儲格式:行式數據庫把一行中的數據值串在一塊兒存儲起來(行頭信息,列長,列值),而後再存儲下一行的數據,以此類推。
特色:據以行相關的存儲體系架構進行空間分配,主要適合與小批量的數據處理,經常使用於聯機事務型數據處理。不能知足後面三個需求:對數據庫高併發讀寫要求,對海量數據的高效率存儲和訪問需求,對數據庫高可擴展性和高可用性。 一句話不適合分佈式、高併發和海量。算法
定義:什麼是列式數據庫?列式數據庫是以列相關存儲架構進行數據存儲的數據庫。列式存儲以流的方式在列中存儲全部的數據,主要適合與批量數據處理和即席查詢。
存儲格式 :列式數據庫把一列中的數據值串在一塊兒存儲起來,而後再存儲下一列的數據,以此類推。
特色:包括查詢快,因爲查詢須要讀取的blocks少;數據壓縮比高,正由於同一類型的列存儲在一塊兒。Load快。 簡化數據建模的複雜性。可是插入更新慢,不太適合數據總是變化,它是按列存儲的。這時候你就知道它適作DSS(決策支持系統),BI的優秀選擇,數據集市,數據倉庫,它不適合OLTP。
列式存儲: 每一列單獨存放,數據便是索引。數據庫
Ø Row-based storage stores atable in a sequence of rows.
Ø Column-based storage storesa table in a sequence of columns.數組
關係型數據庫理論- 選擇(Selection)和投影(Projection)數據結構
Speedup指用兩倍的硬件換來一半的執行時間。Scaleup指兩倍的硬件換來同等時間內執行兩倍的任務。但每每事情不是那麼簡單,兩倍的硬件也會帶來其餘問題:更多CPU帶來的長啓動時間和通訊開銷,以及並行計算帶來的數據傾斜問題。架構
共享內存:任意CPU都能訪問任意的內存(全局共享)和磁盤。優勢是簡單,缺點是擴展性差,可用性低。併發
共享磁盤:任意CPU都能訪問任何的磁盤,可是隻能訪問本身的主存。優勢是可用性和擴展性比較好,缺點是實現複雜以及潛在的性能問題。分佈式
不共享:任意CPU都只能訪問本身的主存和磁盤。優勢也是擴展性和可用性,缺點是實現複雜以及複雜均衡。高併發
混合型:系統總體上是shared nothing架構,但結點內部多是其餘架構。這樣就混合了多種架構的優勢。性能
數據分區的目的就是:讓數據庫可以並行地讀寫數據,最大程度地挖掘I/O的潛力。常見的分區算法有:round-robin、範圍索引、哈希。spa
即Key-Value存儲,簡稱KV存儲。它是NoSQL存儲的一種方式。它的數據按照鍵值對的形式進行組織,索引和存儲。KV存儲很是適合不涉及過多數據關係業務關係的業務數據,同時能有效減小讀寫磁盤的次數,比SQL數據庫存儲擁有更好的讀寫性能。
典型例子 Sorted String Table即SSTable。其實STL 庫中map和hash_map, Java中hash_table, hash_map就是鍵值存儲。 可是他們值只支持內存操做,並且map的查詢效率過低,關鍵是他們只是簡單的數據結構,不能實現較大規模存儲和分佈式,並且數據的修改效率比較低。 而 SSTalbe就解決了這些問題。
鍵值存儲實際是分佈式表格系統的一種。
文檔存儲支持對結構化數據的訪問,不一樣於關係模型的是,文檔存儲沒有強制的架構。
事實上,文檔存儲以封包鍵值對的方式進行存儲。在這種狀況下,應用對要檢索的封包採起一些約定,或者利用存儲引擎的能力將不一樣的文檔劃分紅不一樣的集合,以管理數據。
與關係模型不一樣的是,文檔存儲模型支持嵌套結構。例如,文檔存儲模型支持XML和JSON文檔,字段的「值」又能夠嵌套存儲其它文檔。文檔存儲模型也支持數組和列值鍵。
與鍵值存儲不一樣的是,文檔存儲關心文檔的內部結構。這使得存儲引擎能夠直接支持二級索引,從而容許對任意字段進行高效查詢。支持文檔嵌套存儲的能力,使得查詢語言具備搜索嵌套對象的能力,XQuery就是一個例子。MongoDB經過支持在查詢中指定JSON字段路徑實現相似的功能。
對SQL 和ACID 支持的比較全面的數據庫了。不過,比較多的仍是介紹日誌的採集和存儲,小文件的分佈式存儲,相似互聯網微博應用的數據存儲等方面的內容。
圖形數據庫存儲頂點和邊的信息,有的支持添加註釋。 圖形數據庫可用於對事物建模,如社交圖譜、真實世界的各類對象。IMDB(Internet MovieDatabase)站點的內容就組成了一幅複雜的圖像,演員與電影彼此交織在一塊兒。 圖形數據庫的查詢語言通常用於查找圖形中斷點的路徑,或端點之間路徑的屬性。Neo4j是一個典型的圖形數據庫。