Magasins de caractéristiques en ligne Databricks

Les magasins de fonctionnalités Databricks Online sont une solution évolutive hautes performances pour servir les données de fonctionnalités aux applications en ligne et aux modèles Machine Learning en temps réel. Optimisés par Databricks Lakebase, les magasins de fonctionnalités en ligne fournissent un accès à faible latence aux données de fonctionnalités à grande échelle tout en conservant la cohérence avec vos tables de fonctionnalités hors connexion.

Les principaux cas d’usage des magasins de fonctionnalités en ligne sont les suivants :

Les nouveaux Feature Stores en ligne sont désormais créés en tant que projets Lakebase de mise à l'échelle automatique. Pour plus d’informations et des différences, consultez l’unification de Lakebase sur la mise à l’échelle automatique.

Requirements

Les Databricks Online Feature Stores nécessitent Databricks Runtime 16.4 LTS ML ou version ultérieure. Vous pouvez également utiliser l'informatique sans serveur.

Pour utiliser databricks Online Feature Stores, vous devez d’abord installer le package. Les lignes de code suivantes doivent être exécutées chaque fois qu’un notebook est exécuté :

%pip install databricks-feature-engineering>=0.13.0
dbutils.library.restartPython()

Créer un magasin en ligne

Lorsque vous créez un magasin en ligne, vous approvisionnez une infrastructure managée hautement disponible pour le service des fonctionnalités en temps réel. L’API create_online_store crée une instance de mise à l’échelle automatique Lakebase. Pour plus d’informations sur la mise à l’échelle automatique Lakebase, consultez Lakebase Postgres.

Pour gérer les coûts, supprimez les magasins en ligne lorsqu’ils ne sont pas utilisés pour le développement et le test.

Pour créer un magasin de fonctionnalités en ligne :

from databricks.feature_engineering import FeatureEngineeringClient

# Initialize the client
fe = FeatureEngineeringClient()

# Create an online store with specified capacity
fe.create_online_store(
    name="my-online-store", # maximum of 63 bytes
    capacity="CU_2"  # Valid options: "CU_1", "CU_2", "CU_4", "CU_8"
)

Le capacity paramètre contrôle la quantité de calcul que votre magasin en ligne peut utiliser. Sa valeur correspond à une unité de calcul Lakebase (CU). Pour les tailles de calcul disponibles et ce qu’une CU inclut, voir Tailles de calcul disponibles.

Pour plus d’informations sur les autorisations pour les instances de mise à l’échelle automatique Lakebase, consultez Accorder des autorisations de projet.

Chiffrement avec des clés gérées par le client

Les magasins de caractéristiques en ligne prennent en charge le chiffrement au repos avec une clé gérée par le client (CMK) en raison de la prise en charge sous-jacente de la mise à l’échelle automatique Lakebase. Aucune configuration Lakebase ou Feature Store n’est requise ; CMK s’applique automatiquement aux espaces de travail pertinents.

CMK s’applique automatiquement lorsque toutes les valeurs suivantes sont remplies :

  • L’espace de travail dispose d’une clé gérée par le client configurée pour les services managés. Consultez les clés gérées par le client pour Lakebase.
  • Le magasin de fonctionnalités en ligne est soutenu par un projet de mise à l’échelle automatique Lakebase. Tous les magasins de fonctionnalités en ligne créés avec fe.create_online_store après le 23 mars 2026 utilisent Lakebase Autoscaling.
  • Le projet Lakebase sous-jacent a été créé après que la prise en charge des CMK est devenue disponible dans votre région. Les projets Lakebase créés avant cela ne sont pas chiffrés avec une clé CMK, même si l’espace de travail en active une par la suite.

Le projet Lakebase qui sauvegarde un magasin de fonctionnalités en ligne porte le même nom que le magasin en ligne. Pour le trouver, cliquez sur l’icône Application. Sélecteur d’applications dans le coin supérieur droit de votre espace de travail pour ouvrir l’application Lakebase et localiser le projet avec ce nom. Pour confirmer que le magasin est chiffré avec votre clé CMK, vérifiez la carte d’état des clés gérées par le client sur ce projet. Consultez Vérifier l’état du chiffrement.

Gérer les magasins en ligne

Le code suivant montre comment récupérer des magasins en ligne :

# List all accessible online stores
stores = fe.list_online_stores()
for store in stores:
    print(f"Store: {store.name}, State: {store.state}, Capacity: {store.capacity}")

# Get information about an existing online store
store = fe.get_online_store(name="my-online-store")
if store:
    print(f"Store: {store.name}, State: {store.state}, Capacity: {store.capacity}")

Si vous avez créé un magasin en ligne à l’aide fe.create_online_storede , vous pouvez le mettre à jour à l’aide de fe.update_online_store:

# Update the capacity of an online store
# Note: this does not work for an Autoscaling instance that was created using the projects API or the UI
updated_store = fe.update_online_store(
    name="my-online-store",
    capacity="CU_4"  # Upgrade to higher capacity
)

Ajouter des réplicas en lecture à un magasin en ligne

Lors de la création ou de la mise à jour d’un magasin de caractéristiques en ligne, vous pouvez ajouter des réplicas en lecture à ce dernier en spécifiant le paramètre read_replica_count. Le trafic de lecture est automatiquement distribué entre les réplicas en lecture, ce qui réduit la latence et améliore les performances et l'évolutivité pour les charges de travail concurrentes.

Vous ne pouvez pas ajouter de réplicas en lecture à un projet de mise à l’échelle automatique Lakebase créé à l’aide de l’API ou de l’interface utilisateur.

Publier une table de fonctionnalités dans un magasin en ligne

Une fois que votre magasin en ligne est à l’état AVAILABLE , vous pouvez publier des tables de fonctionnalités pour les rendre disponibles pour un accès à faible latence. L’API publish_table synchronise les données de votre table de fonctionnalités hors connexion vers le magasin en ligne créé à l’aide de l’API create_online_store . Passez en revue le tableau ci-dessous pour vous assurer que votre table hors connexion source a été créée correctement pour le cas d’usage en temps réel.

Cas d’utilisation Créer la table de fonctionnalités hors connexion à l’aide de cette méthode
Seules les dernières valeurs de fonctionnalité pour chaque ID d’entité sont disponibles dans le magasin en ligne pour les applications en temps réel. Plusieurs lignes avec la même valeur de clé primaire, mais différentes valeurs de clé de série chronologique peuvent exister dans la source de données hors connexion et seront dédupliquées dans le pipeline de publication.
Ce cas est le plus souvent utilisé pour les points de terminaison de mise en service de modèles ou de mise en service de caractéristiques en ligne.
Créer une table avec la désignation de série chronologique
Les dernières valeurs et toutes les valeurs des caractéristiques des séries chronologiques précédentes de la table hors ligne sont disponibles dans le magasin de caractéristiques en ligne afin d'être utlisées par les applications en temps réel.
Toutes les lignes de la table source (hors connexion) sont publiées sans déduplication. Utilisez-le uniquement lorsqu’un point de terminaison doit récupérer une valeur historique spécifique de caractéristique par identifiant d’entité et une date/heure exacte — par exemple, pour vérifier ou retester les prédictions par rapport aux valeurs exactes des caractéristiques qui ont été servies à un moment donné. Il s’agit d’une recherche par correspondance exacte sur une clé primaire de type chaîne, et non d’une requête à un instant donné (as-of) ni d’une requête sur une plage temporelle. Pour utiliser une colonne DATE ou TIMESTAMP comme clé de recherche simple (sans sémantique de série chronologique), changez le type de colonne en STRING.
Créer une table sans désignation de série chronologique

Conditions préalables à la publication dans des magasins en ligne

Toutes les tables de fonctionnalités (avec ou sans série chronologique) doivent répondre à ces exigences avant la publication :

  1. Contrainte de clé primaire : nécessaire pour la publication sur la boutique en ligne
  2. Clés primaires non nullables : les colonnes de clé primaire ne peuvent pas contenir de valeurs NULL
  3. Flux de données changeant activé : requis pour les modes de publication CONTINUOUS et TRIGGERED. Consultez Utiliser le flux de données modifiées pour savoir comment activer le flux de données de modification de table Delta et les modes Publier pour une discussion sur les modes de publication.
-- Enable CDF if not already enabled
ALTER TABLE catalog.schema.your_feature_table
SET TBLPROPERTIES ('delta.enableChangeDataFeed' = 'true');

-- Ensure primary key columns are not nullable
ALTER TABLE catalog.schema.your_feature_table
ALTER COLUMN user_id SET NOT NULL;

Publier une table de fonctionnalités

Pour publier une table de fonctionnalités dans un magasin en ligne :

from databricks.ml_features.entities.online_store import DatabricksOnlineStore

# Get the online store instance
# For Lakebase Autoscaling projects creating using the Lakebase API or UI,
# `name` is the last part of the resouce name: projects/{online_store_name}
online_store = fe.get_online_store(name="my-online-store")

# Publish the feature table to the online store
fe.publish_table(
    online_store=online_store,
    source_table_name="catalog_name.schema_name.feature_table_name",
    # for online_table_name, the catalog name, schema name, and table name each are limited to a maximum of 63 bytes
    online_table_name="catalog_name.schema_name.online_feature_table_name",
    # `publish_mode` argument is optional and defaults to "TRIGGERED" mode if not specified
)

L’opération publish_table effectue les opérations suivantes :

  1. Créez une table dans le magasin en ligne si elle n’existe pas.
  2. Synchronisez les données de fonctionnalités de la table de fonctionnalités hors connexion vers le magasin en ligne.
  3. Configurez l’infrastructure nécessaire pour synchroniser le magasin en ligne avec la table hors connexion.

publish_table utilise toujours la branche par défaut du projet de mise à l’échelle automatique Lakebase.

Modes de publication

Le publish_mode paramètre détermine comment et quand la table en ligne est mise à jour avec les modifications de la table de fonctionnalités hors connexion.

Voir les modes de synchronisation pour tous les détails sur les modes pris en charge.

Les modes pris en charge sont résumés ci-dessous :

Mode Descriptif
TRIGGERED Default. Met à jour de manière incrémentielle la table en ligne avec des modifications de la table hors connexion à l’aide de l’API ou selon une planification. Options de déclenchement périodique de la synchronisation des données :
  • Créez un notebook qui exécute publish_table. Créez un travail Lakeflow planifié qui exécute ce notebook pour mettre à jour de manière incrémentielle les caractéristiques en ligne. Consultez Tâche de notebook pour les travaux.
  • Planifiez les mises à jour du pipeline avec l’ID de l’objet retourné de publish_table. Consultez Exécuter une mise à jour de pipeline.

Ce mode nécessite que le flux de données modifiées soit activé sur la table hors connexion. Consultez les conditions préalables pour la publication dans les magasins en ligne.
CONTINUOUS La table en ligne est configurée avec un pipeline de diffusion en continu pour mettre à jour immédiatement le magasin en ligne à mesure que de nouvelles données sont écrites dans la table de caractéristiques hors ligne.
SNAPSHOT Effectue une synchronisation unique qui copie toutes les données de la table source dans le magasin en ligne. Ce mode est efficace lorsqu’il existe un grand nombre de mises à jour sur les lignes existantes entre deux opérations de synchronisation.

Le publish_mode paramètre remplace le streaming paramètre à partir de la version v0.13.0.1 et des versions antérieures. Pour la compatibilité descendante, si streaming=True est passé, cela équivaut à définir publish_mode="CONTINUOUS".

Supprimer une table en ligne

Pour supprimer une table en ligne, utilisez le Kit de développement logiciel (SDK) Databricks :

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
w.feature_store.delete_online_table(online_table_name="catalog_name.schema_name.online_feature_table_name")

Important

Il s’agit de la seule méthode recommandée pour supprimer une table en ligne. Elle supprime la table du catalogue Unity et de la base de données. D’autres méthodes telles que la commande DROP TABLE Databricks SQL ou la commande du Kit de développement logiciel (SDK) Python pour supprimer une table synchroniséene suppriment pas la table du stockage de base de données sous-jacent.

Explorer et interroger des fonctionnalités en ligne

Une fois que l’état de votre table publiée est « AVAILABLE », vous pouvez explorer et interroger les données de fonctionnalité de plusieurs façons :

Interface utilisateur du catalogue Unity : accédez à la table en ligne dans Le catalogue Unity pour afficher des exemples de données et explorer le schéma directement dans l’interface utilisateur. Cela offre un moyen pratique d’inspecter vos données de fonctionnalité et de vérifier que le processus de publication s’est terminé correctement.

Éditeur SQL : Pour des requêtes et une exploration de données plus avancées, vous pouvez utiliser l’éditeur SQL pour exécuter des requêtes PostgreSQL sur vos tables de fonctionnalités en ligne. Cela vous permet d’effectuer des requêtes, des jointures et des analyses complexes sur vos données de fonctionnalité. Pour obtenir des instructions détaillées sur l’utilisation de l’éditeur SQL avec des magasins en ligne, consultez Query from Lakebase SQL Editor.

Utiliser des fonctionnalités en ligne dans des applications en temps réel

Pour servir des fonctionnalités aux applications et services en temps réel, créez un point de terminaison de distribution de fonctionnalités. Consultez les points de terminaison de service de fonction.

Les modèles entraînés à l’aide des caractéristiques de Databricks effectuent automatiquement la traçabilité des caractéristiques qu'ils utilisent pour leur entraînement. Lorsqu’ils sont déployés en tant que points de terminaison, ces modèles utilisent le catalogue Unity pour rechercher les fonctionnalités appropriées dans les magasins en ligne. Pour plus d’informations, consultez Utiliser des fonctionnalités dans les flux de travail en ligne.

Supprimer un magasin en ligne

Pour supprimer un magasin en ligne :

fe.delete_online_store(name="my-online-store")

Note

La suppression d’une table publiée en ligne peut entraîner des défaillances inattendues dans les dépendances en aval. Avant de supprimer une table, vous devez vous assurer que ses fonctionnalités en ligne ne sont plus utilisées par les points de terminaison de mise en service de modèles ou de caractéristiques.

Meilleures pratiques en termes d’optimisation des coûts

  • Réutiliser les magasins en ligne : vous pouvez publier plusieurs tables de fonctionnalités dans un magasin en ligne unique. Pour les scénarios de développement, de test et de formation, nous vous recommandons de partager un magasin en ligne sur plusieurs projets ou utilisateurs plutôt que de créer des magasins distincts.
  • Capacité de taille appropriée : commencez par CU_2 pour les tests et effectuez uniquement un scale-up ou un scale-down en fonction des performances et des coûts.
  • Supprimer les magasins en ligne qui ne sont pas utilisés : les magasins en ligne entraînent continuellement des coûts. Supprimez les magasins en ligne qui ne sont plus nécessaires.

Limitations

  • Le nom du catalogue d’une table en ligne doit correspondre à celui de la base de données sous-jacente. Le service de fonctionnalités en ligne exige que le nom du catalogue Unity Catalog d’une table en ligne soit identique au nom de sa base de données Lakebase (Postgres) sous-jacente ; s’ils diffèrent, le point de terminaison de service du modèle ne peut pas être déployé. La publication ou la matérialisation via les API d’ingénierie des fonctionnalités (publish_table, materialize_features) crée par défaut un catalogue correspondant. Un décalage survient uniquement lorsque vous ciblez un catalogue enregistré dans une base de données au nom différent — par exemple un catalogue étranger, ou un catalogue en ligne géré créé avec un nom de base de données personnalisé — ce qui n’est pas pris en charge pour la diffusion de fonctionnalités en ligne.
  • La spécification d’une table en ligne spécifique n’est pas prise en charge. Lorsqu’une table de fonctionnalités est publiée sur plusieurs tables en ligne, les points de terminaison de mise en service de modèles ou de caractéristiques sont toujours résolus en une table en ligne la plus ancienne en fonction de l’horodatage de création.
  • Un store de fonctionnalités en ligne prend en charge jusqu'à 3 réplicas en lecture (4 instances de calcul au total, y compris l'instance principale). Les réplicas en lecture déchargent le trafic de lecture depuis le serveur principal et fournissent une haute disponibilité en prenant le relais si le serveur principal échoue.
  • Les paramètres suivants ne sont pas pris en charge lors de la publication dans un magasin de fonctionnalités en ligne Databricks : filter_condition, , checkpoint_location, mode, triggeret features.
  • Seules les tables de fonctionnalités de Unity Catalog sont prises en charge.
  • La mise à l’échelle de zéro Lakebase n’est pas prise en charge.
  • Les endpoints Feature Serving et Model Serving qui récupèrent des variables depuis plusieurs feature stores en ligne continuent de fonctionner s’ils existent déjà, mais vous ne pouvez pas créer de nouveaux endpoints de ce type sur des instances Lakebase Autoscaling.
  • Les instances de mise à l’échelle automatique créées à l’aide de l’API de projets ou de l’interface utilisateur n’utilisent pas les champs suivants : creator, read_replica_countet capacity.
  • Vous ne pouvez pas mettre à jour une instance de mise à l’échelle automatique créée à l’aide de l’API de projets ou de l’interface utilisateur.
  • Les clés gérées par le client (CMK) s’appliquent uniquement aux magasins de fonctionnalités en ligne créés après la mise à disposition de CMK dans la région. Consultez Chiffrement avec des clés gérées par le client.

Résolution des problèmes

Message d’erreur : Skipping publishing to online table '...' because the feature sync pipeline is already running.

Cette erreur se produit si plusieurs blocs-notes ou travaux tentent de publier sur une table en ligne en même temps. Une seule opération de synchronisation est autorisée par table en ligne à la fois pour empêcher les conflits de données.

Databricks recommande de concevoir vos flux de travail pour utiliser une seule publish_table commande, par exemple une tâche unique à la fin d’un travail. Si vos flux de travail ne peuvent pas être coordonnés de cette façon, utilisez get_status() cette option pour attendre que d’autres commandes de publication aient terminé la synchronisation avant de déclencher une nouvelle publication.

Exemple de notebook

Le notebook suivant montre un exemple de configuration et d’accès à un magasin de caractéristiques en ligne Databricks à l’aide de Databricks Lakebase.

Magasin de fonctionnalités en ligne avec notebook Lakebase

Obtenir un ordinateur portable

Ressources supplémentaires

  • Comprendre l’architecture et les fonctionnalités de Lakebase .