# QuaDB
[](https://crates.io/crates/quadb)
[](https://docs.rs/quadb)
[](https://www.rust-lang.org/)
[](https://opensource.org/license/mit/)
This project is in the very early stages of development and is nowhere near ready for use.
## Description
QuadDB is an asynchronous octree manager implemented over [`redb`](https://docs.rs/redb), designed for efficient storage and retrieval of spatial data from disk. Binary encoding is handled using [`bincode`](https://docs.rs/bincode) for compactness and speed.
## Project Vision
The goal of QuadDB is to provide a robust and efficient solution for managing and updating large spatial datasets, particularly in simulations. The use-case envisioned is for graduate students working on simulations that need to manipulate huge datasets involving particle systems or fluid dynamics where memory size is a constraint and access to a supercomputer is not feasible.
| $2^n$-Tree Backend | :construction: In progress |
| Basic CRUD Operations | :construction: In progress |
| Leaf Streaming | :turtle: Planned |
| Documentation | :turtle: Planned |
| $kd$-Tree Backend | :turtle: Planned |
**$2^n$-Tree Backend**: An implementation of a generalised octree structure.
**Basic *CRUD* operations**: Creating, reading, updating and deleting entities in the database file.
**Leaf Streaming**: Dynamically retrieving leaf nodes from the database as requests are made through the CRUD interface.
**Documentation**: Robust documentation once the API is frozen.
**$kd$-Tree Backend**: An implementation of tree structures that do not form new leaf nodes by equally bipartitioning the space. Allows for custom bipartitioning schemes.
## License
This work is distributed under the MIT License. Dependencies either direct or indirect may have different licenses, so all of them have been reproduced in the THIRD-PARTY-LICENSES.md file at the root of this repository.