精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊 MongoDB 時間序列集合

數據庫 MariaDB
為了保證timeseries collection的查詢可以受益于索引掃描而不是全表掃描,timeseries collection允許索引可以被創建在時間上,元數據上以及元數據的子屬性上。

名詞解釋

bucket:帶有相同的元數據且在一段有限制的間 隔區間內的測量值組。

bucket collection :用于存儲時序型集合的底層的分組桶的系統集合。復制、分片和索引都是在桶級別上完成的。

measurement:帶有特定時間序列的K-V集合。

meta-data:時序序列里很少隨時間變化的K-V對,同時可以用于識別整個時序序列。

time-series:一段間隔內的一系列測量值。

time-series collection:一種表示可寫的非物化的視圖的集合類型,它允許存儲和查詢多個時間序列,每個序列可以有不同的元數據。

MongoDB 在5.0中支持了新的timeseries collection類型的選項,該類型用于存儲時序型數據。timeseries collection提供了一組用于插入和查詢測量值的簡單接口,同時底層實際的數據是存儲在以bucket形式的集合中。

在創建timeseries collection時,timeField字段是最小必備的配置項。metaField是另一個可選的、可被指定的元數據字段,它是用于在bucket中對測量值分組的依據。MongoDB通過提供expireAfterSeconds字段選項,也支持了對測量值的過期機制。

在mydb數據庫中有個以mytscoll 命名的timeseries collection,該集合在MongoDB內部的catelog(用于存儲集合或視圖的信息)里是由一個視圖和一個系統集合組成的。

  • mydb.mytscoll 是個視圖,它在MongoDB底層是用bucket collection作為包含特定屬性的原始集合實現的:

該視圖就是通過aggregation里的$_internalUnpackBucket來實現展開bucket里數據的。

該視圖是可寫的(僅支持插入)。同時每個被插入的文檔必須包含時間字段。

在查詢視圖時,它會隱式地展開底層在bucket collection中存儲的數據,然后返回原始的非bucket形式的文檔數據。

  • 該系統集合的命名空間是mydb.system.buckets.mytscoll,它是用來存儲實際數據的。

每一個在bucket collection里的文檔,都表示了一組區間間隔的時序型數據。

如果在創建timeseries collection時,定義了metaField元數據字段,那么所有在bucket里的測量值都會有這個通用的元數據字段。

除了時間范圍,bucket還限制了每個文檔數據的總條數以及測量值的大小。

Bucket Collection Schema

{
_id: <Object ID with time component equal to control.min.<time field>>,
control: {
// <Some statistics on the measurements such min/max values of data fields>
version: 1, // Version of bucket schema. Currently fixed at 1 since this is the
// first iteration of time-series collections.
min: {
<time field>: <time of first measurement in this bucket, rounded down based on granularity>,
<field0>: <minimum value of 'field0' across all measurements>,
<field1>: <maximum value of 'field1' across all measurements>,
...
},
max: {
<time field>: <time of last measurement in this bucket>,
<field0>: <maximum value of 'field0' across all measurements>,
<field1>: <maximum value of 'field1' across all measurements>,
...
},
closed: <bool> // Optional, signals the database that this document will not receive any
// additional measurements.
},
meta: <meta-data field (if specified at creation) value common to all measurements in this bucket>,
data: {
<time field>: {
'0', <time of first measurement>,
'1', <time of second measurement>,
...
'<n-1>': <time of n-th measurement>,
},
<field0>: {
'0', <value of 'field0' in first measurement>,
'1', <value of 'field0' in first measurement>,
...
},
<field1>: {
'0', <value of 'field1' in first measurement>,
'1', <value of 'field1' in first measurement>,
...
},
...
}
}

索引

為了保證timeseries collection的查詢可以受益于索引掃描而不是全表掃描,timeseries collection允許索引可以被創建在時間上,元數據上以及元數據的子屬性上。從MongoDB5.2開始,在timeseries collection也允許索引被創建在測量值上。用戶使用createIndex命令提供的索引規范被轉換為底層buckets collection的模式。

  • timeseries collection與底層的buckets collection之間的索引映射轉換關系細節,你可以參考timeseries_index_schema_conversion_functions.h.
  • 在v5.2及以上版本的最新支持的索引類型,timeseries collection會存儲用戶原始的索引定義到變換后的索引定義上。當從底層的bucket collection的索引映射到timeseries collections的索引時,會返回用戶原始的索引定義。

當索引被創建后,可以通過listIndexes命令或$indexStats聚合計劃來檢查。listIndexes 和$indexStats是作用于timeseries collections的,執行時,它們會在內部將底層的bucket collection的索引轉化成timeseries格式的索引,并返回。比如,當我們在元數據字段中定義有mm的timeseries collection上執行listIndexes命令時,底層的bucket collection的{meta:1}索引,將會以{mm:1}格式返回。

dropIndex 和collMod (hidden: , expireAfterSeconds: ) 也同樣支持在timeseries collection上。

時間字段上支持的索引類型:

  • 單字段索引
  • 組合索引
  • 哈希索引
  • 通配符索引
  • 稀疏索引
  • 多鍵索引
  • 帶排序的索引

元數據字段和元數據子字段支持的索引類型:

  • 支持所有時間字段上支持的索引類型
  • v5.2及以上版本支持2d 索引
  • v5.2及以上版本支持2dsphere 索引
  • v5.2及以上版本支持 Partial索引

僅在v5.2及以上版本,測量值字段支持的索引類型:

  • 單字段索引
  • 組合索引
  • 2dsphere
  • 部分條件索引

`timeseries collections 上不支持的索引類型,包括 唯一索引以及文本索引。

桶目錄

為了保證高效地桶(分組)操作,我們在BucketCatalog里維護了一組開啟的桶,你可以在bucket_catalog.h找到。在更高的級別,我們嘗試著把并發寫程序的寫操作分組合并為可以一起提交地批處理,以減少對底層文檔的寫次數。寫程序會插入它的輸入批處理里的每一個文檔到BucketCatalog,然后BucketCatalog會返回一個BucketCatalog::WriteBatch的處理器。一旦完成上面那些插入操作后,寫程序就會檢查每個寫批處理。如果沒有其他的寫程序已經對批處理聲明提交的權利,那么它會聲明權利,并會提交它的批處理。否則,寫程序將會稍后再提交處理。當它檢查完所有的批處理,寫程序將會等待其他的寫程序提交每個剩下的批處理。

在內部,BucketCatalog維護一組對每個bucket 文檔的更新操作。當批處理被提交時,它會將這些插入轉換到成buckets的列格式,并確保任何control字段的更新(例如control.min 和 control.max)。

當bucket文檔在沒有通過BucketCatalog的情況下被更新時,寫程序就需要為有問題的文檔或命名空間去調用BucketCatalog::clear ,這樣它就可以更新它的內部狀態,避免寫入任何可能破壞bucket 格式的數據。這通常由OP觀察者處理,但可能需要通過其他地方去調用。

bucket既可以通過手動設置選項control.closed 標識來關閉,也可以在許多場景下通過 BucketCatalog 自動關閉。如果BucketCatalog使用了超出給定的閾值(可通過服務器參數timeseriesIdleBucketExpiryMemoryUsageThreshold控制)的更多內存,此時它將會開始去關閉空閑的bucket。如果bucket是開啟的且它沒有任何未處于等待中未提交的測量值時,那么它就會被視為空閑的bucket。在下面這些場下 BucketCatalog 也會關閉bucket: 如果它擁有超過最大閾值(timeseriesBucketMaxCount)的測量值數據的數量;如果它擁有過大的數據量大小(timeseriesBucketMaxSize);又或者一個新的測量值數據是否是會導致bucket在其最舊的時間戳和最新的時間戳之間跨度比允許的間隔更長的時間(當前硬編碼為一小時)。如果傳入的測量值在原理上與已經到達給定bucket的度量不兼容,該bucket將被關閉,同時可以使用numBucketsClosedDueToSchemaChange度量進行跟蹤。

在第一次提交給定bucket的寫批處理時,就會生成新的完整的文檔。后續的批處理提交中,我們只執行更新操作,不再生成新的完整的文檔(因此稱為‘經典’更新),是直接創建DocDiff(“delta”或者v2的更新)。

粒度

timeseries collection的granularity 選項在集合創建的時候,可以被設置成seconds,minutes或者hours。后期可通過colMod操作來修改這個選項從seconds到minutes或者從minutes到hours,除此之外的轉化修改目前都是不支持的。該參數想要表示在已給定的時序型測量數據之間的粗略的時間間隔,同時也用于調節其他內部參數對分組的影響。

單個bucket被允許的最大時間跨度,是由granularity選項控制,對于seconds,最大的時間跨度被設置成1小時,對于minutes就是24小時,對于hours就是30天。

當通過BucketCatalog開啟新的bucket時,_id里的時間戳就是等同于control.min.的值,該值是從第一個插入bucket的測量數據中根據granularity選項來向下近似舍入而得到的。對于seconds,它將向下舍入到最接近的分鐘,對于minutes,將向下舍入到最接近的小時,對于hours,它將向下舍入到最接近的日期。在閏秒和日歷中的其他不規則情況下,這種舍入可能并不完美,并且通常通過對自紀元以來的秒數進行基本模運算來完成,假設每分鐘 60 秒,每小時 60 分鐘,以及每天 24 小時。

更新和刪除

timeseries collection 支持符合以下限制的刪除語句:

  • 僅支持metaField的屬性的查詢語句
  • 支持批量操作

同時更新滿足上面同樣的條件,另外遵循:

  • 僅支持metaField對應的屬性值
  • 更新操作指定一個帶有更新運算符表達式的更新文檔(而不是替換文檔或者更新的pipeline操作)
  • 不支持upsert:true 操作

這些更新與刪除的執行都會被轉換成相對應的底層的bucket collection的更新或刪除操作。特別是,對于查詢和更新文檔,我們會使用真正的字段meta 替換集合的metaField。(參見 Bucket 集合規范)

例如,對于一個使用 metaField: "tag"創建的timeseries集合db.ts,考慮一個對這個集合的更新操作,其查詢語句是{"tag.tag.a": "a"} ,同時更新文檔語句是 {$set: {"tag.tag.a": "A"}, $rename: {"tag.tag.b": "tag.tag.c"}}。這個更新操作在 db.system.buckets.ts上會被轉換成,查詢語句是{"meta.tag.a": "a"},更新語句是 {$set: {"meta.tag.a": "A"}, $rename: {"meta.tag.b": "meta.tag.c"}}。然后這個轉換后的更新語句就可以像普通的更新操作一樣執行。上面這些轉換流程也適用于刪除操作。

參考文獻

MongoDB Blog: Time Series Data and MongoDB: Part 2 - Schema Design Best Practices

關于作者:黃璜

目前就職于上海DerbySoft,主要從事基礎架構中業務流程設計及研發的工作,平時工作中MongoDB使用的較多。

在提升自己外文的能力的同時,也希望為社區做出微小的貢獻。

責任編輯:武曉燕 來源: Mongoing中文社區
相關推薦

2013-08-26 09:36:27

大數據NoSQLMongoDB

2021-12-02 09:13:56

序列壓入

2021-03-02 21:52:48

Hive數據類型

2020-09-29 08:35:08

MongoDBPython數據

2020-05-06 22:07:53

UbuntuLinux操作系統

2022-11-03 15:18:20

Python組件算法

2024-09-09 14:57:31

2024-01-30 13:32:51

JSON反序列化序列化

2021-03-31 11:20:57

PythonADTK異常檢測

2025-08-11 01:11:00

Python時間技術

2024-06-27 16:38:57

2024-10-11 09:50:41

2009-08-18 09:59:01

Ruby技巧

2023-02-01 07:27:46

序列化二叉樹根節點

2023-05-05 00:19:22

2021-07-01 21:46:30

PythonHot-Winters數據

2023-10-13 15:34:55

時間序列TimesNet

2021-04-07 10:02:00

XGBoostPython代碼

2022-11-14 14:36:59

數據集Python自相關

2024-04-09 07:50:59

Flink語義Watermark
點贊
收藏

51CTO技術棧公眾號

经典三级在线| 国产亚洲精品av| 91国拍精品国产粉嫩亚洲一区| 久久久久久久综合色一本| 国产日韩一区在线| 国产精品18p| 日韩三级在线| 亚洲韩国欧洲国产日产av| 天天操天天爽天天射| 3d玉蒲团在线观看| 久久久久久久久久久99999| 亚洲自拍av在线| 探花视频在线观看| 欧美国产先锋| 一色桃子一区二区| 久久发布国产伦子伦精品| 亚洲第一影院| 亚洲成人在线观看视频| 亚洲欧美日韩国产成人综合一二三区| 国产黄a三级三级三级| 天堂在线一区二区| 欧美精品video| 男人在线观看视频| 在线日韩一区| 欧美r级在线观看| 色www免费视频| 不卡福利视频| 香蕉成人伊视频在线观看| 自拍偷拍99| 国产一级免费在线观看| 99视频有精品| 国产成人精品日本亚洲11| 91成人国产综合久久精品| 老鸭窝毛片一区二区三区| 久久久久久久久久久久久久久久久久av | 日本一级片在线播放| 成人豆花视频| 欧美日韩一区二区三区四区五区| 精品99在线视频| 久草在线视频福利| 亚洲丝袜精品丝袜在线| 午夜欧美一区二区三区免费观看| 人成在线免费视频| 91日韩在线专区| 国产视色精品亚洲一区二区| 亚洲卡一卡二卡三| 国产精品一区专区| 91亚洲精品一区二区| 亚洲一二区视频| 青青草97国产精品免费观看无弹窗版| 日本高清视频精品| 五月婷婷激情视频| 首页欧美精品中文字幕| 日本精品一区二区三区在线| 欧美一级片免费在线观看| 99精品国产在热久久下载| 久久久久久国产精品| 久久久久久激情| 影音先锋一区| 91成人精品网站| 国产三级av片| 日本特黄久久久高潮| 国产精品久久在线观看| 怡红院成永久免费人全部视频| 蜜桃久久久久久久| 92国产精品视频| 精品乱子伦一区二区| 粉嫩13p一区二区三区| 国内成+人亚洲| 精品无人乱码| 中文字幕一区av| 裸体大乳女做爰69| 久久国产精品黑丝| 色综合一个色综合| 国产aaaaa毛片| 自拍偷拍亚洲图片| 欧美成人艳星乳罩| jizz日本免费| 欧美精品羞羞答答| 欧美老妇交乱视频| 你懂的国产视频| 石原莉奈在线亚洲二区| 成人国内精品久久久久一区| 亚洲av色香蕉一区二区三区| 91影院在线免费观看| 亚洲成人第一| 日本乱理伦在线| 欧美香蕉大胸在线视频观看| 亚洲免费999| 亚洲日本va中文字幕| 亚洲精品午夜精品| 韩国一级黄色录像| 伊人久久久大香线蕉综合直播| 日韩美女在线观看| 国产黄色一区二区| 国产亚洲综合色| 国产女教师bbwbbwbbw| 在线男人天堂| 91精品国产一区二区三区| 国产精品入口麻豆| 91亚洲国产| 欧洲日本亚洲国产区| 91欧美日韩麻豆精品| 成人激情免费网站| 亚洲视频在线二区| 日韩激情电影免费看| 欧美一卡2卡三卡4卡5免费| 精品无码人妻一区| 欧美日韩福利| 国产精品免费网站| 手机福利小视频在线播放| 亚洲女同女同女同女同女同69| www黄色日本| 精品久久国产一区| 在线观看成人黄色| 亚洲综合一二三| 国产美女娇喘av呻吟久久| 日韩精品一区二区三区色偷偷| 四虎亚洲精品| 欧美狂野另类xxxxoooo| 法国伦理少妇愉情| 亚洲激情成人| 成人午夜黄色影院| 色的视频在线免费看| 色婷婷激情久久| 成人性生活免费看| 亚洲婷婷在线| 亚洲bt天天射| 蜜桃视频在线观看免费视频网站www| 日韩欧美精品中文字幕| 欧美日韩一区二区三区四区五区六区| 91欧美大片| 国产精品私拍pans大尺度在线| 视频一区二区三区在线看免费看| 亚洲综合色噜噜狠狠| 天堂网成人在线| 1024精品久久久久久久久| 国产精品视频永久免费播放| 你懂的在线看| 欧美午夜精品久久久久久久| 超碰97在线资源站| 精品福利电影| 国产精华一区二区三区| 丁香花视频在线观看| 日韩一级高清毛片| 成人免费视频网站入口::| 国产麻豆精品95视频| 日韩最新中文字幕| 精品一区视频| 欧美日韩国产成人在线| www夜片内射视频日韩精品成人| 亚洲视频一二三区| 自拍偷拍激情视频| 亚洲无线一线二线三线区别av| 成人羞羞视频免费| 波多野结衣视频一区二区| 亚洲精品成人av| 成人在线免费看视频| 久久青草欧美一区二区三区| 99爱视频在线| 成人三级视频| 亚洲一区中文字幕在线观看| 怡红院在线播放| 亚洲激情视频网站| 草莓视频18免费观看| 国产精品网曝门| 日本高清免费在线视频| 国产一区二区中文| 另类视频在线观看+1080p| 四虎影视4hu4虎成人| 日韩在线视频观看| 丰满人妻一区二区三区免费| 欧美日韩国产专区| 欧美人与禽zoz0善交| 狠狠色丁香婷综合久久| 久青草视频在线播放| 久久爱www成人| 国产拍精品一二三| 国产精品69xx| 亚洲午夜精品久久久久久久久久久久| 在线观看日韩一区二区| 亚洲一区精品在线| 久久精品国产亚洲av麻豆| 激情五月播播久久久精品| 久久这里只有精品18| 国产永久精品大片wwwapp| 91在线播放国产| 欧美aa在线| 久久中文字幕在线视频| 亚洲欧洲视频在线观看| 欧美日韩国产高清一区二区| 国产精品不卡av| 国产精品网曝门| 欧美做受高潮中文字幕| 日韩国产欧美三级| 国产成人永久免费视频| 日韩成人a**站| 国产精品自拍首页| 狠狠久久综合| 91av国产在线| 羞羞视频在线观看不卡| 亚洲偷欧美偷国内偷| 午夜精品久久久久久久99老熟妇| 色哦色哦哦色天天综合| 国产在线观看免费av| 国产精品网站导航| www.久久国产| 丁香婷婷综合五月| 天天综合天天添夜夜添狠狠添| 一区二区精品| 亚洲理论电影在线观看| 99精品电影| 特级西西444www大精品视频| 免费萌白酱国产一区二区三区| 亚洲一区二区在线播放| 欧美国产日韩电影| 欧美在线视频一二三| 欧美6一10sex性hd| 久久激情视频免费观看| 成人免费在线电影| 日韩精品在线观看网站| 成人午夜视频一区二区播放| 欧美精品高清视频| 中文字幕日本视频| 日韩欧美精品网址| 久久久久久久黄色片| 一区二区三区成人在线视频| 182在线观看视频| 日本一区二区免费在线| 波多野结衣av在线观看| 91小视频在线观看| 手机在线成人av| 国产mv日韩mv欧美| 黑人性生活视频| 国产一区二区在线电影| 中文字幕 日韩 欧美| 日韩av午夜在线观看| 91看片就是不一样| 老鸭窝91久久精品色噜噜导演| www.玖玖玖| 亚洲一区欧美二区| 妞干网在线视频观看| 亚洲国产午夜| 国产中文字幕视频在线观看| 中文国产一区| 99精品视频在线看| 久久夜色精品| 69久久久久久| 久久国产综合精品| 色综合五月婷婷| 国产剧情一区二区三区| 黄页网站在线看| 成人综合婷婷国产精品久久| 黄色国产在线视频| 91欧美一区二区| 欧美黄色一级生活片| 国产精品三级视频| 久久人妻无码aⅴ毛片a片app| 伊人色综合久久天天人手人婷| 国产女人被狂躁到高潮小说| 亚洲综合激情另类小说区| 成年免费在线观看| 色婷婷久久99综合精品jk白丝| 伊人网站在线观看| 日韩一区二区三区三四区视频在线观看| 国产精品国产精品国产专区| 欧美一区二区三区四区视频| 欧美熟妇乱码在线一区| 亚洲网站视频福利| 日本在线视频观看| 欧美人与性动交| 涩涩视频在线播放| 国产精品一区久久久| 欧美黄色一级| 久久久婷婷一区二区三区不卡| 欧美限制电影| 成人在线免费高清视频| 午夜一区不卡| 激情在线观看视频| 99视频精品免费视频| 人与嘼交av免费| 一个色综合av| 国产九色91回来了| 欧美sm美女调教| 成av人电影在线观看| 欧美激情视频播放| 国产私拍福利精品视频二区| 99视频日韩| 欧州一区二区| 国产主播自拍av| 美国一区二区三区在线播放| jjzzjjzz欧美69巨大| 国产精品人人做人人爽人人添| 久久婷婷综合国产| 欧美日韩精品免费观看视频| 亚洲 美腿 欧美 偷拍| 久久精品这里热有精品| 成人教育av| 国产高清精品一区| 欧美激情国产在线| 精品中文字幕av| 国产精品一区免费在线观看| 性猛交娇小69hd| 五月婷婷激情综合| 国产视频在线一区| 国产一区二区三区在线播放免费观看| 欧美videossex| 成人美女免费网站视频| 中文有码一区| 91动漫在线看| 国产精品正在播放| xxxxx99| 第一福利永久视频精品 | 成人免费看黄| 99re热精品| 香蕉久久网站| 日日躁夜夜躁aaaabbbb| 91性感美女视频| 日韩欧美大片在线观看| 日韩女优av电影| 69xxx在线| 成人中心免费视频| 日韩88av| www.这里只有精品| 国产天堂亚洲国产碰碰| 久久99精品波多结衣一区| 亚洲国产91色在线| 免费污视频在线| 成人h在线播放| 一区二区三区网站| 亚洲综合123| 亚洲日本欧美天堂| 国产精品久久免费| 日韩最新中文字幕电影免费看| 主播大秀视频在线观看一区二区| 日本视频一区在线观看| 亚洲免费在线| a级大片在线观看| 一本在线高清不卡dvd| 日本亚洲欧美| 青青精品视频播放| 久久不见久久见国语| 人人干人人视频| 国产女人aaa级久久久级 | 天堂在线亚洲视频| 日韩一级av毛片| 欧美日韩一二三区| 日本在线视频站| 亚洲最大的av网站| 国产精品av久久久久久麻豆网| 色哟哟在线观看视频| 亚洲一区在线电影| 五月天婷婷社区| 日本成人免费在线| 成人系列视频| www.偷拍.com| 亚洲国产精品一区二区久久恐怖片 | 国精产品一区二区三区有限公司| 日韩在线国产| 激情综合网av| 国产乱码久久久久久| 亚洲精品美女在线观看播放| 日韩电影免费看| 亚洲欧洲国产日韩精品| 国产最新精品免费| 国产污片在线观看| 亚洲美女www午夜| 免费污视频在线一区| 91免费视频黄| 成人av在线电影| 超碰在线观看91| 久久五月天综合| 乱亲女h秽乱长久久久| www日韩视频| 亚洲欧美激情在线| 婷婷在线免费视频| 国产精品久久久久不卡| 亚洲人体av| 青青草视频播放| 欧美乱妇15p| 天堂电影一区| 亚洲国产精品女人| 91丨国产丨九色丨pron| 一级黄在线观看| 97欧美精品一区二区三区| 欧美色图在线播放| 日本精品一二三| 欧美在线|欧美| 免费在线播放电影| 午夜精品一区二区在线观看| 国产精品456| 久久人人爽人人爽人人片av免费| 久久国产精品久久久| 免费看成人吃奶视频在线| 91大神免费观看| 在线免费观看日本欧美| 欧美亚洲系列| 亚洲欧洲日韩综合二区| 26uuu国产电影一区二区| 国产不卡精品视频|