Title: Supporting multiple online feature stores · Issue #2383 · feast-dev/feast · GitHub
Open Graph Title: Supporting multiple online feature stores · Issue #2383 · feast-dev/feast
X Title: Supporting multiple online feature stores · Issue #2383 · feast-dev/feast
Description: Is your feature request related to a problem? Please describe. We are seeing that ML feature teams want to own their feature projections and not rely on a single global online feature store with the most common reason being reduction of ...
Open Graph Description: Is your feature request related to a problem? Please describe. We are seeing that ML feature teams want to own their feature projections and not rely on a single global online feature store with th...
X Description: Is your feature request related to a problem? Please describe. We are seeing that ML feature teams want to own their feature projections and not rely on a single global online feature store with th...
Opengraph URL: https://github.com/feast-dev/feast/issues/2383
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Supporting multiple online feature stores","articleBody":"**Is your feature request related to a problem? Please describe.**\r\nWe are seeing that ML feature teams want to own their feature projections and not rely on a single global online feature store with the most common reason being reduction of blast radius.\r\n\r\n**Describe the solution you'd like**\r\nA way to create projections of a subset of feature views to specific online stores.\r\n\r\n**Describe alternatives you've considered**\r\nI was pointed towards attempting to implement the requested feature using a custom provider which I managed to get working, albeit rather hacky. I've only focused on fanning out the writing of features. \r\n\r\n```python\r\nclass ManyOnlineStoresPassthroughConfig(RepoConfig):\r\n online_stores: List[dict]\r\n\r\nclass ManyOnlineStoresPassthroughProvider(PassthroughProvider):\r\n def online_write_batch(self, config: ManyOnlineStoresPassthroughConfig, table: FeatureView, *args, **kwargs) -\u003e None:\r\n \"\"\"\r\n Writes feature view to all subscribers\r\n \"\"\"\r\n feature_view_subscribers = [store for store in config.online_stores if table.name in store[\"view_subscriptions\"]]\r\n\r\n for store in feature_view_subscribers:\r\n print(f\"{table.name} online write to subscriber {store['name']}\")\r\n\r\n config.online_store = get_online_config_from_type(store[\"type\"])(**store)\r\n self.online_store = get_online_store_from_config(config.online_store)\r\n\r\n return super().online_write_batch(config, table, *args, **kwargs)\r\n```\r\n\r\nWith the config update of\r\n\r\n```yaml\r\nproject: aaaa\r\nregistry: gs://temp-feast-dev/dev/registry.db\r\nprovider: providers.custom_provider.ManyOnlineStoresPassthroughProvider\r\n\r\noffline_store:\r\n type: bigquery\r\n dataset: temp_feast-dev\r\n project_id: abc\r\n location: EU\r\n\r\nonline_stores:\r\n - name: \"lovely\"\r\n type: redis\r\n redis_type: redis\r\n connection_string: \"blah\"\r\n view_subscriptions: [\"feature_view_1\"]\r\n\r\n - name: \"lovely\"\r\n type: redis\r\n redis_type: redis\r\n connection_string: \"abc\"\r\n view_subscriptions: [\"feature_view_1\", \"feature_view_2\"]\r\n```\r\n\r\nThere's still some unknowns around retrieving the online features as we'd need a way of knowing what projection should be used. \r\n\r\nHappy to help wherever I can! ","author":{"url":"https://github.com/alexjajones","@type":"Person","name":"alexjajones"},"datePublished":"2022-03-07T22:27:01.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":4},"url":"https://github.com/2383/feast/issues/2383"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:9959f88e-fe6b-0d03-b308-0defb09533fb |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 8868:3AB9FF:9649BB:D3C292:696F43EC |
| html-safe-nonce | da56c9deb11531dccd15d8008a429d0bcfd82a60bcf1aaca329816400c128c5c |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4ODY4OjNBQjlGRjo5NjQ5QkI6RDNDMjkyOjY5NkY0M0VDIiwidmlzaXRvcl9pZCI6IjY0ODMzNzg4NDAxODM3MTg4OTIiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 9771169d9b9ebd58a5d5ac62d556a8dd57cdd9a9aa4622c85ea81f5bf27e3f9f |
| hovercard-subject-tag | issue:1161993681 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/feast-dev/feast/2383/issue_layout |
| twitter:image | https://opengraph.githubassets.com/b282cd2525dbdf46062d7610e832a16a146267deaa2163591d3b246910002d60/feast-dev/feast/issues/2383 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/b282cd2525dbdf46062d7610e832a16a146267deaa2163591d3b246910002d60/feast-dev/feast/issues/2383 |
| og:image:alt | Is your feature request related to a problem? Please describe. We are seeing that ML feature teams want to own their feature projections and not rely on a single global online feature store with th... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | alexjajones |
| hostname | github.com |
| expected-hostname | github.com |
| None | b278ad162d35332b6de714dfb005de04386c4d92df6475522bef910f491a35ee |
| turbo-cache-control | no-preview |
| go-import | github.com/feast-dev/feast git https://github.com/feast-dev/feast.git |
| octolytics-dimension-user_id | 57027613 |
| octolytics-dimension-user_login | feast-dev |
| octolytics-dimension-repository_id | 161133770 |
| octolytics-dimension-repository_nwo | feast-dev/feast |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 161133770 |
| octolytics-dimension-repository_network_root_nwo | feast-dev/feast |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 39aed5006635ab6f45e6b77d23e73b08a00272a3 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width