33 lines
1.6 KiB
Markdown
33 lines
1.6 KiB
Markdown
<p align="center">
|
|
<img src="https://artifacts.ewr1.vultrobjects.com/jormundb.png" alt="JormunDB logo" width="220" />
|
|
</p>
|
|
|
|
<h1 align="center">JormunDB</h1>
|
|
|
|
<p align="center">
|
|
A high-performance, DynamoDB-compatible database server written in Odin, backed by RocksDB.
|
|
<br />
|
|
<strong>DynamoDB-Compatible Database</strong> · Powered by <strong>RocksDB</strong> + <strong>Odin</strong>
|
|
</p>
|
|
|
|
---
|
|
|
|
## What is JormunDB?
|
|
|
|
JormunDB (formerly ZynamoDB) is a Self-Hosted DynamoDB replacement that speaks the DynamoDB wire protocol. Point your AWS SDK or CLI at it and use it as a drop-in replacement.
|
|
|
|
**Why Odin?** The original Zig implementation suffered from explicit allocator threading—every function taking an `allocator` parameter, every allocation needing `errdefer` cleanup. Odin's implicit context allocator system eliminates this ceremony: one `context.allocator = arena_allocator` at the request handler entry and everything downstream just works.
|
|
|
|
## Features
|
|
|
|
- ✅ **DynamoDB Wire Protocol**: Works with AWS SDKs and CLI out of the box
|
|
- ✅ **Binary Storage**: Efficient TLV encoding for items, varint-prefixed keys
|
|
- ✅ **Arena-per-Request**: Zero explicit memory management in business logic
|
|
- ✅ **Table Operations**: CreateTable, DeleteTable, DescribeTable, ListTables
|
|
- ✅ **Item Operations**: PutItem, GetItem, DeleteItem
|
|
- ✅ **Query & Scan**: With pagination support (Limit, ExclusiveStartKey)
|
|
- ✅ **Expression Parsing**: KeyConditionExpression for Query operations
|
|
- ✅ **Persistent Storage**: RocksDB-backed with full ACID guarantees
|
|
- ✅ **Concurrency**: Table-level RW locks for safe concurrent access
|
|
|