国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MongoDB > 正文

MongoDB的基本特性與內(nèi)部構(gòu)造的講解

2020-10-29 18:42:06
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bjson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點(diǎn)是他支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。

對(duì)于大多數(shù)的MongoDB的用戶來(lái)說(shuō),MongoDB就像是一個(gè)大黑盒。但是如果你能夠了解到MongoDB一些內(nèi)部構(gòu)造的話,將有利于你更好地理解和使用MongoDB。

BSON

在MongoDB中,文檔是對(duì)數(shù)據(jù)的抽象,它被使用在Client端和Server端的交互中。所有的Client端(各種語(yǔ)言的Driver)都會(huì)使用這種抽象,它的表現(xiàn)形式就是我們常說(shuō)的BSON(Binary JSON)。

BSON 是一個(gè)輕量級(jí)的二進(jìn)制數(shù)據(jù)格式。MongoDB能夠使用BSON,并將BSON作為數(shù)據(jù)的存儲(chǔ)存放在磁盤(pán)中。

當(dāng)Client端要將寫(xiě)入文檔,使用查詢等操作時(shí),需要將文檔編碼為BSON格式,然后再發(fā)送給Server端。同樣,Server端的返回結(jié)果也是編碼為BSON格式再返回給Client端的。

使用BSON格式出于以下3種目的:

效率。BSON是為效率而設(shè)計(jì)的,它只需要使用很少的空間。即使在最壞的情況下,BSON格式也比JSON格式在最好的情況下存儲(chǔ)效率高。
傳輸性。在某些情況下,BSON會(huì)犧牲額外的空間讓數(shù)據(jù)的傳輸更加方便。比如,字符串的傳輸?shù)那熬Y會(huì)標(biāo)識(shí)字符串的長(zhǎng)度,而不是在字符串的末尾打上結(jié)束的標(biāo)記。這樣的傳輸形式有利于MongoDB修改傳輸?shù)臄?shù)據(jù)。
性能。最后,BSON格式的編碼和解碼都是非常快速的。它使用了C風(fēng)格的數(shù)據(jù)表現(xiàn)形式,這樣在各種語(yǔ)言中都可以高效地使用。

寫(xiě)入?yún)f(xié)議

Client端訪問(wèn)Server端使用了輕量級(jí)的TCP/IP寫(xiě)入?yún)f(xié)議。這種協(xié)議在MongoDB Wiki中有詳細(xì)介紹,它其實(shí)是在BSON數(shù)據(jù)上面做了一層簡(jiǎn)單的包裝。比如說(shuō),寫(xiě)入數(shù)據(jù)的命令中包含了1個(gè)20字節(jié)的消息頭(由消息的長(zhǎng)度和寫(xiě)入命令標(biāo)識(shí)組成),需要寫(xiě)入的Collection名稱和需要寫(xiě)入的數(shù)據(jù)。

數(shù)據(jù)文件

在MongoDB的數(shù)據(jù)文件夾中(默認(rèn)路徑是/data/db)由構(gòu)成數(shù)據(jù)庫(kù)的所有文件。每一個(gè)數(shù)據(jù)庫(kù)都包含一個(gè).ns文件和一些數(shù)據(jù)文件,其中數(shù)據(jù)文件會(huì)隨著數(shù)據(jù)量的增加而變多。所以如果有一個(gè)數(shù)據(jù)庫(kù)名字叫做foo,那么構(gòu)成foo這個(gè)數(shù)據(jù)庫(kù)的文件就會(huì)由foo.ns,foo.0,foo.1,foo.2等等組成。

數(shù)據(jù)文件每新增一次,大小都會(huì)是上一個(gè)數(shù)據(jù)文件的2倍,每個(gè)數(shù)據(jù)文件最大2G。這樣的設(shè)計(jì)有利于防止數(shù)據(jù)量較小的數(shù)據(jù)庫(kù)浪費(fèi)過(guò)多的空間,同時(shí)又能保證數(shù)據(jù)量較大的數(shù)據(jù)庫(kù)有相應(yīng)的空間使用。

MongoDB會(huì)使用預(yù)分配方式來(lái)保證寫(xiě)入性能的穩(wěn)定(這種方式可以使用

主站蜘蛛池模板: 承德市| 柘荣县| 灌阳县| 博客| 临澧县| 普安县| 丁青县| 吐鲁番市| 武清区| 休宁县| 从化市| 依安县| 垣曲县| 清苑县| 奎屯市| 锡林郭勒盟| 竹山县| 霍邱县| 定兴县| 广元市| 满洲里市| 淮阳县| 灵璧县| 永泰县| 合阳县| 海门市| 永顺县| 信阳市| 南木林县| 临武县| 正镶白旗| 平阳县| 那坡县| 仁寿县| 沐川县| 富锦市| 丰城市| 乐业县| 龙陵县| 曲松县| 乐业县|