柚子快報邀請碼778899分享:數(shù)據(jù)庫 mongodb知識點
柚子快報邀請碼778899分享:數(shù)據(jù)庫 mongodb知識點
Mongodb知識點
MongoDB是什么?
由C++語言編寫的,是一個基于分布式文件存儲的開源數(shù)據(jù)庫系統(tǒng)**,在高負(fù)載的情況下,添加更多的節(jié)點,可以保證服務(wù)器性能,**旨在給web應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案。
MongoDB有哪些特點?
沒有數(shù)據(jù)表!只有集合
①面向文檔存儲的數(shù)據(jù)庫
②設(shè)置任何屬性來實現(xiàn)更快的排序
③通過本地或者網(wǎng)絡(luò)創(chuàng)建數(shù)據(jù)鏡像,更強的擴展性
④如果負(fù)載增加(需要更多的存儲空間和更強的處理能力),可以分布在計算機網(wǎng)絡(luò)中的其他節(jié)點上就是所謂的分片
⑤支持豐富的查詢表達式,查詢指令使用JSON形式標(biāo)記,輕易查詢文檔中內(nèi)嵌對象及數(shù)組
⑥允許在服務(wù)端執(zhí)行腳本,可以用javascript編寫某個函數(shù),直接在服務(wù)端執(zhí)行,也可以把函數(shù)定義存儲在服務(wù)端,下次直接調(diào)用即可
idnameage12323
集合中倆文檔結(jié)構(gòu)不一樣ok的(無順序)
查詢效率低 自帶索引
node.js
什么是MongoDB中的“命名空間”?
在集合中存儲BSON(B指的是二進制)(二進制交換和結(jié)構(gòu)對象表示法)對象。集合名稱和數(shù)據(jù)庫名稱的串聯(lián)成為名稱空間。
admin、test、user
最頂層mongodb軟件 內(nèi)部可劃分成多個數(shù)據(jù)庫
TS typeScript 使用C#開發(fā)的,用來限制類型 具有同類特征的一塊數(shù)據(jù)
js弱類型語言 沒有明確的定義方式
MongoDB中的分片是什么?
在多臺計算機上存儲數(shù)據(jù)記錄的過程稱為分片??梢詽M足數(shù)據(jù)增長需求,這是數(shù)據(jù)庫或搜索引擎中數(shù)據(jù)的水平分區(qū)。每個分區(qū)成為分片或數(shù)據(jù)庫分片。
(比如開發(fā)一個項目,在阿里云租一臺香港服務(wù)器,操作系統(tǒng)選擇win8/8.1(2012),可以訪問任意國家網(wǎng)站。)
解釋什么是副本集?
27017(默認(rèn)端口號)
一組托管相同數(shù)據(jù)集的mongo實例。在副本集中,一個節(jié)點是主節(jié)點,另一個節(jié)點是副節(jié)點。從主節(jié)點到副節(jié)點,所有數(shù)據(jù)都會復(fù)制。
主節(jié)點的功能是將多個從節(jié)點的數(shù)據(jù)進行同步,寫入數(shù)據(jù),所有服務(wù)由副節(jié)點提供
復(fù)制在MongoDB中如何工作?
在多臺服務(wù)器之間,同步數(shù)據(jù)的過程稱為復(fù)制,通過不同數(shù)據(jù)庫服務(wù)器上的多個數(shù)據(jù)庫副本提供冗余并提高數(shù)據(jù)庫可用性,復(fù)制有助于防止數(shù)據(jù)庫丟失單個服務(wù)器。
和redis的持久化存儲類似 AOF 記錄過程 而不是結(jié)果
解釋一下MongoDB中的索引是什么?★
mongodb內(nèi)部自帶索引
如果取消掉索引,增加查詢時間
索引是mongodb中的特殊結(jié)構(gòu),它以易于遍歷的形式存儲一小部分?jǐn)?shù)據(jù)集。索引按索引中指定的字段的值排序,存儲特定字段或一組字段的值。
及時沒有規(guī)定按什么值索引,會自動以id(自動添加)
存儲結(jié)構(gòu)是什么?
文檔(最基本的單元 由BSON鍵值對key-value組成 類似于關(guān)系型數(shù)據(jù)庫中的行ROW)、集合(無序 類似于關(guān)系型數(shù)據(jù)庫中的表table 但由id維護的索引順序)、數(shù)據(jù)庫(一個數(shù)據(jù)庫可包含多個集合 可在mongodb中創(chuàng)建多個數(shù)據(jù)庫 類似于關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)庫database)
說說事務(wù)的ACID特性?!?/p>
原子性:十五是最小的執(zhí)行單位
一致性:
隔離性:
持久性:
MongoDB支持哪些類型的索引?★
單字段(單鍵)索引
復(fù)合(組合/聯(lián)合)索引(優(yōu)先級高于多鍵)
多鍵索引
哈希索引
唯一索引
TTL索引
MongoDB支持主鍵外鍵關(guān)系嗎?
不支持。用MongoDB本身的API需要硬編碼才能實現(xiàn)外鍵關(guān)聯(lián),不夠直觀且難度較大。
MongoDB和Redis數(shù)據(jù)庫有什么區(qū)別?
Redis比MongoDB快
Redis具有鍵值存儲,而MongoDB具有文檔類型(JSON)存儲
Redis很難編碼(存儲編碼),但MongoDB很容易
什么是聚合?
在數(shù)據(jù)庫領(lǐng)域,聚合(Aggregation)是指對數(shù)據(jù)集合進行計算、組合和轉(zhuǎn)換以生成結(jié)果的過程。聚合通常涉及將多個數(shù)據(jù)行合并為單個結(jié)果,這個結(jié)果可以是計數(shù)、求和、平均值、最大值、最小值等統(tǒng)計量,也可以是對數(shù)據(jù)進行分組、排序、過濾等操作后的結(jié)果。
聚合操作通常用于對大量數(shù)據(jù)進行匯總和分析,以便從中提取有用的信息。在數(shù)據(jù)庫中,常見的聚合操作包括:
計數(shù)(Count):統(tǒng)計數(shù)據(jù)集合中符合特定條件的記錄數(shù)量。求和(Sum):對數(shù)據(jù)集合中的某個字段進行求和操作。平均值(Average):計算數(shù)據(jù)集合中某個字段的平均值。最大值(Max)和最小值(Min):找出數(shù)據(jù)集合中某個字段的最大值和最小值。分組(Group By):根據(jù)某個字段將數(shù)據(jù)集合分成多個組,并對每個組內(nèi)的數(shù)據(jù)進行聚合操作。排序(Sort):根據(jù)指定字段對數(shù)據(jù)集合進行排序操作。
聚合操作通常在查詢語句中以聚合函數(shù)的形式出現(xiàn),如COUNT、SUM、AVG等。這些聚合函數(shù)可以用于對數(shù)據(jù)集合進行統(tǒng)計分析,從而得出有關(guān)數(shù)據(jù)的各種指標(biāo)和結(jié)論。聚合功能是數(shù)據(jù)庫系統(tǒng)中非常重要的一部分,它可以幫助用戶快速、有效地從大量數(shù)據(jù)中提取有用的信息,并支持決策和業(yè)務(wù)需求的實現(xiàn)。
如何避免單點故障?
副本集由一組MongoDB實例組成,包括一個主節(jié)點多個此節(jié)點,MongoDB客戶端的所有數(shù)據(jù)都寫入主節(jié)點,副節(jié)點從主節(jié)點同步寫入數(shù)據(jù),以保持所有復(fù)制集內(nèi)存儲相同的數(shù)據(jù),提高數(shù)據(jù)可用性。
在MongoDB中如何排序?
sort() 1升序 -1降序
db.connectionName.find{key:value})sort({columnName:1})
如何優(yōu)化MongoDB查詢性能?
創(chuàng)建索引
避免全表掃描
使用合適的數(shù)據(jù)類型
分頁查詢
合理使用投影
使用合適的數(shù)據(jù)類型 explain()監(jiān)控和調(diào)優(yōu)
char與varchar區(qū)別
char定長
varchar不定長
什么是覆蓋索引?為什么它對性能有影響?
覆蓋索引是指索引本身包含了查詢所需的所有字段,而不需要通過回表(即查詢主鍵)來獲取額外的數(shù)據(jù)。當(dāng)一個查詢可以僅通過索引就能滿足所有需要的字段時,就稱之為覆蓋索引。
①減少IO操作
②減少網(wǎng)絡(luò)傳輸
③減少數(shù)據(jù)訪問次數(shù)
④減少 CPU 消耗
數(shù)據(jù)在什么時候才會擴展到多個分片里?★
MongoDB是基于區(qū)域的。所以一個集合中所有的對象都被存放到一個塊中。只有當(dāng)存在多余一個塊時,才會有多個分片獲取數(shù)據(jù)的選項?,F(xiàn)在,每個默認(rèn)塊的大小是64Mb,所以你需要至少64Mb空間才可以實時一個遷移。
柚子快報邀請碼778899分享:數(shù)據(jù)庫 mongodb知識點
參考鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。