{"id":33179265,"url":"https://github.com/indeedeng/mph-table","last_synced_at":"2026-01-14T03:06:20.161Z","repository":{"id":29139363,"uuid":"114902411","full_name":"indeedeng/mph-table","owner":"indeedeng","description":"Immutable key/value store with efficient space utilization and fast reads. They are ideal for the use-case of tables built by batch processes and shipped to multiple servers.","archived":true,"fork":false,"pushed_at":"2023-07-11T18:58:19.000Z","size":135,"stargazers_count":100,"open_issues_count":1,"forks_count":20,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-11-16T17:02:21.786Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://engineering.indeedblog.com/blog/2018/02/indeed-mph/","language":"Java","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/indeedeng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-12-20T15:26:10.000Z","updated_at":"2025-08-19T02:50:11.000Z","dependencies_parsed_at":"2024-01-05T20:45:53.217Z","dependency_job_id":"a7f9963c-5ce3-4d3f-a0f5-82fd41fb2685","html_url":"https://github.com/indeedeng/mph-table","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/indeedeng/mph-table","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Fmph-table","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Fmph-table/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Fmph-table/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Fmph-table/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/indeedeng","download_url":"https://codeload.github.com/indeedeng/mph-table/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indeedeng%2Fmph-table/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408800,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"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":[],"created_at":"2025-11-16T03:00:36.828Z","updated_at":"2026-01-14T03:06:20.152Z","avatar_url":"https://github.com/indeedeng.png","language":"Java","funding_links":[],"categories":["数据库","Memory and concurrency"],"sub_categories":[],"readme":"Indeed has decided to archive this project, as it is no longer supported nor used internally. Thank you for your understanding. We won't be accepting pull requests or responding to issues for this project anymore. If you are a current user and would like to take over support for this project, please create a fork. \n\n# Minimal Perfect Hash Tables\n\n![OSS Lifecycle](https://img.shields.io/osslifecycle/indeedeng/mph-table.svg)\n\n## About\n\nMinimal Perfect Hash Tables are an immutable key/value store with\nefficient space utilization and fast reads.  They are ideal for the\nuse-case of tables built by batch processes and shipped to multiple\nservers.\n\n## Usage\n\nIndeed MPH is available on [Maven Central](https://mvnrepository.com/artifact/com.indeed/mph-table),\njust add the following dependency:\n```\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.indeed\u003c/groupId\u003e\n    \u003cartifactId\u003emph-table\u003c/artifactId\u003e\n    \u003cversion\u003e1.0.4\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nThe primary interfaces are\n[TableReader](src/main/java/com/indeed/mph/TableReader.java), to\nconstruct a reader to an existing table,\n[TableWriter](src/main/java/com/indeed/mph/TableWriter.java), to build\na table, and\n[TableConfig](src/main/java/com/indeed/mph/TableConfig.java), to\nspecify the configuration for the writer.\n\nHow to write a table:\n```java\nfinal TableConfig\u003cLong, Long\u003e config = new TableConfig()\n    .withKeySerializer(new SmartLongSerializer())\n    .withValueSerializer(new SmartVLongSerializer());\nfinal Set\u003cPair\u003cLong, Long\u003e\u003e entries = new HashSet\u003c\u003e();\nfor (long i = 0; i \u003c 20; ++i) {\n    entries.add(new Pair(i, i * i));\n}\nTableWriter.write(new File(\"squares\"), config, entries);\n```\n\nHow to read a table:\n```java\ntry (final TableReader\u003cLong, Long\u003e reader = TableReader.open(\"squares\")) {\n  final Long value = reader.get(3L);          // get one\n  for (final Pair\u003cLong, Long\u003e p : reader) {   // iterate over all\n     ...\n  }\n}\n```\n\n## Command Line\n\nIn addition to the Java API, TableReader and TableWriter provide\nconvenience command-line interfaces to read and write tables, allowing\nyou to quickly get started without writing any code:\n\n    # print all key-values in a table as TSV\n    $ java com.indeed.mph.TableReader --dump \u003ctable\u003e\n\n    # print the value for a single key\n    $ java com.indeed.mph.TableReader --get \u003ckey\u003e \u003ctable\u003e\n\n    # create a table from a TSV file of words with counts\n    $ java com.indeed.mph.TableWriter --valueSerializer .SmartVLongSerializer \u003ctable to create\u003e \u003ccounts.tsv\u003e\n\n    # create a table from a TSV file mapping movie ids to lists of actor names (compressed by reference)\n    $ java com.indeed.mph.TableWriter --keySerializer .SmartVLongSerializer --valueSerializer '.SmartListSerializer(.SmartDictionarySerializer)' \u003ctable to create\u003e \u003cmovies.tsv\u003e\n\n    # same as above, not actually storing the movie ids but still allowing retrieval by them\n    $ java com.indeed.mph.TableWriter --keyStorage IMPLICIT --keySerializer .SmartVLongSerializer --valueSerializer '.SmartListSerializer(.SmartDictionarySerializer)' \u003ctable to create\u003e \u003cmovies.tsv\u003e\n\n## Code of Conduct\nThis project is governed by the [Contributor Covenant v 1.4.1](CODE_OF_CONDUCT.md)\n\n## License\n\nThis project is licensed under the Apache-2.0 License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findeedeng%2Fmph-table","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Findeedeng%2Fmph-table","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findeedeng%2Fmph-table/lists"}