github.com

I have been working in the database field for a significant amount of time; however, I never had the opportunity to work on the core of a database—until now. I am excited to introduce AnuDB, a document-oriented database built using RocksDB for persistence.

Given my background in embedded Linux platforms, I conceptualized running a database on embedded systems. While there are several databases available in the market, most high-quality solutions cater primarily to enterprise customers. Although some databases exist for embedded platforms, they come with various limitations. AnuDB aims to address this gap, specifically targeting the IoT domain, where frequent data streaming and storage are essential.

AnuDB leverages RocksDB’s LSM tree-based architecture as its storage engine, ensuring efficient handling of high-throughput workloads. The project includes JSON-based APIs for CRUD operations, with enforced indexing for document retrieval. The indexing mechanism is implemented using prefix extractors in RocksDB—further details can be found in the Collection class of AnuDB.

I invite you to explore the GitHub repository:https://github.com/hash-anu/AnuDB. Your insights and feedback would be invaluable in refining and improving the project. I look forward to hearing your thoughts!

4
5
hashmak_jsn 8 hours ago

Added example files demonstrating the usage of AnuDB.

hashmak_jsn 1 day ago

I am currently expanding the example repository for AnuDB at https://github.com/hash-anu/AnuDB/tree/main. Additional example files are being added to help you gain a comprehensive understanding of AnuDB's features and implementation patterns. Please check the repository regularly for updates.

Rochus 1 day ago

Cool. You write "C++11 >= compatible compiler (GCC 4.8+ or Clang 3.4+)". From that can I conclude that you are using an older version of RocksDB (more recent versions require C++17)? Which version? What's the motivation for an older version?

hashmak_jsn 1 day ago

Yes, I am using an older rocksdb version 6.29.5 that was released in 2022. The main reason for this choice is that many embedded products still rely on C++11 for application development.Additionally, it offers backward compatibility, making it a practical and stable choice for such applications.

Rochus 1 day ago

That makes sense, thanks.