Skip to content

Commit 42d659f

Browse files
authored
docs: Reorganize registry docs (#4407)
* reorganize registry docs Signed-off-by: tokoko <togurgenidze@gmail.com> * remove commented out text Signed-off-by: tokoko <togurgenidze@gmail.com> * changes in registry.md Signed-off-by: tokoko <togurgenidze@gmail.com> --------- Signed-off-by: tokoko <togurgenidze@gmail.com> Co-authored-by: tokoko <togurgenidze@gmail.com>
1 parent 0a48f7b commit 42d659f

File tree

10 files changed

+136
-136
lines changed

10 files changed

+136
-136
lines changed

docs/SUMMARY.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
* [Feature view](getting-started/concepts/feature-view.md)
2424
* [Feature retrieval](getting-started/concepts/feature-retrieval.md)
2525
* [Point-in-time joins](getting-started/concepts/point-in-time-joins.md)
26-
* [Registry](getting-started/concepts/registry.md)
2726
* [Permission](getting-started/concepts/permission.md)
2827
* [\[Alpha\] Saved dataset](getting-started/concepts/dataset.md)
2928
* [Components](getting-started/components/README.md)
@@ -45,7 +44,6 @@
4544
* [Real-time credit scoring on AWS](tutorials/tutorials-overview/real-time-credit-scoring-on-aws.md)
4645
* [Driver stats on Snowflake](tutorials/tutorials-overview/driver-stats-on-snowflake.md)
4746
* [Validating historical features with Great Expectations](tutorials/validating-historical-features.md)
48-
* [Using Scalable Registry](tutorials/using-scalable-registry.md)
4947
* [Building streaming features](tutorials/building-streaming-features.md)
5048

5149
## How-to Guides
@@ -114,6 +112,12 @@
114112
* [Hazelcast (contrib)](reference/online-stores/hazelcast.md)
115113
* [ScyllaDB (contrib)](reference/online-stores/scylladb.md)
116114
* [SingleStore (contrib)](reference/online-stores/singlestore.md)
115+
* [Registries](reference/registries/README.md)
116+
* [Local](reference/registries/local.md)
117+
* [S3](reference/registries/s3.md)
118+
* [GCS](reference/registries/gcs.md)
119+
* [SQL](reference/registries/sql.md)
120+
* [Snowflake](reference/registries/snowflake.md)
117121
* [Providers](reference/providers/README.md)
118122
* [Local](reference/providers/local.md)
119123
* [Google Cloud Platform](reference/providers/google-cloud-platform.md)
Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,51 @@
11
# Registry
22

3-
The Feast feature registry is a central catalog of all the feature definitions and their related metadata. It allows data scientists to search, discover, and collaborate on new features.
3+
The Feast feature registry is a central catalog of all feature definitions and their related metadata. Feast uses the registry to store all applied Feast objects (e.g. Feature views, entities, etc). It allows data scientists to search, discover, and collaborate on new features. The registry exposes methods to apply, list, retrieve and delete these objects, and is an abstraction with multiple implementations.
44

5-
Each Feast deployment has a single feature registry. Feast only supports file-based registries today, but supports four different backends.
5+
Feast comes with built-in file-based and sql-based registry implementations. By default, Feast uses a file-based registry, which stores the protobuf representation of the registry as a serialized file in the local file system. For more details on which registries are supported, please see [Registries](../../reference/registries/).
66

7-
* `Local`: Used as a local backend for storing the registry during development
8-
* `S3`: Used as a centralized backend for storing the registry on AWS
9-
* `GCS`: Used as a centralized backend for storing the registry on GCP
10-
* `[Alpha] Azure`: Used as centralized backend for storing the registry on Azure Blob storage.
7+
## Updating the registry
118

12-
The feature registry is updated during different operations when using Feast. More specifically, objects within the registry \(entities, feature views, feature services\) are updated when running `apply` from the Feast CLI, but metadata about objects can also be updated during operations like materialization.
9+
We recommend users store their Feast feature definitions in a version controlled repository, which then via CI/CD
10+
automatically stays synced with the registry. Users will often also want multiple registries to correspond to
11+
different environments (e.g. dev vs staging vs prod), with staging and production registries with locked down write
12+
access since they can impact real user traffic. See [Running Feast in Production](../../how-to-guides/running-feast-in-production.md#1.-automatically-deploying-changes-to-your-feature-definitions) for details on how to set this up.
1313

14-
Users interact with a feature registry through the Feast SDK. Listing all feature views:
14+
## Accessing the registry from clients
15+
16+
Users can specify the registry through a `feature_store.yaml` config file, or programmatically. We often see teams
17+
preferring the programmatic approach because it makes notebook driven development very easy:
18+
19+
### Option 1: programmatically specifying the registry
1520

1621
```python
17-
fs = FeatureStore("my_feature_repo/")
18-
print(fs.list_feature_views())
22+
repo_config = RepoConfig(
23+
registry=RegistryConfig(path="gs://feast-test-gcs-bucket/registry.pb"),
24+
project="feast_demo_gcp",
25+
provider="gcp",
26+
offline_store="file", # Could also be the OfflineStoreConfig e.g. FileOfflineStoreConfig
27+
online_store="null", # Could also be the OnlineStoreConfig e.g. RedisOnlineStoreConfig
28+
)
29+
store = FeatureStore(config=repo_config)
30+
```
31+
32+
### Option 2: specifying the registry in the project's `feature_store.yaml` file
33+
34+
```yaml
35+
project: feast_demo_aws
36+
provider: aws
37+
registry: s3://feast-test-s3-bucket/registry.pb
38+
online_store: null
39+
offline_store:
40+
type: file
1941
```
2042
21-
Or retrieving a specific feature view:
43+
Instantiating a `FeatureStore` object can then point to this:
2244

2345
```python
24-
fs = FeatureStore("my_feature_repo/")
25-
fv = fs.get_feature_view(“my_fv1”)
46+
store = FeatureStore(repo_path=".")
2647
```
2748

2849
{% hint style="info" %}
29-
The feature registry is a [Protobuf representation](https://github.com/feast-dev/feast/blob/master/protos/feast/core/Registry.proto) of Feast metadata. This Protobuf file can be read programmatically from other programming languages, but no compatibility guarantees are made on the internal structure of the registry.
30-
{% endhint %}
31-
50+
The file-based feature registry is a [Protobuf representation](https://github.com/feast-dev/feast/blob/master/protos/feast/core/Registry.proto) of Feast metadata. This Protobuf file can be read programmatically from other programming languages, but no compatibility guarantees are made on the internal structure of the registry.
51+
{% endhint %}

docs/getting-started/concepts/README.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,6 @@
2424
[point-in-time-joins.md](point-in-time-joins.md)
2525
{% endcontent-ref %}
2626

27-
{% content-ref url="registry.md" %}
28-
[registry.md](registry.md)
29-
{% endcontent-ref %}
30-
3127
{% content-ref url="dataset.md" %}
3228
[dataset.md](dataset.md)
3329
{% endcontent-ref %}

docs/getting-started/concepts/registry.md

Lines changed: 0 additions & 107 deletions
This file was deleted.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Registies
2+
3+
Please see [Registry](../../getting-started/architecture-and-components/registry.md) for a conceptual explanation of registries.
4+
5+
{% content-ref url="local.md" %}
6+
[local.md](local.md)
7+
{% endcontent-ref %}
8+
9+
{% content-ref url="s3.md" %}
10+
[s3.md](s3.md)
11+
{% endcontent-ref %}
12+
13+
{% content-ref url="gcs.md" %}
14+
[gcs.md](gcs.md)
15+
{% endcontent-ref %}
16+
17+
{% content-ref url="sql.md" %}
18+
[sql.md](sql.md)
19+
{% endcontent-ref %}
20+
21+
{% content-ref url="snowflake.md" %}
22+
[snowflake.md](snowflake.md)
23+
{% endcontent-ref %}

docs/reference/registries/gcs.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# GCS Registry
2+
3+
## Description
4+
5+
GCS registry provides support for storing the protobuf representation of your feature store objects (data sources, feature views, feature services, etc.) uing Google Cloud Storage.
6+
7+
While it can be used in production, there are still inherent limitations with a file-based registries, since changing a single field in the registry requires re-writing the whole registry file. With multiple concurrent writers, this presents a risk of data loss, or bottlenecks writes to the registry since all changes have to be serialized (e.g. when running materialization for multiple feature views or time ranges concurrently).
8+
9+
An example of how to configure this would be:
10+
11+
## Example
12+
13+
{% code title="feature_store.yaml" %}
14+
```yaml
15+
project: feast_gcp
16+
registry:
17+
path: gs://[YOUR BUCKET YOU CREATED]/registry.pb
18+
cache_ttl_seconds: 60
19+
online_store: null
20+
offline_store:
21+
type: dask
22+
```
23+
{% endcode %}

docs/reference/registries/local.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Local Registry
2+
3+
## Description
4+
5+
Local registry provides support for storing the protobuf representation of your feature store objects (data sources, feature views, feature services, etc.) in local file system. It is only intended to be used for experimentation with Feast and should not be used in production.
6+
7+
There are inherent limitations with a file-based registries, since changing a single field in the registry requires re-writing the whole registry file. With multiple concurrent writers, this presents a risk of data loss, or bottlenecks writes to the registry since all changes have to be serialized (e.g. when running materialization for multiple feature views or time ranges concurrently).
8+
9+
An example of how to configure this would be:
10+
11+
## Example
12+
13+
{% code title="feature_store.yaml" %}
14+
```yaml
15+
project: feast_local
16+
registry:
17+
path: registry.pb
18+
cache_ttl_seconds: 60
19+
online_store: null
20+
offline_store:
21+
type: dask
22+
```
23+
{% endcode %}

docs/reference/registries/s3.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# S3 Registry
2+
3+
## Description
4+
5+
S3 registry provides support for storing the protobuf representation of your feature store objects (data sources, feature views, feature services, etc.) in S3 file system.
6+
7+
While it can be used in production, there are still inherent limitations with a file-based registries, since changing a single field in the registry requires re-writing the whole registry file. With multiple concurrent writers, this presents a risk of data loss, or bottlenecks writes to the registry since all changes have to be serialized (e.g. when running materialization for multiple feature views or time ranges concurrently).
8+
9+
An example of how to configure this would be:
10+
11+
## Example
12+
13+
{% code title="feature_store.yaml" %}
14+
```yaml
15+
project: feast_aws_s3
16+
registry:
17+
path: s3://[YOUR BUCKET YOU CREATED]/registry.pb
18+
cache_ttl_seconds: 60
19+
online_store: null
20+
offline_store:
21+
type: dask
22+
```
23+
{% endcode %}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Snowflake registry
1+
# Snowflake Registry
22

33
## Description
44

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
---
2-
description: >-
3-
Tutorial on how to use the SQL registry for scalable registry updates
4-
---
5-
6-
# Using Scalable Registry
1+
# SQL Registry
72

83
## Overview
94

0 commit comments

Comments
 (0)