Getting Started

This guide creates a persistent ZoneTree, writes and reads a record, and scans an ordered key range.

Install

dotnet add package ZoneTree

Open A Tree

using ZoneTree;

using var zoneTree = new ZoneTreeFactory<int, string>()
    .SetDataDirectory("data/my-zone-tree")
    .OpenOrCreate();

using var maintainer = zoneTree.CreateMaintainer();

OpenOrCreate() opens the existing tree in data/my-zone-tree, or creates it when it does not exist.

CreateMaintainer() creates ZoneTree's ready-to-use background maintenance worker and automates merge scheduling and inactive-cache cleanup. Creating a maintainer is optional; without one, those jobs do not run automatically.

Write And Read

zoneTree.Upsert(1, "Hello ZoneTree");

if (zoneTree.TryGet(1, out var value))
    Console.WriteLine(value);

Upsert inserts a new key or replaces the current value. TryGet returns the newest live value for the key.

Scan An Ordered Range

using var iterator = zoneTree.CreateIterator();

iterator.Seek(100);
while (iterator.Next() && iterator.CurrentKey < 200)
    Console.WriteLine($"{iterator.CurrentKey}: {iterator.CurrentValue}");

A forward iterator returns keys in comparer order. Seek(100) positions it so the next successful Next() returns the first key greater than or equal to 100.

Dispose iterators when the scan is complete.

Shutdown

The tree, maintainer, and iterators are disposable. The using declarations in the examples dispose them when their scopes end. Maintainer disposal waits for its tracked merge threads to finish. See maintenance when you need to configure maintenance or observe merge completion explicitly.

Next Steps