導讀:不管是關係型數據庫仍是非關係型數據庫,都是某種數據模型的實現。本文將爲你們簡要介紹5種常見的數據模型,讓咱們來追本溯源,窺探如今流行的數據庫解決方案背後的神祕世界。html
什麼是數據模型?算法
訪問數據庫中的數據取決於數據庫實現的數據模型。數據模型會影響客戶端經過API對數據的操做。不一樣的數據模型可能會提供或多或少的功能。通常而言,數據模型不會直接提供過多的功能,許多功能必須由客戶端自行實現。mongodb
數據模型決定了客戶端如何對數據進行編碼存儲。應用程序須要某種域模型與存儲技術支持的特性進行映射。數據庫
迄今爲止,主導的數據模型仍然是關係模型。在這裏,咱們主要想爲你們介紹一下非關係模型,做爲對比,本文也會簡要介紹一下關係模型。apache
數據模型概述編程
1.關係模型數組
關係模型使用記錄(由元組組成)進行存儲,記錄存儲在表中,表由架構界定。表中的每一個列都有名稱和類型,表中的全部記錄都要符合表的定義。SQL是專門的查詢語言,提供相應的語法查找符合條件的記錄,如表聯接(Join)。表聯接能夠基於表之間的關係在多表之間查詢記錄。安全
表中的記錄能夠被建立和刪除,記錄中的字段也能夠單獨更新。服務器
關係模型數據庫一般提供事務處理機制,這爲涉及多條記錄的自動化處理提供瞭解決方案。網絡
對不一樣的編程語言而言,表能夠被當作數組、記錄列表或者結構。表可使用B樹和哈希表進行索引,以應對高性能訪問。
2.鍵值存儲
鍵值存儲提供了基於鍵對值的訪問方式。
鍵值對能夠被建立或刪除,與鍵相關聯的值能夠被更新。
鍵值存儲通常不提供事務處理機制。
對不一樣的編程語言而言,鍵值存儲相似於哈希表。對此,不一樣的編程語言有不一樣的名字(如,Java稱之爲「HashMap」,Perl稱之爲「hash」,Python稱之爲「dict」,PHP稱之爲「associative array」),C++則稱之爲「boost::unordered_map<...>」。
鍵值存儲支持鍵上自有的隱式索引。
鍵值存儲看起來好像不太有用,但卻能夠在「值」上存儲大量信息。「值」能夠是一個XML文檔,一個JSON對象,或者其它任何序列化形式。
重要的是,鍵值存儲引擎並不在乎「值」的內部結構,它依賴客戶端對「值」進行解釋和管理。
3.文檔存儲
文檔存儲支持對結構化數據的訪問,不一樣於關係模型的是,文檔存儲沒有強制的架構。
事實上,文檔存儲以封包鍵值對的方式進行存儲。在這種狀況下,應用對要檢索的封包採起一些約定,或者利用存儲引擎的能力將不一樣的文檔劃分紅不一樣的集合,以管理數據。
與關係模型不一樣的是,文檔存儲模型支持嵌套結構。例如,文檔存儲模型支持XML和JSON文檔,字段的「值」又能夠嵌套存儲其它文檔。文檔存儲模型也支持數組和列值鍵。
與鍵值存儲不一樣的是,文檔存儲關心文檔的內部結構。這使得存儲引擎能夠直接支持二級索引,從而容許對任意字段進行高效查詢。支持文檔嵌套存儲的能力,使得查詢語言具備搜索嵌套對象的能力,XQuery就是一個例子。MongoDB經過支持在查詢中指定JSON字段路徑實現相似的功能。
4.列式存儲
若是翻轉數據,列式存儲與關係存儲將會很是類似。與關係模型存儲記錄不一樣,列式存儲以流的方式在列中存儲全部的數據。對於任何記錄,索引均可以快速地獲取列上的數據。
Map-reduce的實現Hadoop的流數據處理效率很是高,列式存儲的優勢體現的淋漓極致。所以,HBase和Hypertable一般做爲非關係型數據倉庫,爲Map-reduce進行數據分析提供支持。
關係類型的列標對數據分析效果很差,所以,用戶常常將更復雜的數據存儲在列式數據庫中。這直接體如今Cassandra中,它引入的「column family」能夠被認爲是一個「super-column」。
列式存儲支持行檢索,但這須要從每一個列獲取匹配的列值,並從新組成行。
(列式數據庫InfoBright 數據倉庫性能很不錯)
5.圖形數據庫
圖形數據庫存儲頂點和邊的信息,有的支持添加註釋。
圖形數據庫可用於對事物建模,如社交圖譜、真實世界的各類對象。IMDB(Internet Movie Database)站點的內容就組成了一幅複雜的圖像,演員與電影彼此交織在一塊兒。
圖形數據庫的查詢語言通常用於查找圖形中斷點的路徑,或端點之間路徑的屬性。Neo4j是一個典型的圖形數據庫。
選擇哪種數據模型?
數據模型有着各自的優缺點,它們適用於不一樣的領域。不論是選擇關係模型,仍是非關係模型,都要根據實際應用的場景作出選擇。也許你會發現單一的數據模型不能知足你的解決方案,許多大型應用可能須要集成多種數據模型。(張志平/編譯)
圖形數據庫是一種非關係型數據庫,它應用圖形理論存儲實體之間的關係信息。最多見的一個例子,就是社會網絡中人與人之間的關係。關係型數據庫用於存儲「關係型」數據的效果並很差,其查詢複雜、緩慢、超出預期,而圖形數據庫的獨特設計偏偏彌補了這個缺陷。
Google的圖形計算系統名爲Pregel,下面讓咱們來爲您介紹幾個流行的圖形數據庫。
1. Neo4j
Neo4j是一個流行的圖形數據庫,它是開源的。
2. FlockDB
FlockDB是Twitter爲進行關係數據分析而構建的。FlockDB迄今爲止尚未穩定的版本,對於它是不是一個真正的圖形數據庫,尚有爭議。
3. AllegroGraph
AllegroGraph是一個基於W3c標準的爲資源描述框架構建的圖形數據庫。它爲處理連接數據和Web語義而設計,支持SPARQL、RDFS++和Prolog。
4. GraphDB
GraphDB是德國sones公司在.NET基礎上構建的。GraphDB託管在Windows Azure平臺上。
5. InfiniteGraph
InfiniteGraph基於Java實現,它的目標是構建「分佈式的圖形數據庫」,已被美國國防部和美國中央情報局所採用。
在上週的Strata大會上,與會者透露出有關下代Hadoop的消息。包括對6000節點的支持、配備高可用性的HDFS以及下一代MapReduce的特性等。而將來Hadoop替代操做系統的大膽想法也讓咱們充滿無限遐想。
在Strata會議上Hortonworks創始人和Apache Hadoop項目VP Arun Murthy透露新版Hadoop的相關特性。下一代的Hadoop將支持6000節點,同時配備高可用性的HDFS(Hadoop Distributed File System)。
而下一代MapReduce框架則被命名爲YARN或MRv2(MapReduce version 2)。新框架已經再也不是傳統的MapReduce框架,甚至與MapReduce無關,YARN可被看作是通用的運行時框架,用戶能夠編寫本身的計算框架,在該運行環境中運行。通過改良的MapReduce將分離HDFS中塊和命名空間的管理,提升數據的可伸縮性。最重要的是改良後的MapReduce將對非MapReduce應用進行支持,這使得更多類型應用將具有在MapReduce工做的能力。
谷歌搜索演進
做爲全球使用最普遍的搜索引擎,谷歌算法一直有一層神祕面紗。近日谷歌工程總監斯科特·霍夫曼向騰訊科技講述谷歌算法幕後故事,稱2011年有520多項改進,自2003年到如今,Google搜索已解決4500億個搜索請求。
斯科特還透露,谷歌一個搜索請求平均往返於電腦和數據中心單程距離是750英里,這也意味着一次搜索請求平均往返須要1500英里,約合2400千米。
RavenDB:基於Windows/.NET平臺的NoSQL數據庫
衆所周知,NoSQL運動旨在成爲大數據時代傳統關係數據庫管理系統的替代品。現在Microsoft對開源的態度有所轉變,RavenDB就是很好的例子。Microsoft對RavenDB(NoSQL數據庫)的承認令不少人感到驚訝。RavenDB能夠輕易的替代關係數據庫管理系統併兼容以往的.NET應用。
RavenDB是針對Windows/.NET平臺而設計的文檔數據庫。RavenDB的出現將.NET應用與非關係數據庫鏈接到一塊兒。數據以Shcema-less方式存儲,並直接經過HTTP、RESTful API或更方便的.NET客戶端API鏈接。.NET客戶端API使用LINQ操做RavenDB數據庫文檔存儲。
亞馬遜對用戶推出的Web服務,使它成爲迄今爲止最大的雲服務提供商。就像大多數的大型雲供應商同樣,亞馬遜並無就當前或計劃中的數據中心透露太多。
埃森哲分析師Huan Liu的最新研究結果顯示,亞馬遜的Elastic Compute Cloud(EC2)在高達45萬臺服務器上運行。亞馬遜沒有公佈AWS的營收,但有人表示它可能已是一項10億美圓的業務。
本文預計Rackspace、Google、微軟、IBM、惠普、VMware、Facebook這七家公司將成爲亞馬遜的雲對手。
因爲在雲環境中,IT團隊缺少對數據安全的直接控制,因此數據遷移到雲環境將會給IT團隊帶來新的複雜的安全問題。此外,雲供應商認爲數據安全是須要共同承擔責任,即服務供應商保證物理安全,用戶必須保護其服務器和數據的安全。這將須要新的加密策略和密鑰管理策略,將密鑰存儲在雲環境外部,而不是雲環境中。
初創安全公司Porticor剛剛推出了一個解決方案,專門解決雲環境中靜態數據安全問題。Porticor公司提供了一種分離密鑰加密解決方案,雲客戶是惟一知道主密鑰的人。另外,Porticor公司解決了全部與加密數據有關的複雜問題,客戶幾乎不要去想這些問題。這種獨特的密鑰管理解決方案既提供了安全性,也提供了便利性。
微軟上週下調了其Azure雲存儲服務和Windows Azure Extra Small計算服務的價格。此舉是微軟在亞馬遜下調其Web服務價格幾天以後採起的行動。
這一切意味着什麼?對於IT買主來講,雲計算價格正在迅速降低而且已經與電費水平同樣。考慮到電費受自然氣價格、季節和其它可變因素的影響,雲計算的價格可能更便宜。
原文地址:http://www.csdn.net/article/2012-03-16/313206