UrnaDB is a NoSQL database written in Go that provides support for diverse data types and transaction capabilities. The project is designed as an embedded database and key-value store with comprehensive storage engine functionality, ACID compliance, indexing, and concurrency support. The repository is maintained primarily by auula, who has driven 21 tracked events, with additional contributions from guowei-gong and mobailabs.
The database implements multiple built-in data structures optimized for high throughput and low latency, with particular emphasis on efficient batch data writing. UrnaDB supports disk-based data storage with garbage collection capabilities for reclaiming disk space. The system includes disk data encryption at rest and data compression features to optimize storage efficiency. Security is addressed through IP whitelist functionality that controls access to the database, and all data operations are performed through a RESTful API protocol accessible via HTTP clients.
The core storage engine uses an append-only log approach for writing all operations to data files. The underlying virtual file system, contained in the vfs package, has been benchmarked on Intel i5-7360U hardware with 8GB LPDDR3 RAM to demonstrate write performance characteristics. The project includes a tools.sh script in the root directory to assist with various development and operational tasks.
UrnaDB exposes data interaction through RESTful APIs, making it accessible to any HTTP-capable client. The database abstracts multiple data structure types including Table, Record, Variant, and Lock types that map to common programming patterns. The Table structure functions similarly to relational database tables, automatically assigning globally unique incrementing identifiers to records and supporting semi-structured data storage comparable to struct and class fields in programming languages. Data operations follow standard HTTP conventions with PUT for creation, GET for retrieval, and DELETE for removal.
The project provides official SDKs for client integration, with Java SDK support highlighted as the recommended approach over direct HTTP interaction. The Java SDK enables lambda-style functional programming for data operations, supporting SQL-like operations including INSERT, UPDATE, DELETE, and SELECT functionality through a fluent API interface. Comprehensive documentation is available at the official website urnadb.github.io.
GitGenius activity tracking shows rapid issue and pull request response times, with a median latency of 0.0 hours and mean latency of 1.1 hours across nine tracked items. The most active issue labels include enhancement requests and duplicate reports. The repository maintains connections with other projects through overlapping contributors, including links to dapr/dapr, highlightjs/highlight.js, and wazero/wazero. The project supports both Docker deployment for quick testing and bare-metal Linux deployment for production use with optimizable storage engine parameters.