本篇內(nèi)容主要講解“MongoDB TTL怎么索引過期數(shù)據(jù)的killer”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“MONGODB TTL怎么索引過期數(shù)據(jù)的killer”吧!
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供資陽網(wǎng)站建設(shè)、資陽做網(wǎng)站、資陽網(wǎng)站設(shè)計(jì)、資陽網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、資陽企業(yè)網(wǎng)站模板建站服務(wù),10多年資陽做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
過期數(shù)據(jù)的清理問題,一直是數(shù)據(jù)庫界的一個(gè)問題,處理的方式很多,大部分都是通過存儲(chǔ)過程,或者定期使用第三方工具來進(jìn)行處理。MONGODB 處理過期數(shù)據(jù)的方面,可以使用類似redis expired key 的概念,創(chuàng)建TTL index 來通過時(shí)間的方式處理過期數(shù)據(jù)。
這樣處理的方式的好處
1 簡單方便
2 通過數(shù)據(jù)庫系統(tǒng)本身的方式來處理,高效安全
3 數(shù)據(jù)庫會(huì)根據(jù)自身的性能以及數(shù)據(jù)庫狀態(tài)來自動(dòng)判斷是否開始清理數(shù)據(jù),而不是和存儲(chǔ)過程,或其他的方式,到時(shí)間就去處理,不管數(shù)據(jù)庫當(dāng)前的情況野蠻操作。
TTL 索引本身是一種特殊的單字段索引,通過普通創(chuàng)建索引的方式輔助expiredAfterSecond 選項(xiàng)就可以創(chuàng)建一個(gè)字段,字段的值需要為日期型,或者帶有日期類型的數(shù)組。
那我們先的理解什么是日期型數(shù)據(jù),在MONGODB是怎么體現(xiàn)的
1 由于mongodb本身是分布式數(shù)據(jù)庫,在設(shè)計(jì)之初時(shí)間的概念是UTC的概念所以mongodb的時(shí)間類型的 isodate ,以世界的0時(shí)區(qū)作為統(tǒng)一的時(shí)間的表達(dá),并沒有時(shí)區(qū)的概念,所以看到的時(shí)間應(yīng)該在你自己的時(shí)區(qū)進(jìn)行 增加或減少對(duì)應(yīng)的時(shí)間。
2 MONGODB 中可以返回時(shí)間的函數(shù)(以目前最新的版本 4.2)有兩個(gè) Date(), new Date() , 前一個(gè)返回的是字符類型的值,后一個(gè)返回的是UTC的時(shí)間。具體如何調(diào)整new Date() 返回的時(shí)間值,可以參看文檔。
下面是自動(dòng)生成的測試數(shù)據(jù)
測試數(shù)據(jù)中只有creationDate是ISODATE類型,也只有這個(gè)字段可以作為判斷數(shù)據(jù)是否過期的唯一標(biāo)準(zhǔn)字段。添加索引需要在保存BSON日期類型的值或者對(duì)象數(shù)組的字段上創(chuàng)建TTL 索引,并且在expireAfterSeconds指定一個(gè)非負(fù)的非零值。當(dāng)字段中的秒數(shù)超過其索引指定的時(shí)間后,文檔會(huì)過期,然后開始清理。
從測試來看,刪除文檔的速度比較快。
下面有幾點(diǎn)是TTL 索引需要知道的
1 TTL 索引不保證在生成索引后,立即開始刪除過期數(shù)據(jù)
2 不支持聯(lián)合索引
3 刪除文檔的調(diào)度任務(wù)60秒運(yùn)行一次
4 負(fù)載過重的系統(tǒng),將跳過任務(wù)調(diào)度,以系統(tǒng)提供正常服務(wù)為優(yōu)先
5 復(fù)制集成員的非主成員,不會(huì)自動(dòng)刪除數(shù)據(jù),只接受主庫發(fā)來的delete指令
6 TTL 索引本身支持查詢使用,
7 在索引建立后,不能改變expireAfterSeconds 的值,需要?jiǎng)h除索引,在重新建立,所以添加數(shù)值的時(shí)候,一定算好。
8 建立TTL的字段,不能是其他已有索引的字段,否則無法添加expired功能
通過 db.serverStatus() 可以查看刪除文檔的數(shù)量
當(dāng)然也可以通過日志來監(jiān)控刪除日志的操作,
默認(rèn)監(jiān)控的方式是關(guān)閉的,需要使用下面的命令來打開
db.setLogLevel(1,"index")
或者不需要監(jiān)控,可以通過下面的命令來將監(jiān)控關(guān)掉
db.adminCommand({setParameter:1, ttlMonitorEnabled:false})
到此,相信大家對(duì)“MONGODB TTL怎么索引過期數(shù)據(jù)的killer”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
名稱欄目:MONGODBTTL怎么索引過期數(shù)據(jù)的killer
標(biāo)題路徑:http://chinadenli.net/article10/giehgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、面包屑導(dǎo)航、外貿(mào)網(wǎng)站建設(shè)、企業(yè)建站、網(wǎng)站維護(hù)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)