日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
教你如何利用MySQL學(xué)習(xí)MongoDB之?dāng)?shù)據(jù)存儲(chǔ)結(jié)構(gòu)

在上文中,我們了解了教你如何利用MySQL學(xué)習(xí)MongoDB之安裝篇,本文中我們繼續(xù)我們的學(xué)習(xí)之旅,學(xué)習(xí)其數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)。

1、MySQL的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)

MySQL的每個(gè)數(shù)據(jù)庫(kù)都對(duì)應(yīng)存放在一個(gè)與數(shù)據(jù)庫(kù)同名的文件夾中,MySQL數(shù)據(jù)庫(kù)文件包括MySQL所建數(shù)據(jù)庫(kù)文件和MySQL所用存儲(chǔ)引擎創(chuàng)建的數(shù)據(jù)庫(kù)文件。

MySQL如果使用MyISAM存儲(chǔ)引擎,數(shù)據(jù)庫(kù)文件類型就包括.frm、.MYD、.MYI

MySQL如果使用InnoDB存儲(chǔ)引擎,數(shù)據(jù)庫(kù)文件類型就包括.frm、ibdata1、.ibd

(1)、數(shù)據(jù)庫(kù)文件:

.frm文件:存儲(chǔ)數(shù)據(jù)表的框架結(jié)構(gòu),MySQL數(shù)據(jù)庫(kù)文件名與表名相同,每個(gè)表對(duì)應(yīng)一個(gè)同名frm文件,與操作系統(tǒng)和存儲(chǔ)引擎無(wú)關(guān),即不管MySQL運(yùn)行在何種操作系統(tǒng)上,使用何種存儲(chǔ)引擎,都有這個(gè)文件。除了必有的.frm文件,根據(jù)MySQL所使用的存儲(chǔ)引擎的不同(MySQL常用的兩個(gè)存儲(chǔ)引擎是MyISAM和InnoDB),存儲(chǔ)引擎會(huì)創(chuàng)建各自不同的數(shù)據(jù)庫(kù)文件。

(2)、MyISAM數(shù)據(jù)庫(kù)表文件:

  1. .MYD文件:即MY Data,表數(shù)據(jù)文件
  2. .MYI文件:即MY Index,索引文件
  3. .log文件:日志文件

(3)、InnoDB采用表空間:

ibdata1、ibdata2:系統(tǒng)表空間MySQL數(shù)據(jù)庫(kù)文件,存儲(chǔ)InnoDB系統(tǒng)信息和用戶數(shù)據(jù)庫(kù)表數(shù)據(jù)和索引,被所有表共用;

.ibd文件:?jiǎn)伪肀砜臻g文件,每個(gè)表使用一個(gè)表空間文件(file per table),用于存放用戶數(shù)據(jù)庫(kù)表數(shù)據(jù)和索引;

日志文件:ib_logfile1、ib_logfile2。

2、MongoDB的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)

MongoDB對(duì)國(guó)內(nèi)用戶來(lái)說(shuō)比較新, 它就像是一個(gè)黑盒子,但是如果對(duì)于它內(nèi)部的數(shù)據(jù)存儲(chǔ)了解多一些的話,那么將會(huì)很快的理解和駕馭MongoDB,讓它發(fā)揮它更大的作用。

MongoDB的默認(rèn)數(shù)據(jù)目錄是/data/db,它負(fù)責(zé)存儲(chǔ)所有的MongoDB的數(shù)據(jù)文件。在MongoDB內(nèi)部,每個(gè)數(shù)據(jù)庫(kù)都包含一個(gè).ns文件和一些數(shù)據(jù)文件,而且這些數(shù)據(jù)文件會(huì)隨著數(shù)據(jù)量的增加而變得越來(lái)越多。所以如果系統(tǒng)中有一個(gè)叫做foo的數(shù)據(jù)庫(kù),那么構(gòu)成foo這個(gè)數(shù)據(jù)庫(kù)的文件就會(huì)由foo.ns,foo.0,foo.1,foo.2 等等組成,具體如下:

 
 
 
 
  1. [root@localhost db]# ll /data/db/  
  2. 總計(jì) 196844  
  3. -rw------- 1 root root 16777216 04-15 16:33 admin.0  
  4. -rw------- 1 root root 33554432 04-15 16:33 admin.1  
  5. -rw------- 1 root root 16777216 04-15 16:33 admin.ns  
  6. -rw------- 1 root root 16777216 04-21 17:30 foo.0  
  7. -rw------- 1 root root 33554432 04-21 17:30 foo.1  
  8. -rw------- 1 root root 67108864 04-21 17:30 foo.2  
  9. -rw------- 1 root root 16777216 04-21 17:30 foo.ns  
  10. -rwxr-xr-x 1 root root 6 04-21 17:16 mongod.lock  
  11. -rw------- 1 root root 16777216 04-15 16:30 test.0  
  12. -rw------- 1 root root 33554432 04-15 16:30 test.1  
  13. -rw------- 1 root root 16777216 04-15 16:30 test.ns  
  14. drwxr-xr-x 2 root root 4096 04-21 17:30 _tmp  
  15. [root@localhost db]# 

MongoDB內(nèi)部有預(yù)分配表空間的機(jī)制,每個(gè)預(yù)分配的文件都用0進(jìn)行填充,由于有了這個(gè)機(jī)制, MongoDB始終保持額外的空間和空余的數(shù)據(jù)文件,從而有效避免了由于數(shù)據(jù)暴增而帶來(lái)的磁盤(pán)壓力過(guò)大的問(wèn)題。

由于表中數(shù)據(jù)量的增加,數(shù)據(jù)文件每新分配一次,它的大小都會(huì)是上一個(gè)數(shù)據(jù)文件大小的2倍,每個(gè)數(shù)據(jù)文件***2G。這樣的機(jī)制有利于防止較小的數(shù)據(jù)庫(kù)浪費(fèi)過(guò)多的磁盤(pán)空間,同時(shí)又能保證較大的數(shù)據(jù)庫(kù)有相應(yīng)的預(yù)留空間使用。

數(shù)據(jù)庫(kù)的每張表都對(duì)應(yīng)一個(gè)命名空間,每個(gè)索引也有對(duì)應(yīng)的命名空間。這些命名空間的元數(shù)據(jù)都集中在*.ns文件中。

在下圖中,foo這個(gè)數(shù)據(jù)庫(kù)包含3個(gè)文件用于存儲(chǔ)表和索引數(shù)據(jù),foo.2文件屬于預(yù)分配的空文件。foo.0和foo.1這兩個(gè)數(shù)據(jù)文件被分為了相應(yīng)的盤(pán)區(qū)對(duì)應(yīng)不同的名字空間。

上圖顯示了命名空間和盤(pán)區(qū)的關(guān)系。每個(gè)命名空間可以包含多個(gè)不同的盤(pán)區(qū),這些盤(pán)區(qū)并不是連續(xù)的。與數(shù)據(jù)文件的增長(zhǎng)相同,每一個(gè)命名空間對(duì)應(yīng)的盤(pán)區(qū)大小的也是隨著分配的次數(shù)不斷增長(zhǎng)的。這樣做的目的是為了平衡命名空間浪費(fèi)的空間與保持某一個(gè)命名空間中數(shù)據(jù)的連續(xù)性。上圖中還有一個(gè)需要注意的命名空間:$freelist,這個(gè)命名空間用于記錄不再使用的盤(pán)區(qū)(被刪除的Collection或索引)。每當(dāng)命名空間需要分配新的盤(pán)區(qū)的時(shí)候,都會(huì)先查看$freelist是否有大小合適的盤(pán)區(qū)可以使用。

【編輯推薦】

  1. Craigslist采用MongoDB替代MySQL
  2. MongoDB源碼分析--Command體系架構(gòu)
  3. Mongodb源碼分析--內(nèi)存文件映射(MMAP)
  4. 淺析Mongodb源碼之游標(biāo)Cursor
  5. 如何解決PHP+MySQL出現(xiàn)亂碼的現(xiàn)象

文章題目:教你如何利用MySQL學(xué)習(xí)MongoDB之?dāng)?shù)據(jù)存儲(chǔ)結(jié)構(gòu)
地址分享:http://www.dlmjj.cn/article/cdihpgc.html