Skip to content

Katzebasev1.0.0

ACID compliant document-based database engine with SQL language, APIs and Management UI.

Stable Released Oct 8, 20265,097 downloadsMIT License

Logo128

A fast, embeddable document database for .NET with a familiar SQL syntax.

Katzebase is an ACID compliant document-based database written in C# using .NET 10 that runs on Windows or Linux. By default it runs as a service but the libraries can also be embedded. It supports what you'd expect from a typical relational-database-management-system except the "rows" are stored as sets of key-value pairs (called documents) and the schema is not fixed. The default engine is wrapped by ReliableMessaging controllers and allows access via APIs, a t-SQL like syntax, or by using the bundled management UI (which just calls the APIs).

Testing Status

Regression Tests

Default Login

  • Username: admin
  • Password: <blank>

Features:

  • Abortable transactions.
  • Caching and write deferment.
  • Locking, isolation and atomicity.
  • Indexing with partitioning.
  • Multi and nested schemas with partitioning.
  • Static analyzer and schema aware UI.
  • Logging and health monitoring.
  • Simple to use API client and DAPPER like querying.
  • tSQL Query language with support for field list, joins, top(count), where clause, grouping, aggregations, etc.

Client Connectivity?

Grab the nuget package for your project over at nuget.org.

Sample Data

Attaching sample data

Each download is a detached schema. To add one to your database:

  1. Extract the archive into a folder on the server (the folder is read by the server, not by the computer running the UI). For example, D:\Samples\WordList.
  2. Attach it, using either:
    • The management UI: right-click the schema to attach it under (for example Root), choose Attach Schema..., and select the extracted folder. This opens an ATTACH SCHEMA script in a new tab; check the name and run it.
    • SQL:
      ATTACH SCHEMA WordList FROM 'D:\Samples\WordList'
      

The folder is copied into the database, so the extracted files are left untouched and can be attached again (for example under another name). Attaching requires an administrator account

Management UI

image

SQL Server Migration Tool

We even included a tool to import your schema, data and indexes from SQL Server into Katzebase.

image

Supported Operating Systems

Katzebase runs on Windows and Linux (x64, arm64).

Technologies


Reliable Messaging Reliable Messaging

NTDLS.ReliableMessaging provides lightweight, simple, and high-performance TCP/IP based inter-process-communication / RPC functionality.


Delegate Thread Pooling Delegate Thread Pooling

NTDLS.DelegateThreadPooling is a high performance and predictable active thread pool where work items can be queued as delegate functions. Allowing for infinite FIFO worker items or enforce queue size, wait on collections of those items to complete, and total control over the pool size. Also allows for multiple pools, so that different workloads do not interfere with one another.


Semaphore Semaphore

NTDLS.Semaphore provides various classes to protect a variable from parallel / non-sequential thread access by always acquiring an exclusive lock on the resource. Also allows for shared access, pessimistic locking, optimistic locking and dead-lock prevention lock patterns with lightweight cancellation.


Expression Parser Expression Parser

NTDLS.ExpressionParser is a mathematics parsing engine. It supports expression nesting, custom variables, custom functions all standard mathematical operations for integer, decimal (floating point), logic and bitwise. It sits at the core of all Katzebase condition matches.


Fast Memory Cache Fast Memory Cache

NTDLS.FastMemoryCache provides fast and easy to use thread-safe partitioned memory cache for C# that helps manage the maximum size and track performance.


Secure Key Exchange Secure Key Exchange

NTDLS.SecureKeyExchange allows the server to generate single or multi-round Diffie-Hellman keys in C#.


Persistence Persistence

NTDLS.Persistence are helpers for reading and writing serialized objects to/from files. Helpful for configuration files.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. If you want to join the project, just email me (it's on my profile).

License

MIT

An unhandled error has occurred. Reload 🗙