docs/reference/online-stores/scylladb.md
ScyllaDB is a distributed real-time NoSQL database with vector search support.
This integration uses the native scylla-driver Python driver for optimised performance and supports materializing feature values into a ScyllaDB Cloud cluster for real-time online feature serving.
Install Feast with the scylladb extra, which pulls in scylla-driver automatically:
pip install feast[scylladb]
{% code title="feature_store.yaml" %}
project: scylla_feature_repo
registry: data/registry.db
provider: local
online_store:
type: scylladb
hosts:
- 172.17.0.2
keyspace: feast
username: scylla
password: password
{% endcode %}
{% code title="feature_store.yaml" %}
project: scylla_feature_repo
registry: data/registry.db
provider: local
online_store:
type: scylladb
hosts:
- node-0.aws_us_east_1.xxxxxxxx.clusters.scylla.cloud
- node-1.aws_us_east_1.xxxxxxxx.clusters.scylla.cloud
- node-2.aws_us_east_1.xxxxxxxx.clusters.scylla.cloud
keyspace: feast
username: scylla
password: xxxxxx
local_dc: AWS_US_EAST_1
{% endcode %}
| Parameter | Type | Default | Description |
|---|---|---|---|
hosts | list[str] | (required) | Contact-point host addresses. |
port | int | 9042 | CQL port. |
keyspace | str | feast_keyspace | Target ScyllaDB keyspace. |
username | str | None | Auth username. |
password | str | None | Auth password. |
local_dc | str | None | Local datacenter name for DC-aware load balancing. |
request_timeout | float | None | Driver request timeout in seconds. |
read_concurrency | int | 100 | concurrency argument passed to the driver's execute_concurrent_with_args for reads. Controls how many CQL statements are in-flight at once. |
write_concurrency | int | 100 | concurrency argument passed to the driver's execute_concurrent_with_args for writes. Controls how many CQL statements are in-flight at once. |
vector_similarity_function | str | COSINE | Default similarity function for vector indexes. Supported: COSINE, DOT_PRODUCT, EUCLIDEAN. Can be overridden per-feature via the similarity_function Field tag. |
Storage specifications can be found at docs/specs/online_store_format.md.
ScyllaDB Cloud supports approximate nearest-neighbour (ANN) vector search.
To enable it for a feature view, tag the embedding Field with vector_index=true and specify the number of dimensions:
{% code title="feature_definitions.py" %}
from feast import FeatureView, Field
from feast.types import Array, Float32, String
documents_fv = FeatureView(
name="documents",
entities=[item],
schema=[
Field(name="text", dtype=String),
Field(
name="embedding",
dtype=Array(Float32),
tags={
"vector_index": "true",
"dimensions": "768",
"similarity_function": "COSINE", # COSINE | DOT_PRODUCT | EUCLIDEAN
},
),
],
online=True,
source=push_source,
)
{% endcode %}
When feast apply runs, the store automatically creates the necessary tables and HNSW ANN index for any feature view with vector-tagged fields.
To query the top-k most similar documents:
result = store.retrieve_online_documents_v2(
features=["documents:text", "documents:embedding"],
query=[0.1, 0.2, ...], # your query embedding
top_k=10,
distance_metric="COSINE",
)
The set of functionality supported by online stores is described in detail here. Below is a matrix indicating which functionality is supported by the ScyllaDB online store.
| ScyllaDB | |
|---|---|
| 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 | no |
| support for ttl (time to live) at retrieval | yes |
| support for deleting expired data | yes |
| collocated by feature view | yes |
| collocated by feature service | no |
| collocated by entity key | no |
To compare this set of functionality against other online stores, please see the full functionality matrix.