{"id":23327987,"url":"https://github.com/andy-byers/calicodb","last_synced_at":"2025-08-22T22:32:42.689Z","repository":{"id":36992549,"uuid":"495483987","full_name":"andy-byers/CalicoDB","owner":"andy-byers","description":"A tiny embedded, transactional key-value database 🐱","archived":false,"fork":false,"pushed_at":"2023-09-25T02:43:45.000Z","size":4282,"stargazers_count":25,"open_issues_count":4,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2023-09-25T05:29:44.528Z","etag":null,"topics":["bplus-tree","cpp","cpp17","database","key-value-database","key-value-store","write-ahead-log"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andy-byers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-05-23T16:12:00.000Z","updated_at":"2023-09-28T08:40:47.586Z","dependencies_parsed_at":"2023-09-25T04:04:38.681Z","dependency_job_id":null,"html_url":"https://github.com/andy-byers/CalicoDB","commit_stats":null,"previous_names":[],"tags_count":2,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andy-byers%2FCalicoDB","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andy-byers%2FCalicoDB/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andy-byers%2FCalicoDB/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andy-byers%2FCalicoDB/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andy-byers","download_url":"https://codeload.github.com/andy-byers/CalicoDB/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230645357,"owners_count":18258530,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bplus-tree","cpp","cpp17","database","key-value-database","key-value-store","write-ahead-log"],"created_at":"2024-12-20T20:54:01.068Z","updated_at":"2024-12-20T20:54:01.523Z","avatar_url":"https://github.com/andy-byers.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CalicoDB\nCalicoDB is a tiny key-value database library written in C++17 and inspired by SQLite3.\nIt exposes a small API that allows transactional storage and retrieval of byte sequences from multiple key spaces.\nCalicoDB aims to be portable, flexible, and simple.\n\n![CI status badge](https://github.com/andy-byers/CalicoDB/actions/workflows/test.yml/badge.svg)\n\n+ [Disclaimer](#disclaimer)\n+ [Features](#features)\n+ [Caveats](#caveats)\n+ [Documentation](#documentation)\n+ [Requirements](#requirements)\n+ [Performance](#performance)\n+ [TODO](#todo)\n+ [Contributions](#contributions)\n\n## Disclaimer\nCalicoDB is under active development.\nIt is not ready for production, and the author is not a professional database developer.\nFeedback is appreciated!\n\n## Features\n+ Records are stored in buckets, each with an independent sorted range of keys\n+ All buckets are stored in the same file, similar to the SQLite database file format\n+ Supports multiple readers and a single writer simultaneously (readers have snapshot isolation)\n+ Per-bucket bidirectional iteration using cursors\n+ Live defragmentation is supported\n+ Allows nested buckets\n+ In-memory databases\n+ Virtual WAL interface\n\n## Caveats\n+ Keys, values, and bucket names are limited to roughly 2 GB in length\n+ Each connection is single-threaded, and blocking I/O is used\n+ Concurrent usage requires each connection to have its own `DB`\n+ Only practical for datasets that can reasonably be stored in a single file \n+ Platform must support shared-memory primitives (otherwise, may work in \"exclusive locking mode\")\n\n## Documentation\nCheck out the [docs](doc/doc.md).\n\n## Requirements\nThe library requires the following to compile:\n+ CMake version 3.14 or later\n+ C++ compiler with support for C++17\n  + GCC (\u003e= 7.0)\n  + Clang (\u003e= 5.0)\n\nThe tests depend on:\n+ `@google/googletest` (downloaded with CMake FetchContent)\n+ Python 3\n\n## Performance\nPerformance benchmarks are run in a [fork of LevelDB](https://github.com/andy-byers/leveldb/tree/db_bench_calicodb).\nRecent results can be found [here](https://github.com/andy-byers/leveldb/blob/db_bench_calicodb/benchmarks/results.md).\n\n## TODO\n1. Get everything code reviewed!\n2. Support Windows (write an `Env` implementation)\n\n## Documentation\nCheck out CalicoDB's [usage and design documents](doc).\nBuild instructions can be found [here](doc/doc.md#build).\n\n## Contributions\nContributions are welcome!\nCheck out this repo's issues or the [TODO section](#todo) for a list of things that need to be addressed.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandy-byers%2Fcalicodb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandy-byers%2Fcalicodb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandy-byers%2Fcalicodb/lists"}