{"id":13672448,"url":"https://github.com/WyattJia/Pomegranate","last_synced_at":"2025-04-27T22:32:19.350Z","repository":{"id":151359530,"uuid":"270331892","full_name":"WyattJia/Pomegranate","owner":"WyattJia","description":"🌳 A tiny skiplist based log-structured merge-tree written in Rust.","archived":false,"fork":false,"pushed_at":"2023-12-21T16:04:26.000Z","size":5313,"stargazers_count":26,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2024-11-11T10:42:28.249Z","etag":null,"topics":["kv","kvstore","lsm","lsm-tree","rust","skiplist","storage"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/WyattJia.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-07T14:30:36.000Z","updated_at":"2024-10-24T11:39:59.000Z","dependencies_parsed_at":"2024-11-11T10:32:17.158Z","dependency_job_id":"3be336ff-cda7-47ac-abc4-9654db87c74c","html_url":"https://github.com/WyattJia/Pomegranate","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/WyattJia%2FPomegranate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WyattJia%2FPomegranate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WyattJia%2FPomegranate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WyattJia%2FPomegranate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WyattJia","download_url":"https://codeload.github.com/WyattJia/Pomegranate/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251219601,"owners_count":21554444,"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":["kv","kvstore","lsm","lsm-tree","rust","skiplist","storage"],"created_at":"2024-08-02T09:01:35.915Z","updated_at":"2025-04-27T22:32:15.849Z","avatar_url":"https://github.com/WyattJia.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"![](./image/pomegranate.jpg)\n\n# Pomegranate(石榴)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n![travis-ci](https://travis-ci.com/wellls/Pomegranate.svg?branch=develop)\n\nPomegranate is a tiny and fast log-structured merge-tree written in Rust.\n\n**Pomegranate is still under development.**\n\n## Why Rust?\n\nBecause Rust is a memory-safe, concurrency-friendly, high-performance programming language, and it also has rich and modern language features.\nBased on its feature, I think it is very suitable for the development of storage application.\n\n## Design\n\n#### Memory Buffer\n\nThe memory buffer consists of *R* runs. In the slsm, one run corresponds to one skiplsit.\nOnly one *run* is activate at any time.\n\n#### Skiplist\n\nSkiplists are probabilistic data structures that provide for fast search within an orderedsequence of values. ey are composed of decreasingly sparse sorted runs of values thatare set in parallel, so that a search consists of searching a run until a key is found that isgreater than the desired one, then repeating the same process on the next-densest run,until the correct key is found.\n\n#### Memory Buffer Index\n\nBloom lters nd important use in the sLSM when pairedone-to-one with runs in memory and on disk.\n\n#### Disk Storage \n\nThe disk-backed store is for more permanent storage and is only touched by merges fromthe memory buffer. ere areLdisk levels, each withDruns on each level. A run isan immutable sequence of sorted key-value pairs, and is captured within one memory-mapped le on disk.\n\n## How to run\n\n*Note: before you run, you should install Rust and Cargo first.*\n\n```bash\ngit clone https://github.com/wellls/Pomegranate.git\n\ncd /path/to/Pomegranate\n\ncargo build\n```\n\n## Reference\n\n* [Log-structured merge-tree](https://en.wikipedia.org/wiki/Log-structured_merge-tree)\n* [The Skiplist-Based LSM Tree](https://arxiv.org/pdf/1809.03261.pdf)\n* [Rust-lang](https://www.rust-lang.org/)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWyattJia%2FPomegranate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FWyattJia%2FPomegranate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWyattJia%2FPomegranate/lists"}