ZoneTree

ZoneTree is a high-performance, persistent, transactional, and ACID-compliant ordered key-value database for .NET. Built entirely in C#, it offers seamless operation in both in-memory and on-disk modes, supporting local or cloud storage. With novel LSM Tree optimizations, ZoneTree provides top-tier performance for modern applications.

Get Started View on GitHub

Key Features

  • High Performance: Optimized for speed with novel LSM Tree enhancements.
  • Transactional and ACID-Compliant: Ensures data integrity with full transaction support.
  • In-Memory and On-Disk Operation: Flexibly operate entirely in memory or persist data to storage backends.
  • Cloud Storage Support: Compatible with cloud-based storage solutions for scalable deployments.
  • Efficient Concurrency Control: Supports concurrent operations with minimal locking overhead.
  • Customizable: Offers configurable options like memory usage, data compression, and more.
  • Open Source: Available under the MIT License for free use and distribution.

Why ZoneTree?

ZoneTree is designed to meet the demanding needs of modern applications that require high-performance data storage with transactional integrity. Whether you’re building a real-time analytics platform, a financial application, or any system where speed and reliability are paramount, ZoneTree provides the foundation you need.

Performance Highlights

  • Read/Write Speed: Achieves millions of operations per second in in-memory mode.
  • Optimized Storage: Efficient disk space utilization with data compression support.
  • Concurrent Access: Allows multiple threads to perform operations without significant contention.

Getting Started

Installation

Install ZoneTree via NuGet package manager:

dotnet add package ZoneTree

Basic Usage Example

Here’s a simple example to get you started:

using Tenray.ZoneTree;
using Tenray.ZoneTree.Options;

// Configure ZoneTree options
var options = new ZoneTreeOptions<int, string>
{
    // Configuration options
};

// Create a ZoneTree instance
using var zoneTree = new ZoneTree<int, string>(options);

// Insert data
zoneTree.Upsert(1, "Value 1");
zoneTree.Upsert(2, "Value 2");

// Retrieve data
var value = zoneTree.Get(1);

// Delete data
zoneTree.Delete(2);

// Dispose when done
zoneTree.Dispose();

For more detailed examples and advanced configurations, visit the documentation.

Features in Depth

Transaction Support

ZoneTree supports full transaction capabilities, allowing you to perform multiple operations atomically:

using var transaction = zoneTree.BeginTransaction();
transaction.Upsert(3, "Value 3");
transaction.Delete(1);
transaction.Commit();

Concurrency Control

Optimistic concurrency allows for high throughput in multi-threaded environments:

  • Optimistic Transactions: Minimal locking, maximizing performance.
  • Atomic Read-Modify-Update: Ensures data consistency during updates.

Customization Options

  • Data Compression: Enable compression for write-ahead logs (WAL) and disk segments.
  • Memory Usage: Configure how much data is retained in memory.
  • WAL Modes: Choose from different modes to balance performance and durability.
  • Custom Serializers: Implement custom logic for data serialization and comparison.

Benchmarks

ZoneTree has been rigorously tested to ensure top performance:

  • In-Memory Operations: Over 1 million read/write operations per second.
  • Disk-Based Operations: Optimized for SSDs with efficient read/write patterns.
  • Concurrency: High throughput with minimal contention in multi-threaded scenarios.

For detailed benchmark results, visit the performance section.

Use Cases

  • Real-Time Analytics: High-speed data ingestion and retrieval.
  • Financial Applications: ACID compliance ensures transactional integrity.
  • Caching Systems: In-memory operations for rapid data access.
  • Embedded Databases: Lightweight and efficient for embedded applications.

Community and Support

Join our growing community of developers:

License

ZoneTree is open-source software licensed under the MIT License. You are free to use, modify, and distribute it in your projects.

  • ZoneTree FullTextSearch: Extend ZoneTree with full-text search capabilities. Learn more »
  • Topaz: Multithreaded JavaScript engine for .NET. Learn more »

Note: For more detailed information, tutorials, and API references, please visit the ZoneTree documentation.