{"id":16783124,"url":"https://github.com/bengreenier/node-data-map-reduce","last_synced_at":"2026-04-19T05:32:52.725Z","repository":{"id":44050834,"uuid":"217874830","full_name":"bengreenier/node-data-map-reduce","owner":"bengreenier","description":"n-tiered map reduce for databases.","archived":false,"fork":false,"pushed_at":"2023-01-04T23:43:03.000Z","size":296,"stargazers_count":0,"open_issues_count":13,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-23T08:20:04.529Z","etag":null,"topics":["data-processing","database","example"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/bengreenier.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":"2019-10-27T15:25:05.000Z","updated_at":"2019-10-29T20:52:47.000Z","dependencies_parsed_at":"2023-02-03T00:30:57.807Z","dependency_job_id":null,"html_url":"https://github.com/bengreenier/node-data-map-reduce","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bengreenier%2Fnode-data-map-reduce","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bengreenier%2Fnode-data-map-reduce/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bengreenier%2Fnode-data-map-reduce/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bengreenier%2Fnode-data-map-reduce/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bengreenier","download_url":"https://codeload.github.com/bengreenier/node-data-map-reduce/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243940063,"owners_count":20372044,"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":["data-processing","database","example"],"created_at":"2024-10-13T07:49:01.462Z","updated_at":"2025-10-25T11:03:39.964Z","avatar_url":"https://github.com/bengreenier.png","language":"TypeScript","readme":"# node-data-map-reduce\n\nn-tiered map reduce for databases. `ndmr` for short.\n\n![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/bengreenier/node-data-map-reduce)\n\nThis project provides one possible way to select data from multiple downstream databases and run a query against the result of all those downstream queries on-demand. For instance:\n\n```\nSELECT * FROM users @ https://my-downstream-sql-provider.com\nSELECT * FROM pets @ https://your-sql-animal-db.com\n\nSELECT pet_type FROM pets INNER JOIN users ON pets.owner_id=users.id WHERE users.name='ben'\n```\n\nIn the above example, we'd collect all user records from one source, and all pet records from another. We'd then correlate the two sources, using the pet records `owner_id` and the user records `id`. Finally, we'd select the `pet_type` field from the pet record, where the `name` field from the users record matches `ben`.\n\nThis type of scenario is likely not very widely applicable, and is probably only interesting to you if:\n\n- You have many downstream data sources that cannot be moved/centralized for business reasons\n- These downstream sources have different schemas\n- These downstream sources **are relational data stores**\n- You wish to query these data sources as one source\n\n## Usage\n\n```\nndmr [command]\n\nCommands:\n  ndmr execute [query]  execute a query\n\nOptions:\n  --help     Show help                                                 [boolean]\n  --version  Show version number                                       [boolean]\n  --config   Path to the configuration file[required] [default: \"./config.json\"]\n```\n\n### Execute\n\n```\nndmr execute [query]\n\nexecute a query\n\nPositionals:\n  query  the path to a query (JSON file) to execute\n                                   [string] [required] [default: \"./query.json\"]\n\nOptions:\n  --help     Show help                                                 [boolean]\n  --version  Show version number                                       [boolean]\n  --config   Path to the configuration file[required] [default: \"./config.json\"]\n```\n\n## Examples\n\nFor example queries and configurations, see the [examples](./examples) directory. Each subdirectory is an example, complete with it's own README.\n\n## Binary Releases\n\n![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/bengreenier/node-data-map-reduce)\n\nTo simplify cases when one might simply want to run the examples without needing to build the source,binary releases are provided for Windows, Mac, and Linux on the [Releases Page](https://github.com/bengreenier/node-data-map-reduce/releases/latest).\n\n## Contributing\n\nOpen a PR against this repository, or create an Issue.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbengreenier%2Fnode-data-map-reduce","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbengreenier%2Fnode-data-map-reduce","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbengreenier%2Fnode-data-map-reduce/lists"}