MongoDB 之旅(一) 簡介

mongodb 之旅(一) 簡介Posted on 隨著Nosql的興起,一直希望了解這個(gè)領(lǐng)域。伴隨著新工作的開始,決定好好地學(xué)習(xí)一下Mongodb,近日無事,故將知識(shí)點(diǎn)簡單總結(jié)一下,以方便日后使用: 一、簡單介紹 首先,MongoDB最初是為一個(gè)要求數(shù)據(jù)庫能在多臺(tái)機(jī)器間優(yōu)雅伸

MongoDB 之旅(一) 簡介 Posted on

MongoDB 之旅(一) 簡介

隨著nosql的興起,一直希望了解這個(gè)領(lǐng)域。伴隨著新工作的開始,決定好好地學(xué)習(xí)一下mongodb,近日無事,故將知識(shí)點(diǎn)簡單總結(jié)一下,香港虛擬主機(jī),以方便日后使用:

????? 一、簡單介紹

  首先,MongoDB最初是為一個(gè)要求數(shù)據(jù)庫能在多臺(tái)機(jī)器間優(yōu)雅伸縮的平臺(tái)而開發(fā)的,

  其次,MongoDB是作為Web應(yīng)用程序的數(shù)據(jù)存儲(chǔ)設(shè)計(jì)的。

  一點(diǎn)可以區(qū)別它和現(xiàn)代數(shù)據(jù)庫系統(tǒng)的是:MongoDB被設(shè)計(jì)為可水平伸縮的主要數(shù)據(jù)存儲(chǔ)。也為解決關(guān)系型數(shù)據(jù)庫的復(fù)雜的表關(guān)聯(lián)提供了一種表示豐富、有層級(jí)的數(shù)據(jù)結(jié)構(gòu)。

?

  二、MongoDB的主要特性

  1)MongoDB的數(shù)據(jù)模型是面向文檔的。

  文檔基本上是一組屬性名和屬性值的集合。屬性值的數(shù)據(jù)類型:字符串、數(shù)字、 日期、數(shù)組或者其他文檔。(豐富的結(jié)構(gòu)和無需定義Schema,降低了數(shù)據(jù)庫的復(fù)雜的邏輯設(shè)計(jì)和提高了應(yīng)用程序的開發(fā))

  2)即時(shí)查詢

  意思是,無需預(yù)先定義系統(tǒng)接受的查詢類型。無疑,關(guān)系型數(shù)據(jù)庫是具有個(gè)能力,它們會(huì)嚴(yán)格遵照指示執(zhí)行任何完備的SQL查詢,但是,并非所有的數(shù)據(jù)庫都支持動(dòng)態(tài)查詢。MongoDB盡量保持著這種能力。

  3)二級(jí)索引

  B樹實(shí)現(xiàn),虛擬主機(jī),在MongoDB里,每個(gè)集合最多可以創(chuàng)建64個(gè)索引。

  4)復(fù)制

  MongoDB中,稱為副本集(replica set)的拓?fù)浣Y(jié)構(gòu)提供了復(fù)制功能。通過將數(shù)據(jù)分布在多臺(tái)機(jī)器上以實(shí)現(xiàn)冗余,提供自動(dòng)故障轉(zhuǎn)移的功能,擴(kuò)展了數(shù)據(jù)庫的讀能力。構(gòu)成于一個(gè)主節(jié)點(diǎn)和多個(gè)從節(jié)點(diǎn)。在此,并不做詳細(xì)講解,后面會(huì)詳細(xì)介紹。

  5)速度和持久性

  在數(shù)據(jù)庫系統(tǒng)領(lǐng)域內(nèi),寫速度和持久性存在一種相反的關(guān)系。寫速度可以理解為在給定時(shí)間內(nèi)數(shù)據(jù)庫可以處理的插入、更新和刪除操作的數(shù)量。持久性則是指保持這些寫操作結(jié)果不變的時(shí)間長短。因此,數(shù)據(jù)庫設(shè)計(jì)者需要在速度和持久性中做出權(quán)衡,以平衡兩者的關(guān)系。

  在MongoDB中,我們可以選擇寫入語義,決定是否開啟Journaling日志記錄,通過此方式來控制速度和持久性間的平衡。

  寫操作解讀:MongoDB默認(rèn)所有的寫操作都是fire-and-forget的,即:寫操作通過TCP套接字發(fā)送,不要求數(shù)據(jù)庫應(yīng)答。如果用戶需要獲得應(yīng)答,可以使用特殊的安全模式發(fā)起寫操作,所有的驅(qū)動(dòng)都提供這個(gè)安全模式。在MongoDB2.0中,服務(wù)器空間,Journaling日志是默認(rèn)開啟的。所有的寫操作都會(huì)提交到一個(gè)只能追加的日志里。這是運(yùn)行MongoDB最安全的方式。

  6)數(shù)據(jù)庫擴(kuò)展

  垂直擴(kuò)展:增加硬件,同時(shí)也增加了成本;

  水平擴(kuò)展:MongoDB的水平擴(kuò)展非常易于管理,它通過基于范圍的分區(qū)機(jī)制,即自動(dòng)分片(auto-sharding)來實(shí)現(xiàn)這一設(shè)計(jì)目標(biāo),自動(dòng)分片機(jī)制會(huì)自動(dòng)管理各個(gè)節(jié)點(diǎn)之間的數(shù)據(jù)分布。

  三、MongoDB的核心服務(wù)器和工具

  1)核心服務(wù)器

  執(zhí)行mongod(windows上是mongodb.exe)可以運(yùn)行核心服務(wù)器。mongod服務(wù)器進(jìn)程使用一個(gè)自定義的二進(jìn)制協(xié)議從網(wǎng)絡(luò)套接字上接受命令。mongod進(jìn)程的所有數(shù)據(jù)文件默認(rèn)都存儲(chǔ)在/data/db里。它沒有內(nèi)存等參數(shù)的配置,減少了開發(fā)者的任務(wù),數(shù)據(jù)文件是通過mmap()系統(tǒng)調(diào)用被映射成了系統(tǒng)的虛擬內(nèi)存。

  2)Javascript Shell

  基于Javascript的一個(gè)工具,用于管理數(shù)據(jù)庫和操作數(shù)據(jù)。

  3)命令行工具

  ·mongodump:用原生的BSON格式將數(shù)據(jù)庫的數(shù)據(jù)保存下來,優(yōu)勢(shì)是熱備時(shí)非常有用。備份后能方便地用mongorestore恢復(fù)。

  ·mongoexport:支持JSON、CSV、TSV數(shù)據(jù),通過mongoimport導(dǎo)入,它還能用于大數(shù)據(jù)集的初始導(dǎo)入。

  ·mongosniff:一個(gè)網(wǎng)絡(luò)嗅探工具,用來觀察發(fā)送到數(shù)據(jù)庫的操作?;揪褪前删W(wǎng)絡(luò)上傳輸?shù)腂SON轉(zhuǎn)換為易于人們閱讀的Shell語句。

  ·mongostat:與iostat類似。持續(xù)輪詢MongoDB和系統(tǒng)以便提供有幫助的統(tǒng)計(jì)信息,包括每秒操作數(shù)(插入、刪除、更新、查詢等)、分配的虛擬內(nèi)存數(shù)量以及服務(wù)器的連接數(shù)?!?/p>

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊11 分享