{"id":20616479,"url":"https://github.com/evanxg852000/bitcaskcpp","last_synced_at":"2026-04-16T20:34:49.235Z","repository":{"id":46155544,"uuid":"367040195","full_name":"evanxg852000/bitcaskcpp","owner":"evanxg852000","description":null,"archived":false,"fork":false,"pushed_at":"2022-01-16T12:21:20.000Z","size":362,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-17T04:32:32.466Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/evanxg852000.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-05-13T12:22:15.000Z","updated_at":"2023-08-06T15:47:07.000Z","dependencies_parsed_at":"2022-09-11T15:31:01.818Z","dependency_job_id":null,"html_url":"https://github.com/evanxg852000/bitcaskcpp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evanxg852000%2Fbitcaskcpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evanxg852000%2Fbitcaskcpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evanxg852000%2Fbitcaskcpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evanxg852000%2Fbitcaskcpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/evanxg852000","download_url":"https://codeload.github.com/evanxg852000/bitcaskcpp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242269330,"owners_count":20100076,"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":[],"created_at":"2024-11-16T11:19:22.715Z","updated_at":"2025-12-05T20:02:16.438Z","avatar_url":"https://github.com/evanxg852000.png","language":"C++","readme":"# BitcaskC++\n[![Language](https://img.shields.io/badge/language-C++-blue.svg)](https://isocpp.org/) [![Standard](https://img.shields.io/badge/C%2B%2B-17-blue.svg)](https://en.wikipedia.org/wiki/C%2B%2B#Standardization) [![License](https://img.shields.io/badge/license-Apache%202-blue.svg)](https://opensource.org/licenses/MIT)\n\n[![Build Status](https://travis-ci.org/evanxg852000/bitcaskcpp.svg?branch=master)](https://travis-ci.org/evanxg852000/bitcaskcpp)\n\nBitcaskC++ is a c++ implementation of the bistcask storage format. You can find the\nreference paper at [Basho Tehcnology](https://riak.com/assets/bitcask-intro.pdf). This is a high performance \nkey/value store with a very high write throughput. it includes a library for embeding inside your application \nand a compatible server (wip). \n\n## Features\n\n* Embeddedable library `bitcaskcpp`\n* Builtin server (`bitcaskcpp-server`)\n* Predictable read/write performance\n* Low latency\n* High throughput\n\n## Is Bitcask right for me?\n\nBitcask is great for storing hundreds of thousands to millions of key/value pairs. It can be used when you need very high write throughput while maintaining predictable read throughput. I you are thinking of [LevelDb](https://github.com/google/leveldb), [RocksDB](http://rocksdb.org/) or any other key value store, then bitcask should \nbe a great option to consider. It's important to note that bistcask keeps all its keys in memory. if your \nexpected keyspace does not fit in RAM, Bitcask might not be the right storage engine for you. Note that this \nonly concerns the keys not the values.\n\n\n## Development\n\nYou can develop inside a docker container using GCC9 and connan. \n\n```bash\nBUIDKIT=1 docker build -t cppimage .\ndocker run -it -v \"$PWD\":\"/home/connan/project\" cppimage bash\n./entrypoint.sh install\n./entrypoint.sh build\n./entrypoint.sh test\n```\n\n```bash\nBUIDKIT=1 docker build -t cppimage .\ndocker run -it -v \"$PWD\":\"/home/connan/project\" cppimage\nconan install ..  -s build_type=Release --build\ncmake .. -G \"Unix Makefiles\" -DCMAKE_BUILD_TYPE=Release\ncmake --build .\n``` \n\n## Depends on:\n\n* [Adaptive Radix Tree](https://github.com/rafaelkallis/adaptive-radix-tree)\n* [CRC32](https://github.com/google/crc32c)\n* [Cxx-Opts](https://github.com/jarro2783/cxxopts/)\n* [Crow](https://github.com/CrowCpp/crow)\n* [Picobench](https://github.com/iboB/picobench)\n* [Plog](https://github.com/SergiusTheBest/plog)\n\nTODO:\n- [ ] benchmark\n- [ ] test concurency\n- [ ] add crc \u0026 compaction trigger option \n\n```\n===============================================================================\n   Name (baseline is *)   |   Dim   |  Total ms |  ns/op  |Baseline| Ops/second\n===============================================================================\n           bistcask_put * |       8 |     0.030 |    3811 |      - |   262381.1\n             bistcask_get |       8 |     0.043 |    5373 |  1.410 |   186085.5\n           bistcask_put * |      64 |     0.178 |    2788 |      - |   358593.6\n             bistcask_get |      64 |     0.323 |    5046 |  1.810 |   198147.9\n           bistcask_put * |     512 |     1.404 |    2742 |      - |   364658.6\n             bistcask_get |     512 |     2.299 |    4491 |  1.638 |   222661.0\n           bistcask_put * |    4096 |     8.861 |    2163 |      - |   462255.8\n             bistcask_get |    4096 |    13.229 |    3229 |  1.493 |   309629.5\n           bistcask_put * |    8192 |    15.843 |    1934 |      - |   517059.5\n             bistcask_get |    8192 |    24.587 |    3001 |  1.552 |   333177.9\n===============================================================================\n```\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevanxg852000%2Fbitcaskcpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevanxg852000%2Fbitcaskcpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevanxg852000%2Fbitcaskcpp/lists"}