rmake sure people know this is meant to be production capable
This commit is contained in:
@@ -20,7 +20,7 @@ JormunDB is a DynamoDB-compatible database server that speaks the DynamoDB wire
|
|||||||
|
|
||||||
1. **Zero allocation ceremony** - No explicit `defer free()` or error handling for every allocation
|
1. **Zero allocation ceremony** - No explicit `defer free()` or error handling for every allocation
|
||||||
2. **Binary storage** - Efficient TLV encoding instead of JSON
|
2. **Binary storage** - Efficient TLV encoding instead of JSON
|
||||||
3. **API compatibility** - Drop-in replacement for DynamoDB Local
|
3. **API compatibility** - Drop-in replacement for DynamoDB
|
||||||
4. **Performance** - RocksDB-backed with efficient key encoding
|
4. **Performance** - RocksDB-backed with efficient key encoding
|
||||||
|
|
||||||
## Why Odin?
|
## Why Odin?
|
||||||
|
|||||||
@@ -170,10 +170,10 @@ sudo apt install awscli
|
|||||||
aws --version
|
aws --version
|
||||||
```
|
```
|
||||||
|
|
||||||
### Configure AWS CLI (for local use)
|
### Configure AWS CLI
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Set dummy credentials (required but not checked by JormunDB)
|
# Set dummy credentials (required but not checked by JormunDB yet)
|
||||||
aws configure
|
aws configure
|
||||||
# AWS Access Key ID: dummy
|
# AWS Access Key ID: dummy
|
||||||
# AWS Secret Access Key: dummy
|
# AWS Secret Access Key: dummy
|
||||||
@@ -407,13 +407,10 @@ brew upgrade odin # macOS
|
|||||||
- Read [ARCHITECTURE.md](ARCHITECTURE.md) for internals
|
- Read [ARCHITECTURE.md](ARCHITECTURE.md) for internals
|
||||||
- Check [TODO.md](TODO.md) for implementation status
|
- Check [TODO.md](TODO.md) for implementation status
|
||||||
- Browse source code in `dynamodb/`, `rocksdb/`, etc.
|
- Browse source code in `dynamodb/`, `rocksdb/`, etc.
|
||||||
- Contribute! See [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
||||||
|
|
||||||
## Getting Help
|
## Getting Help
|
||||||
|
|
||||||
- **Issues**: https://github.com/yourusername/jormundb/issues
|
There is absolutely no support at this time
|
||||||
- **Discussions**: https://github.com/yourusername/jormundb/discussions
|
|
||||||
- **Odin Discord**: https://discord.gg/sVBPHEv
|
|
||||||
|
|
||||||
## Benchmarking
|
## Benchmarking
|
||||||
|
|
||||||
@@ -431,11 +428,7 @@ ab -n 10000 -c 100 -p item.json -T application/json \
|
|||||||
|
|
||||||
## Production Deployment
|
## Production Deployment
|
||||||
|
|
||||||
JormunDB is designed for **local development only**. For production, use:
|
JormunDB is not ready for production use just yet. But there will be easy package installs, as well as a container and a helm chart
|
||||||
|
|
||||||
- AWS DynamoDB (managed service)
|
|
||||||
- DynamoDB Accelerator (DAX)
|
|
||||||
- ScyllaDB (DynamoDB-compatible)
|
|
||||||
|
|
||||||
## Uninstalling
|
## Uninstalling
|
||||||
|
|
||||||
@@ -449,9 +442,3 @@ make uninstall
|
|||||||
# Remove data directory
|
# Remove data directory
|
||||||
rm -rf ./data
|
rm -rf ./data
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Happy coding! 🚀**
|
|
||||||
|
|
||||||
For questions or issues, please open a GitHub issue or join our Discord.
|
|
||||||
|
|||||||
10
README.md
10
README.md
@@ -12,7 +12,7 @@ A high-performance, DynamoDB-compatible database server written in Odin, backed
|
|||||||
|
|
||||||
## What is JormunDB?
|
## What is JormunDB?
|
||||||
|
|
||||||
JormunDB (formerly ZynamoDB) is a local DynamoDB replacement that speaks the DynamoDB wire protocol. Point your AWS SDK or CLI at it and use it as a drop-in development database.
|
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.
|
**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.
|
||||||
|
|
||||||
@@ -292,13 +292,9 @@ Ensure you're using the correct DynamoDB JSON format:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
MIT License - see LICENSE file for details.
|
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
- Inspired by DynamoDB Local
|
- Inspired by DynamoDB
|
||||||
- Built with [Odin](https://odin-lang.org/)
|
- Built with [Odin](https://odin-lang.org/)
|
||||||
- Powered by [RocksDB](https://rocksdb.org/)
|
- Powered by [RocksDB](https://rocksdb.org/)
|
||||||
- Originally implemented as ZynamoDB in Zig
|
- Originally implemented as ZynamoDB in Zig
|
||||||
@@ -314,4 +310,4 @@ Contributions welcome! Please:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Why "Jormun"?** Jörmungandr, the World Serpent from Norse mythology—a fitting name for something that wraps around your data. Also, it sounds cool.
|
**Why "Jormun"?** Jörmungandr, the World Serpent from Norse mythology—a fitting name for something built in a language called Odin. Also, it sounds cool.
|
||||||
|
|||||||
7
TODO.md
7
TODO.md
@@ -69,7 +69,12 @@ This tracks the rewrite from Zig to Odin and remaining features.
|
|||||||
- ADD operations
|
- ADD operations
|
||||||
- DELETE operations
|
- DELETE operations
|
||||||
|
|
||||||
### Replication Support (Priority 4)
|
### Credential Support (Priority 4)
|
||||||
|
|
||||||
|
- [ ] **Support a way to configure AWS compatible credentials.**
|
||||||
|
- This is very important because remember when mongo didn't come with a root password by default and everyone who had the port open to the world got their DB ransomed? Yeah, we don't want that to happen
|
||||||
|
|
||||||
|
### Replication Support (Priority 5)
|
||||||
|
|
||||||
- [ ] **Build C++ Shim in order to use RocksDB's WAL replication helpers**
|
- [ ] **Build C++ Shim in order to use RocksDB's WAL replication helpers**
|
||||||
- [ ] **Add configurator to set instance as a master or slave node and point to proper Target and Destination IPs**
|
- [ ] **Add configurator to set instance as a master or slave node and point to proper Target and Destination IPs**
|
||||||
|
|||||||
Reference in New Issue
Block a user