Title: Replace string references used in non user facing components in Feast · Issue #674 · feast-dev/feast · GitHub
Open Graph Title: Replace string references used in non user facing components in Feast · Issue #674 · feast-dev/feast
X Title: Replace string references used in non user facing components in Feast · Issue #674 · feast-dev/feast
Description: Background Currently Feast uses string references in 3 areas: Feature Set References Feature References Subscriptions As a result many implementations of string reference parsing and formatting has cropped up all over Feast's code: Feast...
Open Graph Description: Background Currently Feast uses string references in 3 areas: Feature Set References Feature References Subscriptions As a result many implementations of string reference parsing and formatting has...
X Description: Background Currently Feast uses string references in 3 areas: Feature Set References Feature References Subscriptions As a result many implementations of string reference parsing and formatting has...
Opengraph URL: https://github.com/feast-dev/feast/issues/674
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Replace string references used in non user facing components in Feast","articleBody":"## Background\r\n\r\nCurrently Feast uses string references in 3 areas:\r\n- Feature Set References\r\n- Feature References\r\n- Subscriptions\r\n\r\nAs a result many implementations of string reference parsing and formatting has cropped up all over Feast's code:\r\n- Feast Serving's [`RefUtil`](https://github.com/gojek/feast/blob/e4f8fe905d3c182416e1b69bf60bfbc0e8348f8a/serving/src/main/java/feast/serving/util/RefUtil.java)\r\n- Feast Core's [`Store`](https://github.com/gojek/feast/blob/7a0ff91839757233d3af957b84096f9e2836386b/core/src/main/java/feast/core/model/Store.java#L127)\r\n- Feast Ingestion's [`SpecUtil`](https://github.com/gojek/feast/blob/7a0ff91839757233d3af957b84096f9e2836386b/ingestion/src/main/java/feast/ingestion/utils/SpecUtil.java#L34)\r\n- Feast Storage Writers: [`Redis`](https://github.com/gojek/feast/blob/7a0ff91839757233d3af957b84096f9e2836386b/storage/connectors/redis/src/main/java/feast/storage/connectors/redis/writer/RedisCustomIO.java#L185) [`RedisCluster`](https://github.com/gojek/feast/blob/7a0ff91839757233d3af957b84096f9e2836386b/storage/connectors/rediscluster/src/main/java/feast/storage/connectors/rediscluster/writer/RedisClusterCustomIO.java#L187).\r\n- Feast Storage Retrievers [`Redis`](https://github.com/gojek/feast/blob/7a0ff91839757233d3af957b84096f9e2836386b/storage/connectors/redis/src/main/java/feast/storage/connectors/redis/retriever/RedisOnlineRetriever.java#L214) [`RedisCluster`](https://github.com/gojek/feast/blob/7a0ff91839757233d3af957b84096f9e2836386b/storage/connectors/rediscluster/src/main/java/feast/storage/connectors/rediscluster/retriever/RedisClusterOnlineRetriever.java#L218)\r\n- etc...\r\n\r\n## Problem\r\n\r\nChanges to the feature/feature set references/subscriptions are difficult as we have to track down all the different string parsing/formatting implementations. Changes to these areas should not require a comb over the entire codebase to rectify all these parsing and formatting implementations.\r\n\r\nExamples of currently WIP and potential changes that is currently affected by this and why the problem is relevant:\r\n- Feature Set version removal #386 \r\n- Changes to the Feast concept \u0026 hierarchy and data model #479 \r\n- Removal of Projects from Feature References when in the string form #631 \r\n\r\n### Scope \r\n\r\nString references that should still be kept around:\r\n- those exposed by the user facing API (ie the SDKs, config files) as they need to be humanly readable.\r\n- those used by interface with components outside of feast (ie PostgreSQL, BigQuery, etc.), although non string references should be preferred if possible. \r\n\r\n## Possible Solution\r\nReplace string references in non user facing components with their Protobuf equivalents. \r\nExamples of this include:\r\n- Using message types directly in protobuf definitions:\r\n```protobuf\r\nmessage FeatureRow {\r\n repeated Field fields = 2;\r\n google.protobuf.Timestamp event_timestamp = 3;\r\n FeatureSetReference feature_set_ref = 8;\r\n string ingestion_id = 7;\r\n}\r\n```\r\n\u003e\r\n\r\n- Using references as keys in maps directly.\r\n```java\r\nHashMap\u003cFeatureSetReference, FeatureSetSpec\u003e featureSetMap = new HashMap\u003c\u003e();\r\n```\r\n\r\n\u003e :warning: There might be possible [caveats to this](https://stackoverflow.com/questions/34729968/protobuf-objects-as-keys-in-maps)\r\n- Serialize references without having to extract its internals:\r\n```java\r\nString refStr = Base64.getEncoder().encodeToString(featureSetReference.toByteArray());\r\n```\r\n","author":{"url":"https://github.com/mrzzy","@type":"Person","name":"mrzzy"},"datePublished":"2020-05-03T09:47:45.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":4},"url":"https://github.com/674/feast/issues/674"}
| 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:2d42a973-5d9f-8401-c7c5-4f0bc53ab456 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | E342:1AAC32:A83174:ECAE9B:6979C8DA |
| html-safe-nonce | 7a635a08e0d6750e2d4b6eeb564d9795eca5a86f933bfee6b3a927312776df86 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFMzQyOjFBQUMzMjpBODMxNzQ6RUNBRTlCOjY5NzlDOERBIiwidmlzaXRvcl9pZCI6IjUwOTAwNDUwMTIxNzU2MDM5MzAiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 9657a3de2299ee51d64d99207bcf2b1d140cab38697607168bf6ec6cd8bf272e |
| hovercard-subject-tag | issue:611373549 |
| 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/674/issue_layout |
| twitter:image | https://opengraph.githubassets.com/439a6e553243ced3ea6e70068f8fd31e2adf15477fe974cf9aca030cbed4e072/feast-dev/feast/issues/674 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/439a6e553243ced3ea6e70068f8fd31e2adf15477fe974cf9aca030cbed4e072/feast-dev/feast/issues/674 |
| og:image:alt | Background Currently Feast uses string references in 3 areas: Feature Set References Feature References Subscriptions As a result many implementations of string reference parsing and formatting has... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | mrzzy |
| hostname | github.com |
| expected-hostname | github.com |
| None | c049b65ec7e54cbf2521f5a560b6527714c612b0bd169188e2ea6e16f83bd5f4 |
| 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 | 87b137883e35e2766c3d0f6a257c4044f6390b83 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width