精品欧美一区二区三区在线观看 _久久久久国色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桃色在线观看| 国产亚洲美州欧州综合国| 久热精品视频在线观看一区| 欧美久久久久久久久久久| 永久免费毛片在线播放| 91在线观看高清| 国产精品久久久久久av福利| 免费视频网站www| 亚洲制服欧美另类| 91麻豆精品国产综合久久久久久| 日韩av电影免费在线| 亚洲天堂日韩av| 欧美肉体xxxx裸体137大胆| 日韩欧美高清一区| 久久九九国产视频| 国精产品一区一区三区mba下载| 国产成人99久久亚洲综合精品| 久久中文字幕在线| 久久久久国产精品区片区无码| 蜜桃视频m3u8在线观看| 中文字幕一区在线观看| 精品国产免费人成电影在线观... 精品国产免费久久久久久尖叫 | 免费在线观看成年人视频| 亚洲91在线| 欧美视频国产精品| 日韩欧美三级电影| 日韩中文字幕免费观看| 国产一区二区在线看| 欧美成人免费大片| 俄罗斯毛片基地| 亚洲国产合集| 欧美日韩一区视频| 91视频最新入口| 一级毛片视频在线观看| 久久嫩草精品久久久久| 国产一区视频观看| 丰满人妻av一区二区三区| 国产欧美三级| 欧美极品少妇全裸体| 欧美国产日韩在线观看成人| 欧美女优在线视频| 国产视频在线观看一区二区| 欧美大喷水吹潮合集在线观看| 桃色一区二区| 欧美性高跟鞋xxxxhd| 国产原创中文在线观看| 成年人在线视频免费观看| 91色在线porny| 精品一区久久久| 色窝窝无码一区二区三区| 日本免费新一区视频| 欧美老女人xx| 青草影院在线观看| 国产精品草草| 欧美极品欧美精品欧美视频| 91ts人妖另类精品系列| 久久在线视频免费观看| 日韩亚洲一区二区| 9999热视频| 欧美色综合网| 91精品国产色综合久久不卡98| 五月天免费网站| 91九色精品国产一区二区| 最近2019年中文视频免费在线观看| 一级黄色免费视频| 日韩精品免费一区二区夜夜嗨| 91精品国产一区二区三区香蕉| 日韩av综合在线观看| 97人人爽人人澡人人精品| 婷婷国产在线综合| 99999精品视频| 99riav视频一区二区| 欧美区视频在线观看| 日本人dh亚洲人ⅹxx| 精品女同一区二区三区在线观看| 五月婷婷综合网| 无遮挡又爽又刺激的视频| 午夜欧美巨大性欧美巨大| 欧美三级日韩三级| 精品国产aⅴ一区二区三区东京热 久久久久99人妻一区二区三区 | 日韩一区欧美一区| 国产精品无码电影在线观看| 日本三级视频在线观看| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲一卡二卡三卡| 二区在线视频| 亚洲激情欧美激情| 国产一区二区在线视频播放| а√天堂8资源在线| 一区二区日韩电影| 欧美视频第三页| 国产高清视频一区二区| 亚洲精品久久视频| 超碰男人的天堂| 国产欧美三级电影| 国产一区二区久久精品| 欧美黑吊大战白妞| 三级久久三级久久久| 18成人免费观看网站下载| 日韩av资源| 亚洲激情av在线| 日本a在线天堂| 日韩123区| 色综合天天综合网天天狠天天| 欧美一区二区三区爽大粗免费| 草草视频在线观看| 欧美高清视频不卡网| 中出视频在线观看| 一区二区在线影院| 国产精品看片资源| 亚欧洲精品视频| 亚洲蜜臀av乱码久久精品| 成人一区二区av| 免费污视频在线一区| 亚洲福利视频网站| 日韩在线视频网址| 日本欧美在线看| 欧美日韩电影一区二区三区| 色呦呦在线看| 欧美丰满少妇xxxxx高潮对白| 亚洲精品中文字幕乱码无线| 欧美日韩高清| 萌白酱国产一区二区| 波多野结衣在线电影| 精品一区二区三区免费观看| 欧洲亚洲一区二区| 日本不卡1234视频| 亚洲国产精品久久精品怡红院| 手机免费看av| 亚洲深夜影院| 国产尤物91| 成人在线高清免费| 精品日本一线二线三线不卡| 久久无码人妻精品一区二区三区| 狠狠综合久久av一区二区蜜桃| 精品激情国产视频| 国产精品第56页| 国产成人在线免费观看| 一区二区三区久久网| 成人国产精品| 亚洲黄页网在线观看| 久久久精品99| 成人在线一区二区三区| 国产freexxxx性播放麻豆 | **性色生活片久久毛片| 天堂8在线天堂资源bt| 麻豆国产精品| 欧美日韩国产第一页| 国产精品尤物视频| 国产成人精品一区二区三区四区| 欧美日韩国产精品一卡| 黄色片免费在线观看| 欧美精品18+| 国内偷拍精品视频| 成人手机在线视频| 女人天堂av手机在线| 成人免费91| 超碰精品一区二区三区乱码| 国产白浆在线观看| 欧美国产激情一区二区三区蜜月| www.av毛片| 西野翔中文久久精品字幕| 欧美不卡视频一区发布| 欧美brazzers| 国产精品久久久久永久免费观看 | heyzo在线| 精品调教chinesegay| 欧美精品入口蜜桃| 99国产精品国产精品久久| 免费成人进口网站| 欧美日韩卡一| 欧美高清自拍一区| 国产色综合视频| 亚洲无人区一区| 亚洲国产综合视频| 日本强好片久久久久久aaa| 色撸撸在线观看| 欧美高清影院| 欧美高清视频在线播放| av高清一区二区| 午夜精品福利一区二区三区蜜桃| 成年人看片网站| 一个色综合网| 久久精品日产第一区二区三区 | 一区二区三区在线播放| 麻豆精品国产传媒av| 国语精品一区| 日韩精品无码一区二区三区| 日韩第一区第二区| 日本免费在线精品| 中文字幕免费高清电视剧网站在线观看| 欧美日韩日日骚| 美女毛片在线观看| 国产色91在线| 在线精品视频播放| 蜜芽一区二区三区| 成人一对一视频| 清纯唯美亚洲经典中文字幕| 成人精品视频在线| 国产剧情在线| 亚洲欧美国产高清va在线播| 99草在线视频| 亚洲一区二区视频在线观看| 国产三级在线观看完整版| 高清在线观看日韩| 欧美美女一级片| 香蕉久久夜色精品| 屁屁影院ccyy国产第一页| 亚洲超碰在线观看| 国产精品日韩欧美综合| 理论片午夜视频在线观看| 久久综合久久八八| 黄色片一区二区| 欧美精品亚洲一区二区在线播放| 日本a级片视频| 欧美国产精品中文字幕| 国产亚洲无码精品| 成人精品国产免费网站| 在线观看免费视频污| 免费观看30秒视频久久| 一本久道综合色婷婷五月| 亚洲经典自拍| 日韩一级性生活片| 欧美日韩三级电影在线| 欧美精品一区二区性色a+v| 日韩精品午夜| 亚洲午夜精品一区二区 | 欧美在线观看视频一区二区| 日韩av一二三区| 国产欧美日韩在线| www.中文字幕av| 99麻豆久久久国产精品免费| 无码人妻一区二区三区精品视频| 久久经典综合| 99999精品视频| 综合久久久久| 一本二本三本亚洲码| 成人黄色小视频| 欧美一区二区三区成人久久片| 超碰国产精品一区二页| 成人激情视频在线| 成人影院网站ww555久久精品| 午夜美女久久久久爽久久| 肉肉视频在线观看| 久久久久在线观看| 美女扒开腿让男人桶爽久久软| 日韩在线播放av| 国产原创视频在线观看| 久久久精品美女| 中文字幕在线播放网址| 欧美精品久久久久a| 白浆视频在线观看| 欧美在线一级视频| 欧美aaa免费| 久久久久中文字幕2018| 多野结衣av一区| 日韩免费视频在线观看| 欧美aaa大片视频一二区| 国产精品福利小视频| 九九久久国产| 91观看网站| 国产精品一区二区中文字幕| 久久久水蜜桃| 成人影院天天5g天天爽无毒影院| 国产在线精品一区二区中文| 婷婷精品视频| 天堂社区 天堂综合网 天堂资源最新版 | 亚洲美女少妇无套啪啪呻吟| 久久精品视频16| 水蜜桃久久夜色精品一区的特点| 欧美 日韩 国产在线观看| 午夜日韩在线| 欧美日韩在线一| 日韩va亚洲va欧美va久久| 久久精品.com| 秋霞成人午夜伦在线观看| 色综合五月婷婷| 91在线视频播放地址| 人妻无码一区二区三区免费| 国产亚洲一区二区三区四区| 亚洲精品久久久久久国| 亚洲国产日韩一区二区| 免费视频网站在线观看入口| 欧美一区二区三区四区在线观看| 国产精品主播一区二区| 亚洲高清不卡av| 香蕉视频成人在线| 色噜噜狠狠色综合网图区| 男女视频在线| 国产精品网红直播| 大陆精大陆国产国语精品| 天堂精品一区二区三区| 日韩久久久久| 九一国产精品视频| 黄网站免费久久| 欧美狂猛xxxxx乱大交3| 亚洲黄色小说网站| 国产裸体美女永久免费无遮挡| 欧美日韩国产首页在线观看| 少妇人妻精品一区二区三区| www.精品av.com| 美女100%一区| 官网99热精品| 五月天激情综合网| 成人午夜视频免费在线观看| 成人晚上爱看视频| 国产精品白丝喷水在线观看| 色视频一区二区| 天天干天天色天天| 欧美大成色www永久网站婷| 波多野结衣中文字幕久久| 国产精品一区av| 日本精品视频| 亚洲 国产 日韩 综合一区| 99riav国产精品| 年下总裁被打光屁股sp| 亚洲色图欧美激情| 中文字幕+乱码+中文乱码91| 亚洲精选中文字幕| 9999在线视频| 国产精品激情自拍| 香蕉一区二区| 成人免费观看cn| 高清不卡一区二区| 亚洲熟妇一区二区三区| 亚洲3atv精品一区二区三区| www国产在线| 欧美精品做受xxx性少妇| av在线最新| 国产精品我不卡| 日韩av专区| 手机在线免费观看毛片| 国产肉丝袜一区二区| 中文字幕精品无码一区二区| 国产视频丨精品|在线观看| 蜜桃av.网站在线观看| 久久av一区二区三区漫画| 久久美女视频| 少妇人妻在线视频| av亚洲精华国产精华| 国产一区在线观看免费| 欧美午夜精品电影| 亚洲天天影视| 91欧美日韩一区| 中文字幕免费精品| 日韩精品一区二区三区色欲av| 国产福利一区在线| 蜜桃av免费看| 欧美伊人精品成人久久综合97| 人妻少妇精品无码专区久久| 亚洲视频免费看| 精品国产综合区久久久久久| 免费视频一区三区| 中文字幕第80页| 国产不卡免费视频| 欧美丰满老妇熟乱xxxxyyy| 欧美婷婷六月丁香综合色| 污视频软件在线观看| 91国内免费在线视频| 妖精视频一区二区三区免费观看| 大胆欧美熟妇xx| 99精品视频中文字幕| 日本熟妇一区二区三区| 色妞在线综合亚洲欧美| 国产精品白丝久久av网站| 国产精品久久久久久久乖乖| 91亚洲精品一区二区乱码| 中文精品久久久久人妻不卡| 日韩小视频在线| 国产成人aa在线观看网站站| 欧美日韩在线中文| 欧美国产欧美亚州国产日韩mv天天看完整| 久久青青草视频| 中文字幕国产亚洲| 中文.日本.精品| 日韩精品一区二区三区电影| www.亚洲人| 艳妇乳肉豪妇荡乳av无码福利 | 天天操天天爱天天爽| 91麻豆成人久久精品二区三区| 国产亚洲欧美久久久久| 日韩精品在线视频观看| 精品久久在线| 日本韩国欧美在线观看| 国产精品系列在线| 中文天堂在线资源| 九九精品在线观看| 久草在线成人| 巨乳女教师的诱惑| 色国产精品一区在线观看| 黄色在线免费网站| 久久久久综合一区二区三区| 国产乱码精品一区二区三区忘忧草| av黄色免费在线观看| 亚洲精品ady|