{"id":31756744,"url":"https://github.com/ebay/homestore","last_synced_at":"2025-10-09T19:22:57.795Z","repository":{"id":65028933,"uuid":"572703565","full_name":"eBay/HomeStore","owner":"eBay","description":"Storage Engine for block and key/value stores.","archived":false,"fork":false,"pushed_at":"2025-09-24T09:56:45.000Z","size":12253,"stargazers_count":25,"open_issues_count":66,"forks_count":24,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-09-24T11:47:47.027Z","etag":null,"topics":["storage-engine"],"latest_commit_sha":null,"homepage":"","language":"C++","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/eBay.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-11-30T21:13:26.000Z","updated_at":"2025-09-24T09:56:51.000Z","dependencies_parsed_at":"2023-09-28T00:23:46.537Z","dependency_job_id":"0b89a8fe-1509-4a78-bbc8-9b031d516b4e","html_url":"https://github.com/eBay/HomeStore","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/eBay/HomeStore","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eBay%2FHomeStore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eBay%2FHomeStore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eBay%2FHomeStore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eBay%2FHomeStore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eBay","download_url":"https://codeload.github.com/eBay/HomeStore/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eBay%2FHomeStore/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001978,"owners_count":26083243,"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-10-09T02:00:07.460Z","response_time":59,"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":["storage-engine"],"created_at":"2025-10-09T19:22:56.300Z","updated_at":"2025-10-09T19:22:57.789Z","avatar_url":"https://github.com/eBay.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HomeStore\n[![Conan Build](https://github.com/eBay/HomeStore/actions/workflows/merge_build.yml/badge.svg?branch=master)](https://github.com/eBay/HomeStore/actions/workflows/merge_build.yml)\n[![CodeCov](https://codecov.io/gh/eBay/homestore/branch/master/graph/badge.svg)](https://codecov.io/gh/eBay/homestore)\n\nHomestore is a generic *StorageEngine* upon which different *StorageSolution*s can be built. These Solutions can model\nBlock, K/V, Object or Database *StorageInterface*s.\n\nThe architecture is tuned towards modern storage devices and systems programming leveraging the \"run to completion\"\nmodel provided by [IOManager](https://github.com/eBay/IOManager) to achieve \"light-speed\" performance. Homestore has a\npluggable model throughout making it easy to extend the functionality, tuned to specific use cases or data patterns.\n\nA reference Object *StorageSolution* can be found in [HomeObject](https://github.com/eBay/HomeObject).\n\n## Building Blocks\nSeveral building blocks are provided by Homestore that should satisfy the majority cases for any given storage\nsolution. Each \"service\" provides a crash-resilient and persistent form of familiar data structures.\n\n### MetaSvc (std::map)\nK/V store that avoids _torn pages_. Used to store state information (e.g. Superblocks) which re-initialize application\nstate after reboot.\n\n### IndexSvc (std::unordered_map)\nA B+Tree used to optimize for *FAST* Reads. Value is typically the result of allocation from the ReplicationSvc.\n\n### ReplicationSvc\nAn abstraction on DataSvc that replicates between application instances.\n\n### DataSvc (new/delete)\nFree flat-allocation space. Hooks are provided if a particular allocation pattern (e.g. Heap) is desirable.\n\n### LogSvc (std::list)\nRandom Access circular buffer. Typically not used directly but levaraged by other Services to provide crash-resiliency.\n\n## Application Diagram\n\n![HomeObject Overview](docs/imgs/HomeStore.png)\n\n## Building\n\n### System Pre-requisites\n* CMake 3.13 or later\n* conan 1.x (`pipx install conan~=1`)\n* libaio-dev (assuming Ubuntu)\n* uuid-dev (assuming Ubuntu)\n\n### Dependencies\n* SISL\n```\n$ git clone https://github.com/eBay/sisl\n$ cd sisl \u0026 ./prepare.sh \u0026\u0026 conan export . oss/master\n```\n\n* IOManager\n```\n$ git clone https://github.com/eBay/iomanager\n$ cd iomanager \u0026 ./prepare.sh \u0026\u0026 conan export . oss/master\n```\n\n### Compilation\n```\n$ mkdir build\n$ cd build\n\n# Install all dependencies\n$ conan install ..\n\n# if it is the first time for building and some errors happens when installing dependencies,\n# please try to build all dependencies by yourself\n$ conan install -u -b missing ..\n\n# Build the libhomestore.a\n$ conan build ..\n```\n\n## Contributing to This Project\nWe welcome contributions. If you find any bugs, potential flaws and edge cases, improvements, new feature suggestions or\ndiscussions, please submit issues or pull requests.\n\nContact\n[Harihara Kadayam](mailto:harihara.kadayam@gmail.com)\n\n## License Information\nCopyright 2021 eBay Inc.\n\nPrimary Author: [Harihara Kadayam](https://github.com/hkadayam),[Rishabh Mittal](https://github.com/mittalrishabh)\n\nPrimary Developers:\n[Harihara Kadayam](https://github.com/hkadayam),\n[Yaming Kuang](https://github.com/yamingk),\n[Brian Szmyd](https://github.com/szmyd),\n[Rishabh Mittal](https://github.com/mittalrishabh)\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the\nLicense. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0.\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITHomeStore OF ANY KIND, either express or implied. See the License for the\nspecific language governing permissions and limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Febay%2Fhomestore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Febay%2Fhomestore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Febay%2Fhomestore/lists"}