成人在线你懂的-成人在线免费小视频-成人在线免费网站-成人在线免费视频观看-日韩精品国产一区二区-日韩精品国产一区

掃一掃
關(guān)注微信公眾號

當今世界上五大主流數(shù)據(jù)庫模型簡單介紹
2012-08-10   網(wǎng)絡(luò)

 

什么是數(shù)據(jù)模型?

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

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

迄今為止,主導(dǎo)的數(shù)據(jù)模型仍然是關(guān)系模型。在這里,我們主要想為大家介紹一下非關(guān)系模型,作為對比,本文也會簡要介紹一下關(guān)系模型。

 

數(shù)據(jù)模型概述

1.關(guān)系模型

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

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

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

對不同的編程語言而言,表可以被看成數(shù)組、記錄列表或者結(jié)構(gòu)。表可以使用B樹和哈希表進行索引,以應(yīng)對高性能訪問。

2.鍵值存儲

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

鍵值對可以被創(chuàng)建或刪除,與鍵相關(guān)聯(lián)的值可以被更新。

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

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

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

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

重要的是,鍵值存儲引擎并不在意“值”的內(nèi)部結(jié)構(gòu),它依賴客戶端對“值”進行解釋和管理。

 

3.文檔存儲

文檔存儲支持對結(jié)構(gòu)化數(shù)據(jù)的訪問,不同于關(guān)系模型的是,文檔存儲沒有強制的架構(gòu)。

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

與關(guān)系模型不同的是,文檔存儲模型支持嵌套結(jié)構(gòu)。例如,文檔存儲模型支持XML和JSON文檔,字段的“值”又可以嵌套存儲其它文檔。文檔存儲模型也支持數(shù)組和列值鍵。

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

 

4.列式存儲

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

Map-reduce的實現(xiàn)Hadoop的流數(shù)據(jù)處理效率非常高,列式存儲的優(yōu)點體現(xiàn)的淋漓極致。因此,HBase和Hypertable通常作為非關(guān)系型數(shù)據(jù)倉庫,為Map-reduce進行數(shù)據(jù)分析提供支持。

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

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

5.圖形數(shù)據(jù)庫

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

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

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

選擇哪一種數(shù)據(jù)模型?

數(shù)據(jù)模型有著各自的優(yōu)缺點,它們適用于不同的領(lǐng)域。不管是選擇關(guān)系模型,還是非關(guān)系模型,都要根據(jù)實際應(yīng)用的場景做出選擇。也許你會發(fā)現(xiàn)單一的數(shù)據(jù)模型不能滿足你的解決方案,許多大型應(yīng)用可能需要集成多種數(shù)據(jù)模型。

熱詞搜索:

上一篇:CDN技術(shù)——讓你對CDN有更深入的了解
下一篇:簡單高效,飛視美視頻會議特別好用

分享到: 收藏
主站蜘蛛池模板: 圣洁四人行| 步步惊心剧照| 宇宙刑事卡邦| 日本xxww| 笔仙2大尺度床戏| 春江花月夜理解性默写及答案| 爱情天梯| 国内自拍99| 赤足惊魂电影| 源代码 电影| 戴安·梅尔致命诱饵电影上映时间| 保证书怎么写才有法律效力| 林青霞离婚| 正在直播乒乓赛事| 影子是我的好朋友仿句怎么写| 嗯啊不要啊啊| 搜狐视频官网| borderland| 小班健康活动教案40篇| 在线播放啄木乌丝袜秘书| 三峡游轮重庆到宜昌4天三夜 | 女干.com| 有氧运动有哪些项目| 汤图片大全高清图片| 吻胸吃胸激情舌吻| va视频在线| 掩护| 常景如| 一江春水向东流 电视剧| 英语书七年级下册单词表| h罩杯美女| 洛城僵尸在线观看| 国产伦理电影在线观看| 家庭琐事电影| 投名状在线观看| 小小春| 周韦彤写真| 杨子姗赵又廷演的电影叫什么| 《缱绻少年人》| 红灯区观看| 科室对分级护理落实情况检查记录|