GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — feat: Add HybridOnlineStore for multi-backend online store routing by PrasannaKumarARDS · Pull Request #5423 · feast-dev/feast

feat: Add HybridOnlineStore for multi-backend online store routing #5423

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Sign up for GitHub

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
franciscojavierarceo merged 2 commits into feast-dev:master from PrasannaKumarARDS:hybrid-online-store
Jun 23, 2025

Uh oh!

There was an error while loading. Please reload this page.

Merged

feat: Add HybridOnlineStore for multi-backend online store routing #5423

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2 commits
Select commit Hold shift + click to select a range
5060b02
feat: Added HybridOnlineStore for multi-backend online store routing
Jun 4, 2025
ba8543b
feat: Added HybridOnlineStore for multi-backend online store routing
Jun 22, 2025
File filter
Filter by extension

Clear filters
Conversations
Failed to load comments.
Loading

Uh oh!

There was an error while loading. Please reload this page.

Jump to
Jump to file
Failed to load files.
Loading

Uh oh!

There was an error while loading. Please reload this page.

Diff view
Diff view

There are no files selected for viewing

111 changes: 111 additions & 0 deletions 111 docs/reference/online-stores/hybrid.md
Show comments
View file
Open in desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
# Hybrid online store

## Description

The HybridOnlineStore allows routing online feature operations to different online store backends based on a configurable tag (such as `tribe`, `team`, or `project`) on the FeatureView. This enables a single Feast deployment to support multiple online store backends, each configured independently and selected dynamically at runtime.

## Getting started

To use the HybridOnlineStore, install Feast with all required online store dependencies (e.g., Bigtable, Cassandra, etc.) for the stores you plan to use. For example:

```
pip install 'feast[gcp,cassandra]'
```

## Example

{% code title="feature_store.yaml" %}
```yaml
project: my_feature_repo
registry: data/registry.db
provider: local
online_store:
type: hybrid_online_store.HybridOnlineStore
routing_tag: team # or any tag name you want to use in FeatureView's for routing
online_stores:
- type: bigtable
conf:
project_id: my_gcp_project
instance: my_bigtable_instance
- type: cassandra
conf:
hosts:
- cassandra1.example.com
- cassandra2.example.com
keyspace: feast_keyspace
username: feast_user
password: feast_password
```
{% endcode %}

### Setting the Routing Tag in FeatureView

To enable routing, add a tag to your FeatureView that matches the `routing_tag` specified in your `feature_store.yaml`. For example, if your `routing_tag` is `team`, add a `team` tag to your FeatureView:

```yaml
tags:
team: bigtable # This tag determines which online store is used
```

The value of this tag (e.g., `bigtable`) should match the type or identifier of the online store you want to use for this FeatureView. The HybridOnlineStore will route all online operations for this FeatureView to the corresponding backend.

### Example FeatureView

{% code title="feature_view" %}
```yaml
name: user_features
entities:
- name: user_id
join_keys: ["user_id"]
ttl: null
schema:
- name: age
dtype: int64
- name: country
dtype: string
online: true
source:
path: data/user_features.parquet
event_timestamp_column: event_timestamp
created_timestamp_column: created_timestamp
tags:
team: bigtable # This tag determines which online store is used
```
{% endcode %}

The `team` tag in the FeatureView's `tags` field determines which online store backend is used for this FeatureView. In this example, all online operations for `user_features` will be routed to the Bigtable online store, as specified by the tag value and the `routing_tag` in your `feature_store.yaml`.

The HybridOnlineStore will route requests to the correct online store based on the value of the tag specified by `routing_tag`.

The full set of configuration options for each online store is available in their respective documentation:
- [BigtableOnlineStoreConfig](https://rtd.feast.dev/en/latest/#feast.infra.online_stores.bigtable.BigtableOnlineStoreConfig)
- [CassandraOnlineStoreConfig](https://rtd.feast.dev/en/master/#feast.infra.online_stores.cassandra_online_store.cassandra_online_store.CassandraOnlineStoreConfig)

For a full explanation of configuration options, please refer to the documentation for each online store backend you configure in the `online_stores` list.

Storage specifications can be found at [docs/specs/online_store_format.md](../../specs/online_store_format.md).

## Functionality Matrix

The set of functionality supported by online stores is described in detail [here](overview.md#functionality). Below is a matrix indicating which functionality is supported by the HybridOnlineStore.

| | HybridOnlineStore |
|-----------------------------------------------------------|-------------------|
| write feature values to the online store | yes |
| read feature values from the online store | yes |
| update infrastructure (e.g. tables) in the online store | yes |
| teardown infrastructure (e.g. tables) in the online store | yes |
| generate a plan of infrastructure changes | no |
| support for on-demand transforms | yes |
| readable by Python SDK | yes |
| readable by Java | no |
| readable by Go | no |
| support for entityless feature views | yes |
| support for concurrent writing to the same key | yes |
| support for ttl (time to live) at retrieval | no |
| support for deleting expired data | no |
| collocated by feature view | yes |
| collocated by feature service | no |
| collocated by entity key | yes |

To compare this set of functionality against other online stores, please see the full [functionality matrix](overview.md#functionality-matrix).
Loading
Oops, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments. Suggestions cannot be applied while the pull request is queued to merge. Suggestion cannot be applied right now. Please check back later.
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.