{"id":13459711,"url":"https://github.com/rosedblabs/mini-bitcask","last_synced_at":"2025-12-15T15:04:06.312Z","repository":{"id":41383640,"uuid":"381349834","full_name":"rosedblabs/mini-bitcask","owner":"rosedblabs","description":"(Chinese) rosedb 的 mini 版本，帮助理解 bitcask 存储模型以及 rosedb 项目。","archived":false,"fork":false,"pushed_at":"2024-08-07T13:03:37.000Z","size":23,"stargazers_count":466,"open_issues_count":0,"forks_count":88,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-11-09T02:15:40.720Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rosedblabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-29T12:03:50.000Z","updated_at":"2025-11-06T07:46:13.000Z","dependencies_parsed_at":"2024-01-23T17:15:29.462Z","dependency_job_id":"b2692b9e-6fcf-46ba-bd80-a7be221f8a76","html_url":"https://github.com/rosedblabs/mini-bitcask","commit_stats":null,"previous_names":["rosedblabs/minidb","roseduan/minidb","rosedblabs/mini-bitcask","flower-corp/minidb"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rosedblabs/mini-bitcask","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rosedblabs%2Fmini-bitcask","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rosedblabs%2Fmini-bitcask/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rosedblabs%2Fmini-bitcask/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rosedblabs%2Fmini-bitcask/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rosedblabs","download_url":"https://codeload.github.com/rosedblabs/mini-bitcask/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rosedblabs%2Fmini-bitcask/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27753048,"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","status":"online","status_checked_at":"2025-12-15T02:00:09.782Z","response_time":96,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-07-31T10:00:26.502Z","updated_at":"2025-12-15T15:04:06.278Z","avatar_url":"https://github.com/rosedblabs.png","language":"Go","funding_links":[],"categories":["语言资源库"],"sub_categories":["go"],"readme":"# mini-bitcask\n\nrosedb 的 mini 版本，帮助理解 bitcask 存储模型以及 rosedb 项目。\n\n需要说明的是，mini-bitcask 没有实现 bitcask 模型的多个数据文件的机制，为了简单，我只使用了一个数据文件进行读写。但这并不妨碍你理解 bitcask 模型。\n\n我写了一篇文章对 mini-bitcask 进行讲解：[从零实现一个 k-v 存储引擎](https://mp.weixin.qq.com/s/s8s6VtqwdyjthR6EtuhnUA)，相信结合文章及 mini-bitcask 的简单的代码，你能够快速上手了。\n\u003e 文章中叫 minidb，但是后来觉得不妥，现已更名为 mini-bitcask\n\n## reference\n\n### bitcask 模型的论文\n\n[https://riak.com/assets/bitcask-intro.pdf](https://riak.com/assets/bitcask-intro.pdf)\n\n### rosedb 项目\n\n[rosedb](https://github.com/roseduan/rosedb)\n\n## Usage\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/roseduan/minibitcask\"\n)\n\nfunc main() {\n\tdb, err := minibitcask.Open(\"/tmp/minibitcask\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tvar (\n\t\tkey   = []byte(\"dbname\")\n\t\tvalue = []byte(\"minibitcask\")\n\t)\n\n\terr = db.Put(key, value)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Printf(\"1. put kv successfully, key: %s, value: %s.\\n\", string(key), string(value))\n\n\tcur, err := db.Get(key)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Printf(\"2. get value of key %s, the value of key %s is %s.\\n\", string(key), string(key), string(cur))\n\n\terr = db.Del(key)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Printf(\"3. delete key %s.\\n\", string(key))\n\n\tdb.Merge()\n\tfmt.Println(\"4. compact data to new dbfile.\")\n\n\tdb.Close()\n\tfmt.Println(\"5. close minibitcask.\")\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frosedblabs%2Fmini-bitcask","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frosedblabs%2Fmini-bitcask","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frosedblabs%2Fmini-bitcask/lists"}