{"id":21005912,"url":"https://github.com/nitisht/erasure-decoding","last_synced_at":"2025-03-13T14:42:54.683Z","repository":{"id":118520254,"uuid":"111106441","full_name":"nitisht/erasure-decoding","owner":"nitisht","description":"Simple tool to understand read quorum and data/parity shards used in reedsoloman based erasure coding.","archived":false,"fork":false,"pushed_at":"2017-11-20T10:26:45.000Z","size":7,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-20T10:28:28.831Z","etag":null,"topics":["erasure-coding","reed-solomon"],"latest_commit_sha":null,"homepage":"","language":"Go","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/nitisht.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":"2017-11-17T13:28:15.000Z","updated_at":"2021-02-28T16:19:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"f2752aed-5ba0-4c70-bf3d-858afcfbb105","html_url":"https://github.com/nitisht/erasure-decoding","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/nitisht%2Ferasure-decoding","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitisht%2Ferasure-decoding/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitisht%2Ferasure-decoding/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nitisht%2Ferasure-decoding/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nitisht","download_url":"https://codeload.github.com/nitisht/erasure-decoding/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243428421,"owners_count":20289315,"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":["erasure-coding","reed-solomon"],"created_at":"2024-11-19T08:48:37.214Z","updated_at":"2025-03-13T14:42:54.655Z","avatar_url":"https://github.com/nitisht.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# erasure-decoding\n\nSimple tool to understand read quorum and data/parity shards used in [reedsoloman](https://github.com/klauspost/reedsolomon) based erasure coding.\n\nThis tool calculates all possible data and parity shards based on given total number of shards. It also calculates the space used by total shards\nafter erasure-coding and gives you a disk space utilization ratio (disk space used after erasure-encoding/input file size). Finally it sets the\nparity shards to nil and tries to reconstruct the data, until reconstruction is not possible. This gives you the read quorum required for the given\nconfiguration.\n\nFollow are the assumptions made by this tool:\n\n1. Total Shards is always an even number, greater than 3, less than 257.\n2. Parity Shards are at least 2.\n3. Data Shards are always greater than or equal to Parity Shards.\n\n## Usage\nBuild the binary using\n\n```sh\ngo build erasure.go\n\n```\n\nRun using\n\n```sh\n./erasure -t=6 -f=testfile.txt\n```\n\nThe binary accepts two flags,\n\n- t: Total number of data and parity shards. By default this is set to 6.\n- f: Input file to encode using erasure-coding. By default this [testfile](./testfile.txt) is used.\n- r: Show the read quorum for given configuration. By default set to `false`.\n\nHere is the sample output for given default values\n\n```sh\nInput file size: 220 bytes, Total shards: 6\n\n+-------------+---------------+---------------------+\n| DATA SHARDS | PARITY SHARDS | STORAGE USAGE RATIO |\n+-------------+---------------+---------------------+\n|           3 |             3 |                2.02 |\n|           4 |             2 |                1.50 |\n+-------------+---------------+---------------------+\n``` ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitisht%2Ferasure-decoding","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnitisht%2Ferasure-decoding","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnitisht%2Ferasure-decoding/lists"}