From 92d10390cbab0206c05e24c40d9284e71b282dd6 Mon Sep 17 00:00:00 2001 From: Benety Goh Date: Fri, 29 Jan 2021 14:51:28 -0500 Subject: SERVER-49327 Architecture Guide: Time-Series Collections --- src/mongo/db/timeseries/README.md | 91 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 src/mongo/db/timeseries/README.md (limited to 'src/mongo/db') diff --git a/src/mongo/db/timeseries/README.md b/src/mongo/db/timeseries/README.md new file mode 100644 index 00000000000..d0c12629d8e --- /dev/null +++ b/src/mongo/db/timeseries/README.md @@ -0,0 +1,91 @@ +# Time-Series Collections + +MongoDB supports a new collection type for storing time-series data with the [timeseries](../commands/create.idl) +collection option. A time-series collection presents a simple interface for inserting and querying +measurements while organizing the actual data in buckets. + +A minimally configured time-series collection is defined by providing the [timeField](timeseries.idl) +at creation. Optionally, a meta-data field may also be specified to help group + measurements in the buckets. MongoDB also supports an expiration mechanism on measurements through +the `expireAfterSeconds` option. + +A time-series collection `mytscoll` in the `mydb` database is represented in the [catalog](../catalog/README.md) by a +combination of a view and a system collection: +* The view `mydb.mytscoll` is defined with the bucket collection as the source collection with +certain properties: + * Writes (inserts only) are allowed on the view. Every document inserted must contain a time field. + * Querying the view implicitly unwinds the data in the underlying bucket collection to return + documents in their original non-bucketed form. + * The aggregation stage [$_internalUnpackBucket](../pipeline/document_source_internal_unpack_bucket.h) is used to + unwind the bucket data for the view. +* The system collection has the namespace `mydb.system.buckets.mytscoll` and is where the actual + data is stored. + * Each document in the bucket collection represents a set of time-series data within a period of time. + * If a meta-data field is defined at creation time, this will be used to organize the buckets so that + all measurements within a bucket have a common meta-data value. + * Besides the time range, buckets are also constrained by the total number and size of measurements. + +## Bucket Collection Schema + +``` +{ + _id: , + control: { + // + version: 1, // Version of bucket schema. Currently fixed at 1 since this is the + // first iteration of time-series collections. + min: { +