溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

mongodb數(shù)據(jù)存儲(chǔ)的方法

發(fā)布時(shí)間:2020-06-29 13:45:21 來(lái)源:億速云 閱讀:160 作者:清晨 欄目:編程語(yǔ)言

這篇文章將為大家詳細(xì)講解有關(guān)mongodb數(shù)據(jù)存儲(chǔ)的方法,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

1、添加數(shù)據(jù)的方法

db.集合名.insert(value):添加數(shù)據(jù)到指定的集合中

2、數(shù)據(jù)文件與空間分配

當(dāng)創(chuàng)建數(shù)據(jù)庫(kù)時(shí)(其實(shí)MongoDB沒(méi)有顯式創(chuàng)建數(shù)據(jù)庫(kù)的方法,在向數(shù)據(jù)庫(kù)中的集合寫入數(shù)據(jù)時(shí)會(huì)自動(dòng)創(chuàng)建該數(shù)據(jù)庫(kù)),MongoDB會(huì)在磁盤上分配一組數(shù)據(jù)文件,所有集合,索引和數(shù)據(jù)庫(kù)的其他元數(shù)據(jù)都保存在這些文件里。數(shù)據(jù)文件被放在啟動(dòng)時(shí)指定的dbpath里,默認(rèn)放入/data/db下面。典型的一個(gè)文件組織結(jié)構(gòu)如下:

$ cat /data/db
$ ls -al
-rw------- 1 root root   16777216 09-18 00:54 local.ns
-rw------- 1 root root   67108864 09-18 00:54 local.0
-rw------- 1 root root 2146435072 09-18 00:55 local.1
-rw------- 1 root root 2146435072 09-18 00:56 local.2
-rw------- 1 root root 2146435072 09-18 00:57 local.3
-rw------- 1 root root 2146435072 09-18 00:58 local.4
-rw------- 1 root root 2146435072 09-18 00:59 local.5
-rw------- 1 root root 2146435072 09-18 01:01 local.6
-rw------- 1 root root 2146435072 09-18 01:02 local.7
-rw------- 1 root root 2146435072 09-18 01:03 local.8
-rw------- 1 root root 2146435072 09-18 01:04 local.9
-rw------- 1 root root 2146435072 09-18 01:05 local.10
-rw------- 1 root root   16777216 09-18 01:06 test.ns
-rw------- 1 root root   67108864 09-18 01:06 test.0
-rw------- 1 root root  134217728 09-18 01:06 test.1
-rw------- 1 root root  268435456 09-18 01:06 test.2
-rw------- 1 root root  536870912 09-18 01:06 test.3
-rw------- 1 root root 1073741824 09-18 01:07 test.4
-rw------- 1 root root 2146435072 09-18 01:07 test.5
-rw------- 1 root root 2146435072 09-18 01:09 test.6
-rw------- 1 root root 2146435072 09-18 01:11 test.7
-rw------- 1 root root 2146435072 09-18 01:13 test.8
...
-rwxr-xr-x 1 root root          6 09-18 13:54 mongod.lock
drwxr-xr-x 2 root root       4096 11-13 18:39 journal
drwxr-xr-x 2 root root       4096 11-13 19:02 _tmp

mongod.lock中存儲(chǔ)了服務(wù)器的進(jìn)程ID,是一個(gè)進(jìn)程鎖定文件。數(shù)據(jù)文件是依據(jù)所屬的數(shù)據(jù)庫(kù)命名的。

test.ns是第一個(gè)生成的文件(ns擴(kuò)展名就是namespace的意思),數(shù)據(jù)庫(kù)中的每個(gè)集合和索引都有自己的命名空間,每個(gè)命名空間的元數(shù)據(jù)都存放在這個(gè)文件里。默認(rèn)情況下,.ns文件大小固定在16MB,大約可以存儲(chǔ)24000個(gè)命名空間。也就是說(shuō)數(shù)據(jù)庫(kù)中的索引和集合總數(shù)不能超過(guò)24000,該值可以通過(guò)mongod的--nssize選項(xiàng)進(jìn)行定制。

像test.0這樣以0開(kāi)始的整數(shù)結(jié)尾的文件就是集合和索引數(shù)據(jù)文件。剛開(kāi)始的時(shí)候,即使只有一條數(shù)據(jù),MongoDB也會(huì)預(yù)分配幾個(gè)文件,這種預(yù)分配的做法,能讓數(shù)據(jù)盡可能連續(xù)存儲(chǔ),減少磁盤碎片。在像數(shù)據(jù)庫(kù)添加數(shù)據(jù)時(shí),MongoDB會(huì)分配更多的數(shù)據(jù)文件。每個(gè)新數(shù)據(jù)文件的大小都是上一個(gè)已分配文件的兩倍(64M->128M->256M),直到預(yù)分配文件大小的上限2G。此處基于一個(gè)假設(shè),如果總數(shù)據(jù)大小呈恒定速率增長(zhǎng),應(yīng)該逐漸增加數(shù)據(jù)文件分配的空間。當(dāng)然這個(gè)預(yù)分配策略也是可以通過(guò)--noprealloc關(guān)掉,但是不建議在production環(huán)境下使用。

默認(rèn)的local數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)不參與replication。當(dāng)mongod是一個(gè)副本集的成員時(shí),在local數(shù)據(jù)庫(kù)中就有一個(gè)叫做oplog.rs的預(yù)分配的capped集合,預(yù)分配的大小為磁盤空間的5%。這個(gè)大小可以通過(guò)--oplogSize進(jìn)行調(diào)整。oplog主要用于副本集Primary和Secondary成員見(jiàn)的replication,它的大小限制了兩個(gè)副本集之間,在重新完全同步之前,允許多長(zhǎng)時(shí)間不同步。

journal目錄,journal功能2.4版本默認(rèn)是開(kāi)啟的。

關(guān)于mongodb數(shù)據(jù)存儲(chǔ)的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI