-
Type:
Task
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Component/s: CRUD
Before this project, it was possible to access timeseries data in the compressed format (buckets) by directly performing read/write on the bucket collection (<db>.system.buckets.<coll>).
This is not possible anymore. In fact, the bucket collection does not exist anymore. Instead, to access timeseries data in the compressed format (buckets) the CRUD operations must target the main timeseries user namespace and pass the "rawData: true" parameter.
E.g.:
db.runCommand({find: 'coll', rawData: true})
Description of Linked Ticket
Summary
Implement "raw access" mode for CRUD commands, which bypasses any logical translation steps. For standard collections, this will be a noop. For time-series collections, it allows operations to function on the bucket-level data while accessing the primary namespace (not system.buckets). This will allow tooling such as mongodump to access the correct data format without knowing the collection type.
Motivation
This small project will be a preparatory step for SPM-3830 (Eliminate Dual-Namespaces for Time Series Collections) to ease the transition to using a single namespace for time-series collections.
Documentation
Product Description
Scope
Technical Design
Docs Update
Discussion from Slack
The requirements we took into accounts are:
- The server must explicitly reject requests with rawData=true on commands that do not support this parameter. It is important that the server does not silently ignore this parameter.
- If in the future we decide to add rawData support on a command that previously was refusing it, this will cause a change of behavior for end-users (applications). So we must ensure that the change in behavior only happens when the customer decide to upgrade their driver version and not when they upgrade the server.
- A change in the list of commands that supports rawData must not require a change in the application code.
- Even in the initial release in a driver targetting 9.0, the addition of rawData to a command document should be guarded by a wire version check. That will allow tools like mongodump/restore to always enable rawData at the client level, and the driver will just ignore it when connected to pre-9.0 servers.
And the proposal we agreed on is the following:
- The server will accept rawData parameter only on a subset of the commands and for all the others were rawData does not have any effect or is not applicable, the server will return InvalidOptions error.
- The drivers will allow to specify the rawData parameter through some high/gloabal level object (e.g. Client or connection object).
- The drivers will need to maintain a list of commands that accepts the rawData parameter and forward the parameter only to those.
- related to
-
TOOLS-3715 Adopt raw CRUD API for timeseries
-
- Execution Blocked
-
- split to
-
NODE-6883 Interface for time-series bucket access through user namespace
-
- Blocked
-
-
CDRIVER-5955 Interface for time-series bucket access through user namespace
-
- Closed
-
-
CSHARP-5546 Interface for time-series bucket access through user namespace
-
- Closed
-
-
CXX-3258 Interface for time-series bucket access through user namespace
-
- Closed
-
-
JAVA-5830 Interface for time-series bucket access through user namespace
-
- Closed
-
-
MOTOR-1447 Interface for time-series bucket access through user namespace
-
- Closed
-
-
PHPLIB-1655 Interface for time-series bucket access through user namespace
-
- Closed
-
-
PYTHON-5247 Interface for time-series bucket access through user namespace
-
- Closed
-
-
RUBY-3639 Interface for time-series bucket access through user namespace
-
- Closed
-
-
RUST-2189 Interface for time-series bucket access through user namespace
-
- Closed
-
-
GODRIVER-3522 Interface for time-series bucket access through user namespace
-
- Investigating
-