{"id":13672549,"url":"https://github.com/frugalos/cannyls","last_synced_at":"2025-04-07T09:20:07.675Z","repository":{"id":47065889,"uuid":"153277923","full_name":"frugalos/cannyls","owner":"frugalos","description":"An embedded persistent key-value storage for Rust that is optimized for random-access workload and huge-capacity HDD","archived":false,"fork":false,"pushed_at":"2021-09-15T03:04:38.000Z","size":268,"stargazers_count":113,"open_issues_count":17,"forks_count":15,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-04-27T02:26:02.394Z","etag":null,"topics":["embedded-database","key-value-store","local-storage","rust"],"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/frugalos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-10-16T11:58:25.000Z","updated_at":"2024-03-28T15:54:00.000Z","dependencies_parsed_at":"2022-09-03T17:21:19.324Z","dependency_job_id":null,"html_url":"https://github.com/frugalos/cannyls","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frugalos%2Fcannyls","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frugalos%2Fcannyls/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frugalos%2Fcannyls/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frugalos%2Fcannyls/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/frugalos","download_url":"https://codeload.github.com/frugalos/cannyls/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247622983,"owners_count":20968575,"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":["embedded-database","key-value-store","local-storage","rust"],"created_at":"2024-08-02T09:01:38.926Z","updated_at":"2025-04-07T09:20:07.647Z","avatar_url":"https://github.com/frugalos.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"cannyls\n=======\n\n[![Crates.io: cannyls](https://img.shields.io/crates/v/cannyls.svg)](https://crates.io/crates/cannyls)\n[![Documentation](https://docs.rs/cannyls/badge.svg)](https://docs.rs/cannyls)\n[![Build Status](https://travis-ci.org/frugalos/cannyls.svg?branch=master)](https://travis-ci.org/frugalos/cannyls)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\nCannyLS is an embedded and persistent key-value storage optimized for random-access workload and huge-capacity HDD.\n\nCannyLS mainly has following features:\n- A local storage for storing objects that called as [\"lump\"][lump]:\n  - Basically, a lump is a simple key-value entry\n  - The distinctive properties are that the key is **fixed length (128 bits)** and suited for storing a relatively large size value (e.g., several MB)\n- Provides simple functionalities:\n  - Basically, the only operations you need to know are `PUT`, `GET` and `DELETE`\n  - But it supports [deadline based I/O scheduling] as an advanced feature\n- Optimized for random-access workload on huge-capacity HDD (up to 512 TB):\n  - See [Benchmark Results] for more details about performance\n- Aiming to provide predictable and stable read/write latency:\n  - There are (nearly) strict upper bounds about the number of disk accesses issued when executing operations\n    - One disk access when `PUT` and `DELETE`, and two when `PUT`\n  - There are no background processings like compaction and stop-the-world GC which may block normal operations for a long time\n  - For eliminating overhead and uncertainty, CannyLS has no caching layer:\n    - It uses [Direct I/O] for bypassing OS layer caching (e.g., page cache)\n    - If you need any caching layer, it is your responsibility to implement it\n- Detailed metrics are exposed using [Prometheus]\n\nSee [Wiki] for more details about CannyLS.\n\n[lump]: https://github.com/frugalos/cannyls/wiki/Terminology#lump\n[Benchmark Results]: https://github.com/frugalos/cannyls/wiki/Benchmark\n[Prometheus]: https://prometheus.io/\n[deadline based I/O scheduling]: https://github.com/frugalos/cannyls/wiki/I-O-Scheduling-based-on-Request-Deadlines\n[Direct I/O]: https://github.com/frugalos/cannyls/wiki/Terminology#ダイレクトio\n[Wiki]: https://github.com/frugalos/cannyls/wiki\n\n\nDocumentation\n-------------\n\n- [Rustdoc](https://docs.rs/cannyls)\n- [Wiki (Japanese only)][Wiki]\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrugalos%2Fcannyls","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrugalos%2Fcannyls","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrugalos%2Fcannyls/lists"}