Skip to content

v0.5.0

Compare
Choose a tag to compare
@merlimat merlimat released this 20 May 18:18
· 40 commits to main since this release
6c0fc21

New Features

Get() operation with floor/ceiling comparison

It's now possible to do a Get() request for a key that is floor (<=), ceiling (>=), lower (<) or higher >.

eg.:

key, value, version, err := client.Get(ctx, "my-key", ComparisonFloor())

Partition Key

A PartitionKey can be specified in all the operations. When a partition key is set, the shard routing mechanism will be based on it instead of using the record key.

eg.:

key1, v1, err := client.Put(ctx, "key-1", []byte("1"), PartitionKey("x"))
key2, v2, err := client.Put(ctx, "key-2", []byte("1"), PartitionKey("x"))
key2, v2, err := client.Put(ctx, "key-3", []byte("1"), PartitionKey("x"))

All these record are going to be stored on the same shard, even though they have different keys.

Operations such as Get() with floor/ceiling match, List() and RangeScan() become more efficient when a PartitionKey() option is set, since they only need to operate on a single shard.

Sequential Keys

Oxia can help generating unique and monotonically increasing keys composed on an arbitrary number of sequences.

key1, v1, err := client.Put(ctx, "a", []byte("0"), SequenceKeysDeltas(1), PartitionKey("x"))
// key1 -> a-00000000000000000001
key2, v2, err := client.Put(ctx, "a", []byte("0"), SequenceKeysDeltas(5), PartitionKey("x"))
// key2 -> a-00000000000000000006

RangeScan

RangeScan() is similar to List(), though it allows to efficiently iterate over a large set of records

Reading Coordinator configuration from config map

When running in Kubernetes, the Oxia coordinator can read the configuration directly from a config map. This will allow to get instant notifications of changes to the configuration and to get them applied immediately.

What's Changed

Full Changelog: v0.4.0...v0.5.0