Title: Coalesce FeatureRows for improved "latest" value consistency in serving stores · Issue #88 · feast-dev/feast · GitHub
Open Graph Title: Coalesce FeatureRows for improved "latest" value consistency in serving stores · Issue #88 · feast-dev/feast
X Title: Coalesce FeatureRows for improved "latest" value consistency in serving stores · Issue #88 · feast-dev/feast
Description: Is your feature request related to a problem? Please describe. Now that we plan to store features in the serving store as Latest only, instead of the full history. We need to add logic to ensure writes of feature values from older rows d...
Open Graph Description: Is your feature request related to a problem? Please describe. Now that we plan to store features in the serving store as Latest only, instead of the full history. We need to add logic to ensure wr...
X Description: Is your feature request related to a problem? Please describe. Now that we plan to store features in the serving store as Latest only, instead of the full history. We need to add logic to ensure wr...
Opengraph URL: https://github.com/feast-dev/feast/issues/88
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Coalesce FeatureRows for improved \"latest\" value consistency in serving stores","articleBody":"**Is your feature request related to a problem? Please describe.**\r\nNow that we plan to store features in the serving store as Latest only, instead of the full history. We need to add logic to ensure writes of feature values from older rows don't clobber new ones. This is especially a problem for batch, but we'd like to solve it generally for streaming as well.\r\n\r\n**Describe the solution you'd like**\r\nFor batch streams, we will combine feature rows by key. Where the key is entity name + entity key.\r\n\r\nFor streaming, we will also do this, but we emit rows with a timer, keeping the previous value in state for future combines. We will evict state with another timeout timer, this will allow for very large key infrequently updated key spaces to be less demanding.\r\n\r\nThe feature rows should be stored in the warehouse store in the combined form, not as their raw separate rows, because we want it to reflect the rows as they are written to the serving stores. This ensures that a the equivalent of a Select * AS OF, query would reflect what was available in the serving stores.\r\n\r\nWe should also make sure that we can turn this feature off as an option in each import spec, as this could introduce performance hits in very high throughput streams with large backlogs. And is also not required for batch jobs that know they only have one row per entity key.\r\n\r\n**Describe alternatives you've considered**\r\nAlternatives are to keep each feature row separately in the serving stores and combine them in the serving api (which is what we started with). This is not as performant as many use cases require, and we'd prefer to optimize for serving speed. We are willing to accept that we cannot guarantee true consistency using the above approach, as it's possible that data already in the store may conflict with data being ingested in a new job. But we will assume that incoming feature data is eventually consistent and will overwrite any issues.\r\n\r\n**Additional context**\r\nThe PR I'm working on for this issue is WIP and will require #87 to be finished first, as we should be grouping on the {entityName}+{entityKey}, not with the event timestamp + granularity. It would be more work to deal with the latest values in the stores store separately, so it's best we wait.","author":{"url":"https://github.com/tims","@type":"Person","name":"tims"},"datePublished":"2019-01-18T12:18:05.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":6},"url":"https://github.com/88/feast/issues/88"}
| 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:7b2b86a4-546d-282a-18c1-624d69106d8c |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 89B0:39233B:1372E63:1BB8AD5:697A3948 |
| html-safe-nonce | 0694e8badfb0c8bc394b0cca179f228642f9899c9ae61372700b5ff6e2820353 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4OUIwOjM5MjMzQjoxMzcyRTYzOjFCQjhBRDU6Njk3QTM5NDgiLCJ2aXNpdG9yX2lkIjoiMTcyNjc1NDY5MjE3NzQ3NTkxMiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | a58966e658a430464ff3be25e19f2e0b77b8aee4d3a0d30c4b2915f94f3744dd |
| hovercard-subject-tag | issue:400701395 |
| 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/88/issue_layout |
| twitter:image | https://opengraph.githubassets.com/287015945cedaa0628dc96b5d63fa4b82a16d1fce71db4b3d5e5fce7cbad5db1/feast-dev/feast/issues/88 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/287015945cedaa0628dc96b5d63fa4b82a16d1fce71db4b3d5e5fce7cbad5db1/feast-dev/feast/issues/88 |
| og:image:alt | Is your feature request related to a problem? Please describe. Now that we plan to store features in the serving store as Latest only, instead of the full history. We need to add logic to ensure wr... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | tims |
| hostname | github.com |
| expected-hostname | github.com |
| None | af6de804ceb83ad30bb9b348cdeaccaa30cdcb566762d5e74e21e2bad88885d0 |
| 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 | 2d980605f0959039ddebcbcf522b072508302977 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width