|
| 1 | +# Overview |
| 2 | + |
| 3 | +## Functionality |
| 4 | + |
| 5 | +Here are the methods exposed by the `OnlineStore` interface, along with the core functionality supported by the method: |
| 6 | +* `online_write_batch`: write feature values to the online store |
| 7 | +* `online_read`: read feature values from the online store |
| 8 | +* `update`: update infrastructure (e.g. tables) in the online store |
| 9 | +* `teardown`: teardown infrastructure (e.g. tables) in the online store |
| 10 | +* `plan`: generate a plan of infrastructure changes based on feature repo changes |
| 11 | + |
| 12 | +There is also additional functionality not properly captured by these interface methods: |
| 13 | +* support for on-demand transforms |
| 14 | +* readable by Python SDK |
| 15 | +* readable by Java |
| 16 | +* readable by Go |
| 17 | +* support for entityless feature views |
| 18 | +* support for concurrent writing to the same key |
| 19 | +* support for ttl (time to live) at retrieval |
| 20 | +* support for deleting expired data |
| 21 | + |
| 22 | +Finally, there are multiple data models for storing the features in the online store. For example, features could be: |
| 23 | +* collocated by feature view |
| 24 | +* collocated by feature service |
| 25 | +* collocated by entity key |
| 26 | + |
| 27 | +See this [issue](https://github.com/feast-dev/feast/issues/2254) for a discussion around the tradeoffs of each of these data models. |
| 28 | + |
| 29 | +## Functionality Matrix |
| 30 | + |
| 31 | +There are currently five core online store implementations: `SqliteOnlineStore`, `RedisOnlineStore`, `DynamoDBOnlineStore`, `SnowflakeOnlineStore`, and `DatastoreOnlineStore`. |
| 32 | +There are several additional implementations contributed by the Feast community (`PostgreSQLOnlineStore`, `HbaseOnlineStore`, and `CassandraOnlineStore`), which are not guaranteed to be stable or to match the functionality of the core implementations. |
| 33 | +Details for each specific online store, such as how to configure it in a `feature_store.yaml`, can be found [here](README.md). |
| 34 | + |
| 35 | +Below is a matrix indicating which online stores support what functionality. |
| 36 | + |
| 37 | +| | Sqlite | Redis | DynamoDB | Snowflake | Datastore | Postgres | Hbase | Cassandra | |
| 38 | +| :-------------------------------------------------------- | :-- | :-- | :-- | :-- | :-- | :-- | :-- | :-- | |
| 39 | +| write feature values to the online store | yes | yes | yes | yes | yes | yes | yes | yes | |
| 40 | +| read feature values from the online store | yes | yes | yes | yes | yes | yes | yes | yes | |
| 41 | +| update infrastructure (e.g. tables) in the online store | yes | yes | yes | yes | yes | yes | yes | yes | |
| 42 | +| teardown infrastructure (e.g. tables) in the online store | yes | yes | yes | yes | yes | yes | yes | yes | |
| 43 | +| generate a plan of infrastructure changes | yes | no | no | no | no | no | no | yes | |
| 44 | +| support for on-demand transforms | yes | yes | yes | yes | yes | yes | yes | yes | |
| 45 | +| readable by Python SDK | yes | yes | yes | yes | yes | yes | yes | yes | |
| 46 | +| readable by Java | no | yes | no | no | no | no | no | no | |
| 47 | +| readable by Go | yes | yes | no | no | no | no | no | no | |
| 48 | +| support for entityless feature views | yes | yes | yes | yes | yes | yes | yes | yes | |
| 49 | +| support for concurrent writing to the same key | no | yes | no | no | no | no | no | no | |
| 50 | +| support for ttl (time to live) at retrieval | no | yes | no | no | no | no | no | no | |
| 51 | +| support for deleting expired data | no | yes | no | no | no | no | no | no | |
| 52 | +| collocated by feature view | yes | no | yes | yes | yes | yes | yes | yes | |
| 53 | +| collocated by feature service | no | no | no | no | no | no | no | no | |
| 54 | +| collocated by entity key | no | yes | no | no | no | no | no | no | |
0 commit comments