a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > MongoDB > 正文

MongoDb為何要優化?優化方法是什么?

2024-09-07 00:22:37
字體:
來源:轉載
供稿:網友
        MongoDB是一個基于分布式文件存儲的數據庫,也是現在比較受歡迎的數據庫之一,這篇文章主要給大家介紹的關于MongoDB優化的內容,感興趣的朋友就跟隨小編一起來了解吧。
 
        1、為什么選擇MongoDB?
 
        1、性能
 
        在大數據時代中,大數據量的處理已經成了考量一個數據庫最重要的原因之一。而MongoDB的一個主要目標就是盡可能的讓數據庫保持卓越的性能,這很大程度地決定了MongoDB的設計。在一個以傳統機械硬盤為主導的年代,硬盤很可能會成為性能的短板,而MongoDB選擇了最大程度而利用內存資源用作緩存來換取卓越的性能,并且會自動選擇速度最快的索引來進行查詢。MongoDB盡可能精簡數據庫,將盡可能多的操作交給客戶端,這種方式也是MongoDB能夠保持卓越性能的原因之一。
 
        2、擴展
 
        現在互聯網的數據量已經從過去的MB、GB變為了現在的TB級別,單一的數據庫顯然已經無法承受,擴展性成為重要的話題,然而現在的開發人員常常在選擇擴展方式的時候犯了難,到底是選擇橫向擴展還是縱向擴展呢?
        橫向擴展(scale out)是以增加分區的方式將數據庫拆分成不同的區塊來分布到不同的機器中來,這樣的優勢是擴展成本低但管理困難。
 
        3、使用
 
        MongoDB采用的是NoSQL的設計方式,可以更加靈活的操作數據。在進行傳統的RDBMS中你一定遇到過幾十行甚至上百行的復雜SQL語句,傳統的RDBMS的SQL語句中包含著大量關聯,子查詢等語句,在增加復雜性的同時還讓性能調優變得更加困難。MongoDB的面向文檔(document-oriented)設計中采用更為靈活的文檔來作為數據模型用來取代RDBMS中的行,面向文檔的設計讓開發人員獲取數據的方式更加靈活,甚至于開發人員僅用一條語句即可查詢復雜的嵌套關系,讓開發人員不必為了獲取數據而絞盡腦汁。
 
        2、NoSQL對傳統數據庫設計思維的影響
 
        1、預設計模式與動態模式
 
        傳統數據庫設計思維中,項目的設計階段需要對數據庫表中的字段名稱、字段類型、進行規定,如果嘗試插入不符合設計的數據,數據庫不會接受這條數據以保證數據的完整性。
 
        --數據庫字段:NAME, SONG
 
INSERT INTO T_INFO VALUES('John','Come Together'); --成功
INSERT INTO T_INFO VALUES('小明', 20, 'xiaoming@111.com'); --失敗
        NoSQL采用的是對集合(類似"表")中的文檔(類似于"行")進行動態追加,在創建集合之初不會對數據類型進行限定,任何文檔都可以追加到任何集合中去,例如我們可以將這樣兩條文檔添加到一個集合中去:
 
{"name" : "John", "song" : "Come Together"}
{"name" : "小明", "age":"20", "email" : xiaoming@111.com}
 
        MongoDB中文檔的格式類似于我們常見的JSON,由此可見,我們第一個擁有"name"、"song"兩個字段,而第二個擁有"name"、"age"、"email"三個字段,這在預設計模式中的數據庫是不可能插入成功的,但在MongoDB的動態模式是可以的,這樣做的優勢是我們不必為一些數量很少,但種類很多的字段單獨設計一張表,可以將他們集中在單獨一張表進行存儲,但這樣做的弊病也是顯而易見的,我們在獲取數據時需要對同一張表的不同文檔進行區分,增加了開發上的代碼量。所以在設計之初需要權衡動態模式的優劣來選擇表中的數據類型。
 
        2、范式化與反范式化
 
        范式化(normalization)是關系模型的發明者埃德加・科德于1970年提出這一概念,范式化會將數據分散到不同的表中,利用關系模型進行關聯,由此帶來的優點是,在后期進行修改時,不會影響到與其關聯的數據,僅對自身修改即可完成。
 
        3、性能與用戶量
 
        “如何能讓軟件擁有更高的性能?”,我想這是一個大部分開發者都思考過的問題。性能往往決定了一個軟件的質量,如果你開發的是一個互聯網產品,那么你的產品性能將更加受到考驗,因為你面對的是廣大的互聯網用戶,他們可不是那么有耐心的。嚴重點說,頁面的加載速度每增加一秒也許都會使你失去一部分用戶,也就是說,加載速度和用戶量是成反比的。那么用戶能夠接受的加載速度到底是多少呢? 
 
 
        數據庫性能對軟件整體性能的影響是不言而喻的,那么,當我們使用MongoDB時改如何提高數據庫性能呢?
 
        4、范式化與反范式化
 
        在項目設計階段,明確集合的用途是對性能調優非常重要的一步。
 
        從性能優化的角度來看,集合的設計我們需要考慮的是集合中數據的常用操作,例如我們需要設計一個日志(log)集合,日志的查看頻率不高,但寫入頻率卻很高,那么我們就可以得到這個集合中常用的操作是更新(增刪改)。如果我們要保存的是城市列表呢?顯而易見,這個集合是一個查看頻率很高,但寫入頻率很低的集合,那么常用的操作就是查詢。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩福利在线观看 | 欧美综合一区二区 | 国产欧精精久久久久久久 | 日韩1区3区4区第一页 | 亚洲自拍一区在线观看在线观看 | 欧美一级精品 | 日本三级做a全过程在线观看 | 欧美视频免费看 | www久久综合 | 国产亚洲成av人片在线观看桃 | av在线一区二区三区 | 免费黄色在线观看 | 亚洲电影在线观看 | 国产精品久久久久久久久久久久久久 | 日韩草比 | 欧美在线 | 性国产xxxx乳高跟 | 精品久久久中文字幕 | 成人在线视频播放 | 欧美日韩视频 | 久久久蜜桃视频 | 日韩3级 | 日韩久久午夜一级啪啪 | 国产精品三级久久久久久电影 | 午夜影院在线看 | 欧美一区二区三区成人 | 精品免费视频 | 久久精品国产一区 | 99久久99久久精品免费看蜜桃 | 91精品久久久久久久久久入口 | 国产亚洲精品久久 | 日韩国产免费观看 | 亚洲精品成人av | 久久精品视频网址 | 欧洲成人午夜免费大片 | 国产日韩一区二区 | 日韩欧美二区 | 国产成人小视频 | 国产精品久久久久久亚洲调教 | 国产偷v国产偷v亚洲 | 男人av网|