五大主流數據庫模型


導讀:無論是關系型數據庫還是非關系型數據庫,都是某種數據模型的實現。本文將為大家簡要介紹5種常見的數據模型,讓我們來追本溯源,窺探現在流行的數據庫解決方案背后的神秘世界。


1.jpg

什么是數據模型?

訪問數據庫中的數據取決于數據庫實現的數據模型。數據模型會影響客戶端通過API對數據的操作。不同的數據模型可能會提供或多或少的功能。一般而言,數據模型不會直接提供過多的功能,許多功能必須由客戶端自行實現。

數據模型決定了客戶端如何對數據進行編碼存儲。應用程序需要某種域模型與存儲技術支持的特性進行映射。

迄今為止,主導的數據模型仍然是關系模型。在這里,我們主要想為大家介紹一下非關系模型,作為對比,本文也會簡要介紹一下關系模型。

2.gif

數據模型概述

1.關系模型

關系模型使用記錄(由元組組成)進行存儲,記錄存儲在表中,表由架構界定。表中的每個列都有名稱和類型,表中的所有記錄都要符合表的定義。SQL是專門的查詢語言,提供相應的語法查找符合條件的記錄,如表聯接(Join)。表聯接可以基于表之間的關系在多表之間查詢記錄。

表中的記錄可以被創建和刪除,記錄中的字段也可以單獨更新。

關系模型數據庫通常提供事務處理機制,這為涉及多條記錄的自動化處理提供了解決方案。

對不同的編程語言而言,表可以被看成數組、記錄列表或者結構。表可以使用B樹和哈希表進行索引,以應對高性能訪問。

2.鍵值存儲

鍵值存儲提供了基于鍵對值的訪問方式。

鍵值對可以被創建或刪除,與鍵相關聯的值可以被更新。

鍵值存儲一般不提供事務處理機制。

對不同的編程語言而言,鍵值存儲類似于哈希表。對此,不同的編程語言有不同的名字(如,Java稱之為“HashMap”,Perl稱之為“hash”,Python稱之為“dict”,PHP稱之為“associative array”),C++則稱之為“boost::unordered_map<…>”。

鍵值存儲支持鍵上自有的隱式索引。

鍵值存儲看起來好像不太有用,但卻可以在“值”上存儲大量信息?!爸怠笨梢允且粋€XML文檔,一個JSON對象,或者其它任何序列化形式。

重要的是,鍵值存儲引擎并不在意“值”的內部結構,它依賴客戶端對“值”進行解釋和管理。

3.png

3.文檔存儲

文檔存儲支持對結構化數據的訪問,不同于關系模型的是,文檔存儲沒有強制的架構。

事實上,文檔存儲以封包鍵值對的方式進行存儲。在這種情況下,應用對要檢索的封包采取一些約定,或者利用存儲引擎的能力將不同的文檔劃分成不同的集合,以管理數據。

與關系模型不同的是,文檔存儲模型支持嵌套結構。例如,文檔存儲模型支持XML和JSON文檔,字段的“值”又可以嵌套存儲其它文檔。文檔存儲模型也支持數組和列值鍵。

與鍵值存儲不同的是,文檔存儲關心文檔的內部結構。這使得存儲引擎可以直接支持二級索引,從而允許對任意字段進行高效查詢。支持文檔嵌套存儲的能力,使得查詢語言具有搜索嵌套對象的能力,XQuery就是一個例子。MongoDB通過支持在查詢中指定JSON字段路徑實現類似的功能。

10.jpg

4.列式存儲

如果翻轉數據,列式存儲與關系存儲將會非常相似。與關系模型存儲記錄不同,列式存儲以流的方式在列中存儲所有的數據。對于任何記錄,索引都可以快速地獲取列上的數據。

Map-reduce的實現Hadoop的流數據處理效率非常高,列式存儲的優點體現的淋漓極致。因此,HBaseHypertable通常作為非關系型數據倉庫,為Map-reduce進行數據分析提供支持。

關系類型的列標對數據分析效果不好,因此,用戶經常將更復雜的數據存儲在列式數據庫中。這直接體現在Cassandra中,它引入的“column family”可以被認為是一個“super-column”。

列式存儲支持行檢索,但這需要從每個列獲取匹配的列值,并重新組成行。

(列式數據庫InfoBright 數據倉庫性能很不錯)

5.圖形數據庫

圖形數據庫存儲頂點和邊的信息,有的支持添加注釋。

圖形數據庫可用于對事物建模,如社交圖譜、真實世界的各種對象。IMDB(Internet Movie Database)站點的內容就組成了一幅復雜的圖像,演員與電影彼此交織在一起。

圖形數據庫的查詢語言一般用于查找圖形中斷點的路徑,或端點之間路徑的屬性。Neo4j是一個典型的圖形數據庫。

選擇哪一種數據模型?

數據模型有著各自的優缺點,它們適用于不同的領域。不管是選擇關系模型,還是非關系模型,都要根據實際應用的場景做出選擇。也許你會發現單一的數據模型不能滿足你的解決方案,許多大型應用可能需要集成多種數據模型。(張志平/編譯)


五個值得關注的圖形數據庫

圖形數據庫是一種非關系型數據庫,它應用圖形理論存儲實體之間的關系信息。最常見的一個例子,就是社會網絡中人與人之間的關系。關系型數據庫用于存儲“關系型”數據的效果并不好,其查詢復雜、緩慢、超出預期,而圖形數據庫的獨特設計恰恰彌補了這個缺陷。

Google的圖形計算系統名為Pregel,下面讓我們來為您介紹幾個流行的圖形數據庫。

1. Neo4j

5.jpg

Neo4j是一個流行的圖形數據庫,它是開源的。

2. FlockDB

6.jpg

FlockDB是Twitter為進行關系數據分析而構建的。FlockDB迄今為止還沒有穩定的版本,對于它是否是一個真正的圖形數據庫,尚有爭議。

3. AllegroGraph

7.jpg

AllegroGraph是一個基于W3c標準的為資源描述框架構建的圖形數據庫。它為處理鏈接數據和Web語義而設計,支持SPARQL、RDFS++和Prolog。

4. GraphDB

8.jpg

GraphDB是德國sones公司在.NET基礎上構建的。GraphDB托管在Windows Azure平臺上。

5. InfiniteGraph

9.jpg

InfiniteGraph基于Java實現,它的目標是構建“分布式的圖形數據庫”,已被美國國防部和美國中央情報局所采用。

下一代Hadoop戰略——數據即平臺

10.jpg

在上周的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工作的能力。

谷歌算法揭秘:一次搜索請求平均往返2400公里

11.jpg

谷歌搜索演進

作為全球使用最廣泛的搜索引擎,谷歌算法一直有一層神秘面紗。近日谷歌工程總監斯科特·霍夫曼向騰訊科技講述谷歌算法幕后故事,稱2011年有520多項改進,自2003年到現在,Google搜索已解決4500億個搜索請求。

斯科特還透露,谷歌一個搜索請求平均往返于電腦和數據中心單程距離是750英里,這也意味著一次搜索請求平均往返需要1500英里,約合2400公里。

RavenDB:基于Windows/.NET平臺的NoSQL數據庫

12.png

眾所周知,NoSQL運動旨在成為大數據時代傳統關系數據庫管理系統的替代品。如今Microsoft對開源的態度有所轉變,RavenDB就是很好的例子。Microsoft對RavenDB(NoSQL數據庫)的認可令很多人感到驚訝。RavenDB可以輕易的替代關系數據庫管理系統并兼容以往的.NET應用。

RavenDB是針對Windows/.NET平臺而設計的文檔數據庫。RavenDB的出現將.NET應用與非關系數據庫連接到一起。數據以Shcema-less方式存儲,并直接通過HTTP、RESTful API或更方便的.NET客戶端API連接。.NET客戶端API使用LINQ操作RavenDB數據庫文檔存儲。

云計算:亞馬遜第一 第二把交椅何人坐?

13.jpg

亞馬遜對用戶推出的Web服務,使它成為迄今為止最大的云服務提供商。就像大多數的大型云供應商一樣,亞馬遜并沒有就當前或計劃中的數據中心透露太多。

埃森哲分析師Huan Liu的最新研究結果顯示,亞馬遜的Elastic Compute Cloud(EC2)在高達45萬臺服務器上運行。亞馬遜沒有公布AWS的營收,但有人表示它可能已經是一項10億美元的業務。

本文預計Rackspace、Google、微軟、IBM、惠普、VMware、Facebook這七家公司將成為亞馬遜的云對手。

新密鑰技術簡化云端數據加密

由于在云環境中,IT團隊缺乏對數據安全的直接控制,所以數據遷移到云環境將會給IT團隊帶來新的復雜的安全問題。此外,云供應商認為數據安全是需要共同承擔責任,即服務供應商保證物理安全,用戶必須保護其服務器和數據的安全。這將需要新的加密策略和密鑰管理策略,將密鑰存儲在云環境外部,而不是云環境中。

初創安全公司Porticor剛剛推出了一個解決方案,專門解決云環境中靜態數據安全問題。Porticor公司提供了一種分離密鑰加密解決方案,云客戶是唯一知道主密鑰的人。另外,Porticor公司解決了所有與加密數據有關的復雜問題,客戶幾乎不要去想這些問題。這種獨特的密鑰管理解決方案既提供了安全性,也提供了便利性。

微軟下調Azure云服務價格 與亞馬遜競爭

微軟上周下調了其Azure云存儲服務和Windows Azure Extra Small計算服務的價格。此舉是微軟在亞馬遜下調其Web服務價格幾天之后采取的行動。

這一切意味著什么?對于IT買主來說,云計算價格正在迅速下降并且已經與電費水平一樣??紤]到電費受天然氣價格、季節和其它可變因素的影響,云計算的價格可能更便宜。

轉自:http://blog.csdn.net/hguisu/article/details/12521597

原創文章,作者:s19930811,如若轉載,請注明出處:http://www.www58058.com/2624

(0)
s19930811s19930811
上一篇 2015-04-04
下一篇 2015-04-04

相關推薦

  • N23-第一周 記流水賬

      機器已經設置好了  屏幕左邊是linux控制臺,屏幕中間放置記事本來記筆記,屏幕右邊是教學視頻,如圖 費我老大勁 筆記本的無線網卡驅動不好弄啊   注重操作實踐,全程跟著操作,一定要照著做,動手啊動手…………..前十五天內容以查漏補缺為主,所以筆記是興之所至,遵循以下原則:&n…

    Linux干貨 2016-09-18
  • 第六周作業補充-vim簡介及其使用方法詳細介紹

    What       Vim是由Vi發展出來的一個文本編輯器。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在Unix& Unix Like操作系統中被廣泛使用。和Emacs并列成為Unix& Unix Like操作系統中最受歡迎的文本編輯器 When& Who  &nb…

    Linux干貨 2016-09-26
  • Linux進程篇16.0

    Linux進程介紹

    Linux干貨 2017-12-18
  • N25第一周博客作業

    本周加班很多,視頻未看完,下周補上

    Linux干貨 2016-12-04
  • bash腳本編程之算術運算和文件查找

    算數運算在每個編程語言里面是最基本的功能,在bash里面也是.相對于其他編程語言來說在bash里面不能直接以變量加上變量的形式來表現;比如我們先聲明兩個變量num1和num2然后再做運算。 num1=2 num2=3 echo "$num1+$num2" 2+3 這里我們顯示的結果直接為2+3只是做了變量的替換,而不是做兩個變量…

    Linux干貨 2016-12-23
欧美性久久久久