Documentation ¶
Index ¶
Constants ¶
View Source
const BatchSize = 12
BatchSize is samples per batch; this was choose by benchmarking all sizes from 1 to 128.
View Source
const (
// ChunkLen is the length of a chunk in bytes.
ChunkLen = 1024
)
Variables ¶
View Source
var ( // DefaultEncoding exported for use in unit tests elsewhere DefaultEncoding = PrometheusXorChunk )
Functions ¶
func RangeValues ¶
RangeValues is a utility function that retrieves all values within the given range from an Iterator.
Types ¶
type Batch ¶
Batch is a sorted set of (timestamp, value) pairs. They are intended to be small, and passed by value.
type Chunk ¶
type Chunk interface { // Add adds a SamplePair to the chunks, performs any necessary // re-encoding, and creates any necessary overflow chunk. // The returned Chunk is the overflow chunk if it was created. // The returned Chunk is nil if the sample got appended to the same chunk. Add(sample model.SamplePair) (Chunk, error) // NewIterator returns an iterator for the chunks. // The iterator passed as argument is for reuse. Depending on implementation, // the iterator can be re-used or a new iterator can be allocated. NewIterator(Iterator) Iterator Marshal(io.Writer) error UnmarshalFromBuf([]byte) error Encoding() Encoding // Len returns the number of samples in the chunk. Implementations may be // expensive. Len() int // Equals checks if this chunk holds the same data as another. Equals(Chunk) (bool, error) }
Chunk is the interface for all chunks. Chunks are generally not goroutine-safe.
func NewForEncoding ¶
NewForEncoding allows configuring what chunk type you want
type Encoding ¶
type Encoding byte
Encoding defines which encoding we are using, delta, doubledelta, or varbit
const ( // PrometheusXorChunk is a wrapper around Prometheus XOR-encoded chunk. // 4 is the magic value for backwards-compatibility with previous iota-based constants. PrometheusXorChunk Encoding = 4 )
type Iterator ¶
type Iterator interface { // Scans the next value in the chunk. Directly after the iterator has // been created, the next value is the first value in the // chunk. Otherwise, it is the value following the last value scanned or // found (by one of the Find... methods). Returns false if either the // end of the chunk is reached or an error has occurred. Scan() bool // Finds the oldest value at or after the provided time. Returns false // if either the chunk contains no value at or after the provided time, // or an error has occurred. FindAtOrAfter(model.Time) bool // Returns the last value scanned (by the scan method) or found (by one // of the find... methods). It returns model.ZeroSamplePair before any of // those methods were called. Value() model.SamplePair // Returns a batch of the provisded size; NB not idempotent! Should only be called // once per Scan. Batch(size int) Batch // Returns the last error encountered. In general, an error signals data // corruption in the chunk and requires quarantining. Err() error }
Iterator enables efficient access to the content of a chunk. It is generally not safe to use an Iterator concurrently with or after chunk mutation.
Click to show internal directories.
Click to hide internal directories.