Back to Feast

ScyllaDB Cloud online store

docs/reference/online-stores/scylladb.md

0.65.05.6 KB
Original Source

ScyllaDB Cloud online store

Description

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.

Getting started

Install Feast with the scylladb extra, which pulls in scylla-driver automatically:

bash
pip install feast[scylladb]

Example (ScyllaDB)

{% code title="feature_store.yaml" %}

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 %}

Example (ScyllaDB Cloud)

{% code title="feature_store.yaml" %}

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 %}

Configuration options

ParameterTypeDefaultDescription
hostslist[str](required)Contact-point host addresses.
portint9042CQL port.
keyspacestrfeast_keyspaceTarget ScyllaDB keyspace.
usernamestrNoneAuth username.
passwordstrNoneAuth password.
local_dcstrNoneLocal datacenter name for DC-aware load balancing.
request_timeoutfloatNoneDriver request timeout in seconds.
read_concurrencyint100concurrency argument passed to the driver's execute_concurrent_with_args for reads. Controls how many CQL statements are in-flight at once.
write_concurrencyint100concurrency argument passed to the driver's execute_concurrent_with_args for writes. Controls how many CQL statements are in-flight at once.
vector_similarity_functionstrCOSINEDefault 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" %}

python
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:

python
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",
)

Functionality Matrix

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 storeyes
read feature values from the online storeyes
update infrastructure (e.g. tables) in the online storeyes
teardown infrastructure (e.g. tables) in the online storeyes
generate a plan of infrastructure changesno
support for on-demand transformsyes
readable by Python SDKyes
readable by Javano
readable by Gono
support for entityless feature viewsyes
support for concurrent writing to the same keyno
support for ttl (time to live) at retrievalyes
support for deleting expired datayes
collocated by feature viewyes
collocated by feature serviceno
collocated by entity keyno

To compare this set of functionality against other online stores, please see the full functionality matrix.

Resources