国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Mongodb數(shù)據(jù)生命周期管理的三種方式

IT那活兒 / 607人閱讀
Mongodb數(shù)據(jù)生命周期管理的三種方式
[
概述
]


在數(shù)據(jù)庫的日常運(yùn)維和性能優(yōu)化中,數(shù)據(jù)庫表數(shù)據(jù)的生命周期管理是一個(gè)常見且重要的工作場景。在oracle數(shù)據(jù)庫中,數(shù)據(jù)生命周期管理包括歷史分區(qū)的truncate、壓縮、分區(qū)遷移分級(jí)存儲(chǔ)管理以及delete等方案。而在mongodb中,沒有表分區(qū)的概念,在分片中,要考慮業(yè)務(wù)均勻分布在所有數(shù)據(jù)片中,但是由于時(shí)間字段單調(diào)遞增的特性,所以基本不會(huì)考慮將時(shí)間字段作為獨(dú)立片鍵。同時(shí),Mongodb的WiredTiger存儲(chǔ)引擎默認(rèn)采用snappy壓縮算法,在我們的生產(chǎn)系統(tǒng)上,壓縮比例大概在3:1,如果采用zlib算法,壓縮比例可達(dá)10:1以上(會(huì)增大CPU開銷),所以在一般情況下,mongodb的數(shù)據(jù)生命周期管理也不會(huì)使用手動(dòng)壓縮方式,如果要建設(shè)歷史歸檔庫,可考慮使用zlib算法進(jìn)行壓縮。Mongodb的數(shù)據(jù)生命周期管理可利用自身的功能特性實(shí)現(xiàn),下面將對(duì)幾種數(shù)據(jù)清理方案進(jìn)行描述。


[
三種Mongodb數(shù)據(jù)清理方案
]


一、TTL索引

TTL(timetolive)索引是MongoDB中一種特殊的索引,是一種在除_id外的時(shí)間字段上創(chuàng)建的單列索引(復(fù)合索引無法擁有TTL屬性)。在創(chuàng)建TTL索引后,后臺(tái)線程將根據(jù)字段值再指定的秒數(shù)后自動(dòng)刪除數(shù)據(jù)。如:

db.Record.createIndex({"timestamp":1},{ expireAfterSeconds:2678400 , background:true});

表示根據(jù)timestamp字段時(shí)間的31天后過期刪除數(shù)據(jù)。


如果字段值是一個(gè)數(shù)組,則以數(shù)組的最小時(shí)間為準(zhǔn)。如果要修改TTL索引的數(shù)據(jù)過期時(shí)間,無需重建索引,可通過如下命令修改:

db.runCommand({ collMod: "test", --集合名稱

index:{ name: "lastModifiedDate_1", --索引名稱

expireAfterSeconds:60   --過期時(shí)間

}})


注意在復(fù)制集架構(gòu)中,如果集合數(shù)據(jù)量較大,并且修改減少數(shù)據(jù)保留時(shí)間,命令執(zhí)行完成后,后臺(tái)線程會(huì)緩慢刪除數(shù)據(jù),此過程中會(huì)產(chǎn)生大量的oplog,需關(guān)注系統(tǒng)配置的oplogsize,確保有足夠的空間存放Oplog,以便于在存在延遲從節(jié)點(diǎn)或者從節(jié)點(diǎn)IO性能較差的情況下,不至于出現(xiàn)主節(jié)點(diǎn)的oplog被覆蓋丟失從而引起同步異常的情況。并且在大量數(shù)據(jù)被刪除后,會(huì)出現(xiàn)集合碎片,類似oracle的高水位,空間再集合中可重用,但是不會(huì)釋放給操作系統(tǒng),需進(jìn)行compact操作,此操作可導(dǎo)致庫級(jí)鎖,可以在進(jìn)行主從切換的情況下,滾動(dòng)在從節(jié)點(diǎn)操作。


二、capped集合

capped集合是mongodb中的一種特殊的集合,其大小是固定的,數(shù)據(jù)寫入是有序的,當(dāng)存儲(chǔ)的數(shù)據(jù)超過大小限制時(shí),將采取先入先出的原則,自動(dòng)清理舊數(shù)據(jù)。在限制集合大小的同時(shí),capped集合還可以限制文檔數(shù)量,當(dāng)存儲(chǔ)數(shù)據(jù)未達(dá)到文檔數(shù)量限制但是達(dá)到大小限制,也會(huì)自動(dòng)清理數(shù)據(jù)。oplog.rs就是一個(gè)固定集合。由于capped集合的大小是固定的,數(shù)據(jù)是有序的,所以其插入和查詢的性能都優(yōu)于普通集合。


示例:

db.createCollection("log", { capped: true, size: 10737418240 } )  --創(chuàng)建10GB的固定集合

db.createCollection("log",{ capped : true, size : 10737418240, max : 50000000 } ) --創(chuàng)建最大10GB,且不超過5千萬行的固定集合。注意:固定集合無法手工刪除數(shù)據(jù),且無法進(jìn)行分片。


三、通過_id刪除陳舊歷史數(shù)據(jù)

在一個(gè)集合中,若存在時(shí)間字段時(shí),可通過時(shí)間字段定位并刪除歷史數(shù)據(jù),但是如果沒有時(shí)間字段,怎么定位歷史數(shù)據(jù)呢?在mongodb中,每個(gè)集合會(huì)默認(rèn)創(chuàng)建一個(gè)_id字段,并且該字段上默認(rèn)創(chuàng)建了主鍵索引,該字段類型為ObjectId。ObjectId是一個(gè)12字節(jié)的BSON類型字符串。按照字節(jié)順序,依次代表:

4字節(jié):UNIX時(shí)間戳

3字節(jié):表示運(yùn)行MongoDB的機(jī)器

2字節(jié):表示生成此_id的進(jìn)程

3字節(jié):由一個(gè)隨機(jī)數(shù)開始的計(jì)數(shù)器生成的值


通過js代碼將時(shí)間值轉(zhuǎn)換為objectid,按時(shí)間范圍清理歷史數(shù)據(jù)。利用objectid的有序性和唯一索引過濾,快速清理目標(biāo)數(shù)據(jù),避免清理?xiàng)l件字段無索引時(shí)產(chǎn)生低效的全表掃描。


詳細(xì)方法如下:

1.獲取時(shí)間條件時(shí)間范圍轉(zhuǎn)換為objectid

ObjectId(Math.floor((new Date(2019/8/9))/1000).toString(16) + "0000000000000000")

ObjectId("5b6b13800000000000000000")


2.將轉(zhuǎn)換后的時(shí)間與objectid比較,按照objectid刪除

var objIdMin = ObjectId(Math.floor((new Date(2019/8/9))/1000).toString(16) + "0000000000000000")

var objIdMax = ObjectId(Math.floor((new Date(2018/9/11))/1000).toString(16) + "0000000000000000")

db.test.remove({_id:{$gt: objIdMin, $lt: objIdMax}})

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/130178.html

相關(guān)文章

  • React創(chuàng)建組件三種方式及其區(qū)別

    摘要:是以的形式來創(chuàng)建的組件的,是目前極為推薦的創(chuàng)建有狀態(tài)組件的方式,最終會(huì)取代形式相對(duì)于可以更好實(shí)現(xiàn)代碼復(fù)用。當(dāng)然,有三種手動(dòng)綁定方法可以在構(gòu)造函數(shù)中完成綁定,也可以在調(diào)用時(shí)使用來完成綁定,還可以使用來綁定。 React推出后,出于不同的原因先后出現(xiàn)三種定義react組件的方式,殊途同歸;具體的三種方式: 函數(shù)式定義的無狀態(tài)組件 es5原生方式React.createClass定義的組件...

    Towers 評(píng)論0 收藏0
  • 關(guān)于Vue2一些值得推薦的文章 -- 五、六月份

    摘要:五六月份推薦集合查看最新的請(qǐng)點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥雀呼晴,侵曉窺檐語。葉上初陽乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門,久作長安旅。五月漁郎相憶否。小楫輕舟,夢(mèng)入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請(qǐng)::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...

    sutaking 評(píng)論0 收藏0
  • 關(guān)于Vue2一些值得推薦的文章 -- 五、六月份

    摘要:五六月份推薦集合查看最新的請(qǐng)點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥雀呼晴,侵曉窺檐語。葉上初陽乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門,久作長安旅。五月漁郎相憶否。小楫輕舟,夢(mèng)入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請(qǐng)::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...

    khs1994 評(píng)論0 收藏0
  • Apache 工作三種模式:Prefork、Worker、Event

    摘要:的三種工作模式服務(wù)器目前一共有三種穩(wěn)定的,多進(jìn)程處理模塊模式。模式下所能同時(shí)處理的請(qǐng)求總數(shù)是由子進(jìn)程總數(shù)乘以值決定的,應(yīng)該大于等于。默認(rèn)最大的子進(jìn)程總數(shù)是,加大時(shí)也需要顯式聲明最大值是。 Apache 的三種工作模式(Prefork、Worker、Event) Web服務(wù)器Apache目前一共有三種穩(wěn)定的MPM(Multi-Processing Module,多進(jìn)程處理模塊)模式。 它...

    learning 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<