Merge pull request #14826 from fungiboletus/patch-2

tsdb documentation: More details about Chunks
This commit is contained in:
Bryan Boreham 2024-12-04 13:20:57 +00:00 committed by GitHub
commit b407c2930d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -25,20 +25,20 @@ in-file offset (lower 4 bytes) and segment sequence number (upper 4 bytes).
└──────────────────────────────┘ └──────────────────────────────┘
``` ```
# Chunk # Chunk
``` ```
┌───────────────┬───────────────────┬─────────────┬────────────────┐ ┌───────────────┬───────────────────┬─────────────┬───────────────────
│ len <uvarint> │ encoding <1 byte> │ data <data>CRC32 <4 byte> │ len <uvarint> │ encoding <1 byte> │ data <data>checksum <4 byte>
└───────────────┴───────────────────┴─────────────┴────────────────┘ └───────────────┴───────────────────┴─────────────┴───────────────────
``` ```
Notes: Notes:
* `<uvarint>` has 1 to 10 bytes.
* `encoding`: Currently either `XOR`, `histogram`, or `floathistogram`, see * `len`: Chunk size in bytes. 1 to 10 bytes long using the [`<uvarint>` encoding](https://go.dev/src/encoding/binary/varint.go).
[code for numerical values](https://github.com/prometheus/prometheus/blob/02d0de9987ad99dee5de21853715954fadb3239f/tsdb/chunkenc/chunk.go#L28-L47). * `encoding`: Currently either `XOR`, `histogram`, or `floathistogram`, see [code for numerical values](https://github.com/prometheus/prometheus/blob/02d0de9987ad99dee5de21853715954fadb3239f/tsdb/chunkenc/chunk.go#L28-L47).
* `data`: See below for each encoding. * `data`: See below for each encoding.
* `checksum`: Checksum of `encoding` and `data`. It's a [cyclic redudancy check](https://en.wikipedia.org/wiki/Cyclic_redundancy_check) with the Castagnoli polynomial, serialised as an unsigned 32 bits big endian number. Can be refered as a `CRC-32C`.
## XOR chunk data ## XOR chunk data
@ -177,7 +177,6 @@ the encoding will therefore result in a short varbit representation. The upper
bound of 33554430 is picked so that the varbit encoded value will take at most bound of 33554430 is picked so that the varbit encoded value will take at most
4 bytes. 4 bytes.
## Float histogram chunk data ## Float histogram chunk data
Float histograms have the same layout as histograms apart from the encoding of samples. Float histograms have the same layout as histograms apart from the encoding of samples.