{"id":36699587,"url":"https://github.com/iovation/flockd","last_synced_at":"2026-01-12T11:36:58.389Z","repository":{"id":71289597,"uuid":"124302676","full_name":"iovation/flockd","owner":"iovation","description":"Simple file system-based key/value Go database library that uses file locking for concurrency safety","archived":false,"fork":false,"pushed_at":"2021-02-22T18:48:36.000Z","size":97,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-08-14T15:45:46.939Z","etag":null,"topics":["concurrency-safety","database","flock","key-value","key-value-store","lock","sync"],"latest_commit_sha":null,"homepage":"https://godoc.org/github.com/iovation/flockd","language":"Go","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/iovation.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-07T22:33:32.000Z","updated_at":"2023-04-24T03:50:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"d7633414-1b9d-455b-940d-0b11cafaedc8","html_url":"https://github.com/iovation/flockd","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/iovation/flockd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iovation%2Fflockd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iovation%2Fflockd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iovation%2Fflockd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iovation%2Fflockd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iovation","download_url":"https://codeload.github.com/iovation/flockd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iovation%2Fflockd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28338971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T10:58:46.209Z","status":"ssl_error","status_checked_at":"2026-01-12T10:58:42.742Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["concurrency-safety","database","flock","key-value","key-value-store","lock","sync"],"created_at":"2026-01-12T11:36:58.332Z","updated_at":"2026-01-12T11:36:58.381Z","avatar_url":"https://github.com/iovation.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"flockd 0.3.1\n============\n\n[![Build Status](https://github.com/iovation/flockd/workflows/CI%2fCD/badge.svg)](https://github.com/iovation/flockd/actions/)\n[![Coverage Status](https://coveralls.io/repos/github/iovation/flockd/badge.svg)](https://coveralls.io/github/iovation/flockd)\n[![GoDoc](https://godoc.org/github.com/iovation/flockd?status.svg)](https://godoc.org/github.com/iovation/flockd)\n[![License](https://img.shields.io/github/license/iovation/flockd.svg)](https://github.com/iovation/flockd/blob/master/LICENSE.md)\n\nflockd provides a simple file system-based key/value database that uses file\nlocking for concurrency safety. Keys correspond to files, values to their\ncontents, and tables to directories. Files are share-locked on read (Get and\nForEach) and exclusive-locked on write (Set, Create, Update, and Delete).\n\nThis may be overkill if you have only one application using a set of files in a\ndirectory. But if you need to sync files between multiple systems, like a\ndistributed database, assuming your sync software respects file system locks,\nflockd might be a great way to go. This is especially true for modestly-sized\ndatabases and databases with a single primary instance and multiple read-only\nsecondary instances.\n\nIn any event, your file system must support proper file locking for this to\nwork. If your file system does not, it might still work if file renaming and\nunlinking is atomic and flockd is used exclusively to access files. If not, then\nall bets are off, and you can expect occasional bad reads.\n\nAll of this may turn out to be a bad idea. YMMV. Warranty not included.\n\nInspirations\n------------\n\n*   [diskv](https://github.com/peterbourgon/diskv): Similar use of one file per\n    key/value pair. Uses a sync.RWMutex for concurrency protection. Lots of\n    features, including path transformation, caching, and compression.\n\n*   [fskv](https://github.com/nickalie/fskv): Use of buckets similar to Tables\n    here (I stole the idea, really). Relies on temporary files for locking.\n    Depends on [afero](https://github.com/spf13/afero) for file management.\n\n*   [Scribble](https://github.com/nanobox-io/golang-scribble): Uses a single\n    JSON file for the database. Relies on sync.Mutex for concurrency control.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiovation%2Fflockd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiovation%2Fflockd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiovation%2Fflockd/lists"}