{"repo":"thijsrijkers/solune","free":true,"listed":false,"github":"https://github.com/thijsrijkers/solune","clone":"git clone https://github.com/thijsrijkers/solune.git","description":"A NoSQL database","language":"Go","stars":12,"topics":["database","database-design","db","nosql","nosql-database","nosql-databases","nosqldb"],"license":"MIT","category":"databases-storage","readme_excerpt":"Solune - A NoSQL Database Solune is a TCP-based key-value database written in Go. It supports multiple named stores, JSON line commands ( get , set , delete ), process supervision, and disk-backed persistence in db/ .solstr . Roadmap items are tracked in doc/README.md . Highlights - TCP server on port 9000 by default - One JSON command per line - Multiple named stores - Auto-increment key assignment when set is called without key - Supervisor process that restarts worker on crash - Disk-backed storage with in-memory shard cache How Solune works At runtime, Solune starts three layers: 1. Launcher ( main.go ) - Builds worker and supervisor binaries. - Cleans up existing supervisor processes and port 9000 . - Starts the supervisor. 2. Supervisor ( cmd/supervisor ) - Starts the worker on the configured port. - Waits for worker exit and restarts it. - Handles shutdown signals and forwards them to worker. 3. Worker ( cmd/worker ) - Loads stores from db/ .solstr . - Starts TCP server and handles client commands. Persistence model Solune is disk-backed (not memory-only). - Each store is persisted in db/ .solstr . - File format is line-based: key,base64(value) . - On startup, stores are discovered from files in db/ . - set / update and delete currently rewrite store files via temp-file + rename. - In-memory shards cache values for fast access during runtime. Command protocol Send one JSON object per line over TCP. Allowed fields - instruction (string, required) - store (string, option","default_branch":null,"files":null,"tree":[],"storefront":"/r/thijsrijkers","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/thijsrijkers/solune/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}