欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mongodb如何定位

吉茹定2年前33瀏覽0評論
mongodb如何定位?

MongoDB 是一個(gè)基于分布式文件存儲的數(shù)據(jù)庫,由 C++語言編寫。旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲解決方案。

MongoDB 是一個(gè)介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似 json 的 bson 格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。Mongo 最大的特點(diǎn)是它支持的查詢語言非常強(qiáng)大,其語法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。MongoDB 適用場景MongoDB 的主要目標(biāo)是在鍵/值存儲方式(提供了高性能和高度伸縮性)和傳統(tǒng)的 RDBMS 系統(tǒng)(具有豐富的功能)之間架起一座橋梁,它集兩者的優(yōu)勢于一身。Mongo 主要適用于以下場景:網(wǎng)站數(shù)據(jù):Mongo 非常適合實(shí)時(shí)的插入,更新與查詢,并具備網(wǎng)站實(shí)時(shí)數(shù)據(jù)存儲所需的復(fù)制及高度伸縮性。緩存:由于性能很高,Mongo 也適合作為信息基礎(chǔ)設(shè)施的緩存層。在系統(tǒng)重啟之后, 由 Mongo 搭建的持久化緩存層可以避免下層的數(shù)據(jù)源過載。大尺寸、低價(jià)值的數(shù)據(jù):使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫存儲一些數(shù)據(jù)時(shí)可能會(huì)比較昂貴,在此之前,很多時(shí)候程序員往往會(huì)選擇傳統(tǒng)的文件進(jìn)行存儲。高伸縮性的場景:Mongo 非常適合由數(shù)十或數(shù)百臺服務(wù)器組成的數(shù)據(jù)庫,Mongo 的路線圖中已經(jīng)包含對 MapReduce 引擎的內(nèi)置支持。用于對象及 JSON 數(shù)據(jù)的存儲:Mongo 的 BSON 數(shù)據(jù)格式非常適合文檔化格式的存儲及查詢。MongoDB 的使用也會(huì)有一些限制,它不適合于以下幾個(gè)地方:高度事務(wù)性的系統(tǒng):例如,銀行或會(huì)計(jì)系統(tǒng)。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫目前還是更適用于需要大量原子性復(fù)雜事務(wù)的應(yīng)用程序。傳統(tǒng)的商業(yè)智能應(yīng)用:針對特定問題的 BI 數(shù)據(jù)庫會(huì)產(chǎn)生高度優(yōu)化的查詢方式。對于此類應(yīng)用,數(shù)據(jù)倉庫可能是更合適的選擇。需要 SQL 的問題。MongoDB 原理MongoDB 復(fù)(副)本集與分片:

每個(gè)復(fù)(副)本集中存儲的數(shù)據(jù)是相同的,相當(dāng)于主備方式的數(shù)據(jù)冗余,目的是為了容災(zāi)。分片是為了數(shù)據(jù)的拓展,按照片鍵進(jìn)行結(jié)點(diǎn)劃分,數(shù)據(jù)根據(jù)片鍵存儲到對應(yīng)的服務(wù)器上。

2.MongoDB 部署方案

MongoDB 的集群部署方案中有三類角色:實(shí)際數(shù)據(jù)存儲結(jié)點(diǎn)(Shared Sever)、配置文件存儲結(jié)點(diǎn)(Config Sever)和路由接入結(jié)點(diǎn)(Route Server)。客戶端直接與路由結(jié)點(diǎn)相連,從配置結(jié)點(diǎn)上查詢數(shù)據(jù),根據(jù)查詢結(jié)果到實(shí)際的存儲結(jié)點(diǎn)上查詢和存儲數(shù)據(jù)。MongoDB 讀寫數(shù)據(jù)的流程如圖:寫入數(shù)據(jù)時(shí),先由客戶端訪問路由結(jié)點(diǎn),向配置結(jié)點(diǎn)獲取相關(guān)信息后,將數(shù)據(jù)寫入存儲結(jié)點(diǎn)。讀取數(shù)據(jù)時(shí),由客戶端訪問路由結(jié)點(diǎn),向配置結(jié)點(diǎn)獲取相關(guān)信息后,對存儲結(jié)點(diǎn)進(jìn)行訪問, 獲取到相應(yīng)數(shù)據(jù),再經(jīng)由路由結(jié)點(diǎn)將數(shù)據(jù)返回至客戶端。對于復(fù)本集,又有主和從兩種角色,寫數(shù)據(jù)和讀數(shù)據(jù)也是不同,寫數(shù)據(jù)的過程是只寫到主結(jié)點(diǎn)中,由主結(jié)點(diǎn)以異步的方式同步到從結(jié)點(diǎn)中。而讀數(shù)據(jù)則只要從任一結(jié)點(diǎn)中讀取,具體到哪個(gè)結(jié)點(diǎn)讀取是可以指定的。對于 MongoDB 的分片,假設(shè)我們以某一索引鍵(ID)為片鍵,ID 的區(qū)間[0,50),劃分成 5 個(gè)chunk,分別存儲到 3 個(gè)片服務(wù)器中,可以進(jìn)行如下分片:當(dāng)數(shù)據(jù)量很大,需要增加片服務(wù)器時(shí),只需移動(dòng) chunk 來均分?jǐn)?shù)據(jù)即可。配置結(jié)點(diǎn):存儲配置文件的服務(wù)器其實(shí)存儲的是片鍵與 chunk 以及 chunk 與 server 的映射關(guān)系。路由結(jié)點(diǎn):路由角色的結(jié)點(diǎn)在分片的情況下起到負(fù)載均衡的作用。MongoDB 和 MySQL 的區(qū)別MySQL 是關(guān)系型數(shù)據(jù)庫優(yōu)點(diǎn):在不同的引擎上有不同的存儲方式。查詢語句是傳統(tǒng)的 SQL 語句,擁有成熟的體系,成熟度很高。缺點(diǎn):在處理海量數(shù)據(jù)時(shí),效率會(huì)顯著變慢。2、MongoDB 介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間,面向集合的、模式自由的文檔型數(shù)據(jù)庫。多個(gè)鍵值對有序地放置在一起即是文檔,文檔是 MongoDB 中數(shù)據(jù)的基本單元,類似關(guān)系數(shù)據(jù)庫的行。MongoDB 中的查詢語法是獨(dú)特的,有點(diǎn)類似 Javascript 面向?qū)ο蟮牟樵冋Z言。存儲方式:虛擬內(nèi)存+持久化。查詢語句:獨(dú)特的 MongoDB 的查詢方式。架構(gòu)特點(diǎn):可以通過副本集,以及分片來實(shí)現(xiàn)高可用。數(shù)據(jù)處理:數(shù)據(jù)存儲在硬盤上,需要經(jīng)常讀取的數(shù)據(jù)(熱數(shù)據(jù))會(huì)被加載到物理內(nèi)存中,從而達(dá)到高速讀寫的效果。成熟度與廣泛度:新興數(shù)據(jù)庫,成熟度較低,Nosql 數(shù)據(jù)庫中最為接近關(guān)系型數(shù)據(jù)庫,比較完善的數(shù)據(jù)庫之一,適用人群不斷增長。優(yōu)點(diǎn):讀寫速度快。在適量級的內(nèi)存的 MongoDB 的速度是十分快速的,通過將熱數(shù)據(jù)存儲在物理內(nèi)存中,使得熱數(shù)據(jù)的讀寫變得十分快速。高擴(kuò)展性。存儲的數(shù)據(jù)格式是類似 json 的 bson 格式。缺點(diǎn):

不支持事務(wù)。

3、MongoDB 與 MySQL 命令對比

傳統(tǒng)的關(guān)系數(shù)據(jù)庫一般由數(shù)據(jù)庫(database)、表(table)、記錄(record)三個(gè)層次概念組成,MongoDB 是由數(shù)據(jù)庫(database)、集合(collection)、文檔對象(document)三個(gè)層次組成。MongoDB 對于關(guān)系型數(shù)據(jù)庫里的表,但是集合中不包括列、行和關(guān)系概念,這體現(xiàn)了模式自由的特點(diǎn)。MongoDB 備份方式文件快照備份文件快照備份基于操作系統(tǒng),通過 Linux 的 LVM 特性對 MongoDB 數(shù)據(jù)文件所在的設(shè)備進(jìn)行備份。正是由于這種備份方式使用操作系統(tǒng)級別的工具,故而兼?zhèn)淞烁呖煽啃院透咝省2贿^這樣也導(dǎo)致了宿主環(huán)境必須要給予支持。文件快照備份的特點(diǎn):優(yōu)點(diǎn):支持時(shí)間點(diǎn)高可靠性、高效率增量備份缺點(diǎn):需要操作系統(tǒng)支持需要開啟日志功能,否則無法保證數(shù)據(jù)的有效性和一致性其他:可以獲取分片集群的一致快照,需要關(guān)閉集群均衡器并在大致相同的時(shí)刻從集群的每個(gè)分片和配置服務(wù)器上抓取快照。沒有開啟日志功能時(shí),備份前需要完全完成寫操作,備份過程中將停止任何寫操作(MMAPv1)。開啟日志功能后,在快照時(shí) MMAPv1 無需停止寫操作達(dá)到一致狀態(tài),Wired Tiger 通過最后的檢查點(diǎn)達(dá)到一致狀態(tài)(檢查點(diǎn)為每 2G 數(shù)據(jù)或每分鐘一次)。文件快照創(chuàng)建的是整個(gè)磁盤的鏡像,所以把數(shù)據(jù)文件、配置、日志放在一個(gè)邏輯磁盤上會(huì)節(jié)約空間。2、mongodump 備份/mongorestore 恢復(fù)執(zhí)行 mongodump 命令讀取 MongoDB 數(shù)據(jù)庫,可以生成一個(gè)備份文件,該備份文件格式為BJSON,執(zhí)行 mongorestore 命令可以通過讀取該備份文件將 MongoDB 數(shù)據(jù)庫恢復(fù)。使用這種方式進(jìn)行備份時(shí),對于小型的 MongoDB 集群而言,占用空間更少,也更高效;但是對于大型的 MongoDB 集群,效率則不是很高。在備份的過程中,可以繼續(xù)修改數(shù)據(jù),會(huì)記錄與 oplog 中;備份的數(shù)據(jù)也不包括本地?cái)?shù)據(jù)庫、索引,故而恢復(fù)數(shù)據(jù)庫時(shí)必須重建索引;此外備份還會(huì)產(chǎn)生網(wǎng)絡(luò)流量,影響當(dāng)前mongod 性能。一旦備份數(shù)據(jù)超過系統(tǒng)內(nèi)存,查詢操作就會(huì)產(chǎn)生錯(cuò)誤。執(zhí)行備份時(shí)一定要有對應(yīng)的訪問控制權(quán)限。mongodump 不同版本之間不能互相兼容,無法使用較新的版本備份老數(shù)據(jù)。