FASTEST ORDERED STORAGE FOR .NET
Your data.
In order.
An ordered key-value engine that runs inside your .NET application. Write at speed, scan by range, and keep control of how your data is stored.
A FOUNDATION YOU CAN BUILD ON
One engine.
Your data model.
Use ZoneTree as an embedded database, or build your own data layer on its ordered, persistent core.
Go straight to the range.
Seek to a key and read forward or backward. Design indexes, time-series layouts, and queues around the access patterns your application needs.
Explore ordered accessMake durability a decision.
Choose a write-ahead logging mode, recover persistent data, and take live backups. Configure storage around your workload and recovery requirements.
Understand durabilityShape your own data layer.
Bring your serializers and comparers. Use atomic updates, optimistic transactions, and background maintenance to build the behavior your product needs.
Discover the APIFROM PACKAGE TO PERSISTENCE
A storage engine.
A familiar API.
Open a tree, write a value, and read it back. Your data lives in a local directory, and your code stays in C#.
dotnet add package ZoneTree using ZoneTree;
using var tree = new ZoneTreeFactory<int, string>()
.SetDataDirectory("data/my-tree")
.OpenOrCreate();
using var maintainer = tree.CreateMaintainer();
tree.Upsert(42, "Hello, ZoneTree");
if (tree.TryGet(42, out var value))
Console.WriteLine(value); using ZoneTree;
using var tree = new ZoneTreeFactory<int, string>()
.SetDataDirectory("data/my-tree")
.OpenOrCreate();
using var maintainer = tree.CreateMaintainer();
using var iterator = tree.CreateIterator();
iterator.Seek(100);
while (iterator.Next() && iterator.CurrentKey < 200)
Console.WriteLine($"{iterator.CurrentKey}: {iterator.CurrentValue}"); One tree per data directory. The maintainer handles background merges and cache cleanup.
PERFORMANCE, WITH CONTEXT
A real workload.
Results you can inspect.
Two million profiles. Individual writes, secondary indexes, point reads, range scans, queries, and updates. Compare the completed workload phases across four engines.
| Engine | Seconds |
|---|---|
| ZoneTree | 173.4 s |
| RocksDB | 422.5 s |
| SQLite | 1,061.9 s |
| MySQL | 806.7 s |
WHAT WAS MEASURED
Application behavior.
Beyond an insert loop.
The profile-store benchmark compares ZoneTree, RocksDB, SQLite, and MySQL with checksum validation across completed engines.
These timings describe this workload and its documented configuration. Durability settings differ by engine; MySQL runs over TCP. Completed phase time excludes setup, stabilization, and verification.
Read the methodologyDESIGNED TO SCALE OUT
Build the node.
Scale the database.
ZoneTree is designed to be the local storage engine inside a distributed database. Its ordered LSM-tree architecture and foundational APIs let a separate layer compose nodes into a scalable system, handling partitioning, replication, request routing, and cluster coordination.
We’re building a dedicated distribution layer on top of these foundations.
- Ordered ranges & data movement
- Range scans and snapshot iterators support partition export and rebuilds. Backup and restore APIs help seed new nodes.
- Operation indexes & replica apply
- Write operation indexes and a replica-apply helper let your replication layer track updates and reject stale same-key replays.
- Local consistency & lifecycle control
- Atomic updates, local transactions, and maintenance events give each node explicit control over its storage.
BUILD WITH A CLEAR PATH
Go deeper where it matters.
Know the engine.
Understand the LSM tree, segment lifecycle, key ordering, and the choices that shape reads and writes.
Explore the architectureBuild your data model.
Turn ordered keys into primary and secondary indexes, time-series stores, persistent queues, and event systems.
Start with indexesPrepare for production.
Plan maintenance, backups, recovery, and diagnostics before your application depends on the data.
Use the production checklistBEHIND THIS WEBSITE
Built with PureStack and Regor.
Our documentation brings together static page generation, reusable HTML components, and typed styles. Meet the open-source tools behind the experience.
PureStack
Turns MDX into static pages with shared layouts, navigation, search, and themes. PureStack brings this landing page and the documentation together in one site.
Regor
A reactive UI library for HTML and TypeScript. Regor’s component model defines the reusable pieces behind this site, from the storage illustration to the documentation cards.
YOUR NEXT DATA SYSTEM STARTS HERE
Build something worth storing.
Start with a tree. Make it your own.