Databricks Online-funktionslager

Databricks Online Feature Stores är en högpresterande, skalbar lösning för att betjäna funktionsdata till onlineprogram och maskininlärningsmodeller i realtid. Online Feature Stores som drivs av Databricks Lakebase erbjuder åtkomst till funktionsegenskapsdata med låg svarstid i hög skala samtidigt som konsekvensen med dina offlinefunktionstabeller bibehålls.

De primära användningsfallen för Online Feature Stores är:

Nya onlinefunktionsbutiker skapas nu som Lakebase Autoscaling-projekt. Mer information och skillnader finns i Lakebase-sammanslagning på autoskalning.

Requirements

Databricks Online Feature Stores kräver Databricks Runtime 16.4 LTS ML eller senare. Du kan också använda serverlös beräkning.

Om du vill använda Databricks Online Feature Stores måste du först installera paketet. Följande kodrader måste köras varje gång en notebook-fil körs:

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

Skapa en onlinebutik

När du skapar en onlinebutik etablerar du en hanterad infrastruktur med hög tillgänglighet för funktionsservering i realtid. API:et create_online_store skapar en Lakebase Autoscaling-instans. Mer information om Lakebase Autoscaling finns i Lakebase Postgres.

Om du vill hantera kostnader tar du bort onlinebutiker när de inte används för utveckling och testning.

Så här skapar du en ny onlinefunktionsbutik:

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

Inställningen capacity styr hur mycket beräkning din onlinebutik kan använda. Dess värde är en Lakebase Compute Unit (CU). För tillgängliga beräkningsstorlekar och vad en CU inkluderar, se Tillgängliga beräkningsstorlekar.

Information om behörigheter för Lakebase Autoscaling-instanser finns i Bevilja projektbehörigheter.

Kryptering med kundhanterade nycklar

Online-funktionsarkiv stöder kryptering av lagrade data med en kundhanterad nyckel (CMK) tack vare det underliggande stödet i Lakebase Autoscaling. Ingen konfiguration av Lakebase eller Feature Store krävs; CMK gäller automatiskt för relevanta arbetsytor.

CMK tillämpas automatiskt när allt följande är sant:

  • Arbetsytan har en kundhanterad nyckel konfigurerad för hanterade tjänster. Se Kundhanterade nycklar för Lakebase.
  • Online-funktionsbutiken backas upp av ett Lakebase Autoscaling-projekt. Alla onlinefunktioner som skapats med fe.create_online_store efter den 23 mars 2026 använder Lakebase Autoscaling.
  • Det underliggande Lakebase-projektet skapades efter att stöd för CMK blev tillgängligt i din region. Lakebase-projekt som skapades dessförinnan krypteras inte med en CMK, även om arbetsytan senare aktiverar en sådan.

Lakebase-projektet som stöder en onlinefunktionsbutik har samma namn som onlinebutiken. Om du vill hitta den klickar du på appikonen. Appväxlaren i det övre högra hörnet på arbetsytan för att öppna Lakebase-appen och leta upp projektet med det namnet. Du kan kontrollera att lagringen är krypterad med din CMK genom att kontrollera statuskortet Kundhanterade nycklar på det projektet. Se Kontrollera krypteringsstatus.

Hantera onlinebutiker

Följande kod visar hur du hämtar onlinebutiker:

# 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}")

Om du har skapat en onlinebutik med fe.create_online_store, kan du uppdatera den med 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
)

Lägga till läsrepliker i en onlinebutik

När du skapar eller uppdaterar en onlinefunktionsbutik kan du lägga till läsrepliker i onlinebutiken genom att ange parametern read_replica_count . Lästrafik distribueras automatiskt över läsrepliker, vilket minskar svarstiden och förbättrar prestanda och skalbarhet för arbetsbelastningar med hög samtidighet.

Du kan inte lägga till läsrepliker i ett Lakebase Autoscaling-projekt som skapades med hjälp av API:et eller användargränssnittet.

Publicera en funktionstabell till en onlinebutik

När din onlinebutik är i tillståndet TILLGÄNGLIG kan du publicera funktionstabeller för att göra dem tillgängliga för åtkomst med låg svarstid. API:et publish_table synkroniserar data från offlinefunktionstabellen till onlinebutiken som skapats med HJÄLP av API:et create_online_store . Granska tabellen nedan för att se till att källtabellen offline har skapats korrekt för användningsfallet i realtid.

Användningsfall Skapa offlinefunktionstabellen med den här metoden
Endast de senaste funktionsvärdena för varje entitets-ID är tillgängliga i onlinebutiken för realtidsprogram. Flera rader med samma primärnyckelvärde men olika tidsserienyckelvärden kan finnas i offlinedatakällan och dedupliceras i publiceringspipelinen.
Det här fallet används oftast för onlinemodell eller funktion som betjänar slutpunkter.
Skapa tabell med tidsseriebeteckning
De senaste och alla tidigare tidsseriefunktionsvärden från offlinetabellen är tillgängliga i onlinebutiken för åtkomst via realtidsprogram.
Alla rader från källtabellen (offline) publiceras utan deduplicering. Använd detta endast när en slutpunkt måste hämta ett specifikt historiskt funktionsvärde via entitets-ID och ett exakt datum/tidsstämpel — till exempel för att verifiera eller backtesta förutsägelser mot de exakta funktionsvärden som levererades vid en tidigare tidpunkt. Detta är en exakt matchningsuppslagning på en strängprimärnyckel, inte en tidpunktsfråga (as-of) eller tidsintervall. Om du vill använda en DATE eller TIMESTAMP kolumn som en vanlig uppslagsnyckel (utan tidsseriesemantik) ändrar du kolumntypen till STRING.
Skapa tabell utan tidsseriebeteckning

Förutsättningar för publicering till onlinebutiker

Alla funktionstabeller (med eller utan tidsserier) måste uppfylla dessa krav innan de publiceras:

  1. Primär nyckelbegränsning: Krävs för publicering av onlinebutiker
  2. Icke-nullbara primära nycklar: Primärnyckelkolumner får inte innehålla NULL-värden
  3. Ändra dataflöde aktiverat: Krävs för lägena CONTINUOUS och TRIGGERED publicering. Se Använd ändringsdataflöde om hur du aktiverar Delta Tables Change Data Feed och Publiceringslägen för en diskussion om publiceringslägen.
-- 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;

Publicera en egenskapstabell

Så här publicerar du en funktionstabell i en onlinebutik:

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
)

Åtgärden publish_table gör följande:

  1. Skapa en tabell i onlinebutiken om den inte finns.
  2. Synkronisera funktionsdata från offline-funktionstabellen till onlinebutiken.
  3. Konfigurera nödvändig infrastruktur för att hålla onlinebutiken synkroniserad med offlinetabellen.

publish_table använder alltid standardgrenen för Lakebase Autoscaling-projektet.

Publiceringslägen

Parametern publish_mode avgör hur och när onlinetabellen uppdateras med ändringar från offlinefunktionstabellen.

Se Sync-lägen för fullständig information om de stödda lägena.

De lägen som stöds sammanfattas nedan:

Mode Description
TRIGGERED Default. Uppdaterar onlinetabellen stegvis med ändringar från offlinetabellen med hjälp av API:et eller enligt ett schema. Alternativ för att utlösa datasynkroniseringen regelbundet:
  • Skapa en notebook-fil som kör publish_table. Skapa ett schemalagt Lakeflow-jobb som kör den här notebook-filen för att stegvis uppdatera onlinefunktionerna. Se Anteckningsbloksuppgift för jobb.
  • Schemalägg uppdateringar av pipelinen med ID från det returnerade objektet i publish_table. Se Kör en pipelineuppdatering.

Det här läget kräver att Ändra dataflöde är aktiverat i offlinetabellen. Se Förutsättningar för publicering till onlinebutiker.
CONTINUOUS Onlinetabellen konfigureras med en strömmande pipeline för att omedelbart uppdatera onlinebutiken när nya data skrivs till offline-funktionstabellen.
SNAPSHOT Utför en engångssynkronisering som kopierar alla data från källtabellen till onlinebutiken. Det här läget är effektivt när det finns ett stort antal uppdateringar på befintliga rader mellan två synkroniseringsåtgärder.

Parametern publish_mode ersätter parametern streaming från v0.13.0.1 och tidigare versioner. För bakåtkompatibilitet, om streaming=True skickas, motsvarar det inställningen publish_mode="CONTINUOUS".

Ta bort en tabell online

Om du vill ta bort en onlinetabell använder du Databricks SDK:

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

Det här är den enda rekommenderade metoden för att ta bort en onlinetabell. Den tar bort tabellen från både Unity Catalog och databasen. Andra metoder som Databricks SQL-kommandot DROP TABLE eller Python SDK-kommandot för att ta bort en synkroniserad tabelltar inte bort tabellen från den underliggande databaslagringen.

Utforska och sök onlineegenskaper

När din publicerade tabellstatus visas som "TILLGÄNGLIG" kan du utforska och köra frågor mot funktionsdata på flera sätt:

Användargränssnitt för Unity Catalog: Navigera till onlinetabellen i Unity Catalog för att visa exempeldata och utforska schemat direkt i användargränssnittet. Det här är ett praktiskt sätt att inspektera dina funktionsdata och kontrollera att publiceringsprocessen har slutförts.

SQL-redigerare: För mer avancerad fråge- och datautforskning kan du använda SQL-redigeraren för att köra PostgreSQL-frågor mot dina onlinefunktionstabeller. På så sätt kan du utföra komplexa frågor, kopplingar och analyser på dina funktionsdata. Detaljerade anvisningar om hur du använder SQL-redigeraren med onlinebutiker finns i Fråga från Lakebase SQL-redigeraren.

Använda onlinefunktioner i realtidsprogram

Skapa en funktion som betjänar slutpunkten för att hantera funktioner i realtidsprogram och -tjänster. Se Funktionsserverslutpunkter.

Modeller som tränas med hjälp av funktioner från Databricks spårar automatiskt ursprung till de funktioner som de har tränats på. När de distribueras som slutpunkter använder dessa modeller Unity Catalog för att hitta lämpliga funktioner i onlinebutiker. Mer information finns i Använda funktioner i onlinearbetsflöden.

Ta bort en onlinebutik

Så här tar du bort en onlinebutik:

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

Note

Om du tar bort en onlinepublicerad tabell kan det leda till oväntade fel i underordnade beroenden. Innan du tar bort en tabell bör du säkerställa att dess onlinefunktioner inte längre används av modell- eller funktionsserver-slutpunkter.

Metodtips för kostnadsoptimering

  • Återanvända onlinebutiker: Du kan publicera flera funktionstabeller i en enda onlinebutik. För utvecklings-, testnings- och träningsscenarier rekommenderar vi att du delar en onlinebutik mellan flera projekt eller användare i stället för att skapa separata butiker.
  • Kapacitet med rätt storlek: Börja med CU_2 för testning och skala bara upp eller ned baserat på prestanda och kostnad.
  • Ta bort onlinebutiker som inte används: Onlinebutiker medför kontinuerligt kostnader. Ta bort onlinebutiker som inte längre behövs.

Limitations

  • En onlinetabells katalognamn måste matcha dess underliggande databasnamn. Servering av onlinefunktioner kräver att en online-tabells katalognamn i Unity Catalog måste vara samma som namnet på dess underliggande Lakebase-databas (Postgres); om de skiljer sig åt går det inte att driftsätta modellserveringsslutpunkten. Publicering eller materialisering via feature engineering-API:erna (publish_table, materialize_features) skapar som standard en matchande katalog. En mismatch uppstår endast när du riktar in dig på en katalog som är registrerad mot en databas med ett annat namn – till exempel en utländsk katalog eller en hanterad onlinekatalog skapad med ett eget databasnamn – vilket inte stöds för online-funktionsservering.
  • Det går inte att ange en specifik onlinetabell. När en funktionstabell publiceras till flera onlinetabeller matchar modellservering och funktionsserverslutpunkter alltid den äldsta onlinetabellen baserat på tidsstämpeln för skapande.
  • Ett onlinefunktionslager har stöd för upp till 3 läsrepliker (totalt 4 beräkningsinstanser, inklusive den primära). Läsrepliker avlastar lästrafik från den primära och ger hög tillgänglighet genom att ta över om det primära misslyckas.
  • Följande parametrar stöds inte när du publicerar till ett Databricks-onlinefunktionsarkiv: filter_condition, checkpoint_location, mode, triggeroch features.
  • Endast funktionstabeller i Unity Catalog stöds.
  • Lakebase scale-to-zero stöds inte.
  • Funktionsserverings- och modelltjänstslutpunkter som söker efter funktioner från flera onlinefunktionslager fortsätter att fungera om de redan finns, men du kan inte skapa nya slutpunkter som denna på Lakebase Autoscaling-instanser.
  • Autoskalningsinstanser som skapats med projekt-API:et eller användargränssnittet använder inte följande fält: creator, read_replica_countoch capacity.
  • Du kan inte uppdatera en autoskalningsinstans som skapades med hjälp av projekt-API:et eller användargränssnittet.
  • Kundhanterade nycklar (CMK) gäller endast för onlinefunktioner som skapats efter att CMK blev tillgängligt i regionen. Se Kryptering med kundhanterade nycklar.

Felsökning

Felmeddelande: Skipping publishing to online table '...' because the feature sync pipeline is already running.

Det här felet uppstår om flera notebook-filer eller jobb försöker publicera till en onlinetabell samtidigt. Endast en enskild synkroniseringsåtgärd tillåts per onlinetabell i taget för att förhindra datakonflikter.

Databricks rekommenderar att du utformar dina arbetsflöden så att de använder ett enda publish_table kommando, till exempel en enda uppgift i slutet av ett jobb. Om dina arbetsflöden inte kan samordnas på det här sättet kan du använda get_status() för att vänta tills andra publiceringskommandon har synkroniserats innan du utlöser en ny publicering.

Exempelanteckningsbok

Följande notebook-fil visar ett exempel på hur du konfigurerar och får åtkomst till en Databricks Online Feature Store med Databricks Lakebase.

Onlinefunktionsbutik med Lakebase Notebook

Hämta anteckningsbok

Ytterligare resurser