FeatureDB es un servicio de base de datos que ofrece la plataforma FeatureStore (PAI-FeatureStore) de Alibaba Cloud PAI. Funciona como el almacén en línea de FeatureStore y proporciona almacenamiento de características en línea de alto rendimiento, con operaciones de lectura y escritura optimizadas para servicios como búsqueda, recomendación y publicidad. En este tema se presenta FeatureDB y se describen sus funciones y beneficios.
Qué es FeatureDB
FeatureDB es una base de datos de almacenamiento distribuido de alto rendimiento que proporciona FeatureStore. Admite los formatos de datos KV y KKV, y permite almacenar arreglos de forma estructurada mediante el tipo Array y pares clave-valor mediante el tipo Map. Almacenar los datos con los tipos Array y Map mejora el rendimiento de las operaciones posteriores de lectura y escritura, así como de los servicios de inference. FeatureDB es totalmente compatible con los pipelines de producción, actualización y consumo de características tanto sin conexión como en tiempo real, incluidas las características de secuencia de comportamiento del usuario.
Cómo activarlo
Active FeatureDB al crear un nuevo origen de datos de FeatureDB; para ello, siga las instrucciones que aparecen en pantalla. Para más detalles, consulte Create an online data source: FeatureDB.
Funciones del producto
FeatureDB implementa a continuación varias capacidades y optimizaciones diseñadas específicamente para las características de lectura de datos de FeatureStore:
Admite la lectura y escritura de características de tipo KV y KKV.
Permite leer y escribir características de tipo complejo de MaxCompute (Array, Map).
Es compatible con la extracción completa de todos los datos de características dentro de un FeatureView.
Admite sondeos a nivel de milisegundos para actualizar los datos de características en tiempo real.
Incluye compatibilidad con TTL a nivel de segundos para limpiar automáticamente los datos caducados.
Utiliza facturación pay-as-you-go basada en el volumen real de datos leídos y escritos.
FeatureDB fragmenta los datos de FeatureView en varias particiones. Ajuste el número de fragmentos para cumplir con los requisitos de rendimiento de lectura y escritura de cada escenario. También admite réplicas para garantizar la estabilidad y seguridad de los datos. El número de fragmentos se establece según la Estimated Data Scale que seleccione:
Below tens of millions (predeterminado): 5 fragmentos.
Between tens of millions and hundreds of millions: 10 fragmentos.
Above hundreds of millions: 20 fragmentos.
En el cuadro de diálogo Create Feature View , seleccione la escala adecuada en la lista desplegable Estimated Data Scale .
Beneficios
-
Alta rentabilidad
Los clientes con necesidades de almacenamiento de características a menor escala pueden reducir costos con FeatureDB.
-
Cumple con los requisitos de actualización de alta frecuencia
Cuando se usan características estadísticas en tiempo real, es necesario actualizarlas en varias instancias de EasyRec Processor (servicio de inference de modelos) cada pocos segundos. Esto exige actualizaciones de alta frecuencia, las cuales FeatureDB admite sin problema.
-
Compatible con características de tipo complejo
En escenarios de búsqueda y publicidad, se utilizan ampliamente las características de tipo Array y Map, las secuencias largas de comportamiento del usuario y su SideInfo. Almacenar características de tipo complejo como cadenas obliga a serializarlas al tipo Map durante su uso, lo que degrada el rendimiento.
FeatureDB permite almacenar datos de tipo complejo de forma nativa y sincronizar datos de tipo complejo de MaxCompute 2.0 hacia FeatureDB para lograr lecturas de alto rendimiento.
-
Escalabilidad elástica
Los clientes a gran escala pueden aumentar de manera flexible el número de fragmentos por vista de características para mejorar el rendimiento de lectura y escritura.
-
Elimina los puntos ciegos de monitoreo
Integrar orígenes de datos de terceros dificulta el monitoreo integral del pipeline de datos, sobre todo en características en tiempo real. FeatureDB monitorea métricas de rendimiento clave —como QPS de lectura y escritura, RT, latencia de actualización de datos y uso de almacenamiento— con la granularidad de cada vista.
Capacidades del producto
Conectividad VPC de alta velocidad
FeatureDB ofrece conectividad VPC de alta velocidad mediante PrivateLink. Una vez completada la configuración, FeatureStore usa PrivateLink para conectar su VPC al servicio FeatureDB. Después, puede acceder a FeatureDB mediante una conexión privada desde su VPC con FeatureStore SDK, lo que mejora el rendimiento de lectura y escritura de datos y reduce la latencia de acceso.
Configure la conectividad VPC de alta velocidad de la siguiente manera:
Método 1: si aún no ha creado un origen de datos de FeatureDB, haga clic en Manage Data Source . En la página Manage Data Source, haga clic en Create Data Source . Al crear el origen de datos de FeatureDB, complete la sección VPC Direct Connection Configurations con su VPC y Zone and vSwitch. Para conocer los pasos detallados, consulte Create an online data source: FeatureDB.
Método 2: si ya creó un origen de datos de FeatureDB, haga clic en Manage Data Source . En la página Manage Data Source, haga clic en el origen de datos feature_db existente para ir a su página de producto. Haga clic en VPC Direct Connection Configurations, introduzca su VPC y Zone and vSwitch, y luego haga clic en Confirm.
Notas
Una vez establecida, la VPC no se puede modificar. Confirme que la VPC configurada coincida con la que utiliza su servicio en línea de FeatureStore.
-
Despliegue su servicio en la zona recomendada para evitar la latencia de red entre zonas y maximizar el rendimiento de acceso.
Área
Región
Zona recomendada
Asia-Pacífico
China (Hangzhou)
Zone G
China (Shanghai)
Zone L
China (Beijing)
Zone F
China (Shenzhen)
Zone F
Hong Kong (China)
Zone B
Singapore
Zone C
Indonesia (Jakarta)
Zone B
Europa y América
Germany (Frankfurt)
Zone A
US (Silicon Valley)
Zone B
Zone and vSwitch: asegúrese de seleccionar vSwitches en la misma zona que sus instancias de servicio en línea. Para lograr alta disponibilidad y estabilidad, seleccione vSwitches en como mínimo dos zonas; de preferencia, la zona donde se ejecuta su servicio en línea y la zona recomendada que se muestra en la tabla anterior.
Una vez completada la configuración, solo podrá agregar vSwitches de otras zonas. No es posible modificar ni eliminar las configuraciones existentes.
Escritura de características
Para las características sin conexión, utilice el SDK de Python de FeatureStore junto con DataWorks para ejecutar tareas programadas diarias que sincronicen los datos de MaxCompute hacia FeatureDB.
De forma predeterminada, las escrituras de características en tiempo real actualizan la fila completa. Si los datos escritos incluyen solo algunos campos, los campos faltantes se dejan vacíos. Para actualizar únicamente campos específicos y combinarlos con los datos existentes, aplique la siguiente configuración:
-
Al escribir mediante el SDK de Java: especifique InsertMode como InsertMode.PartialFieldWrite.
for (int i = 0; i < 100;i++) { featureView.writeFeatures(writeData, InsertMode.PartialFieldWrite); } Al escribir mediante Flink Connector: establezca el parámetro insert_mode en partial_field_write.
Lectura de características
Utilice FeatureStore SDK (Go/Java) o EasyRec Processor para leer características.
El SDK de FeatureStore (Go/Java) admite uniones KV de punto en el tiempo para características sin conexión y en tiempo real. Especifique el JoinID (clave principal) y el nombre de la característica para completar una consulta KV y recuperar los datos objetivo en milisegundos. El SDK también admite consultas KKV para características de secuencia de comportamiento. Solo tiene que especificar un UserID para obtener los resultados ensamblados de las características de secuencia.
EasyRec Processor integra el SDK de C++ de FeatureStore, lo que permite cargar por completo los datos de características de FeatureDB en memoria. Además, realiza sondeos a nivel de milisegundos para actualizar las características en tiempo real dentro de la memoria y así lograr un mayor rendimiento de lectura.
Métricas de monitoreo
Si utiliza FeatureDB como almacén en línea, después de crear una vista de características, haga clic en Data Monitoring junto a la vista correspondiente para consultar métricas como el QPS de lectura y escritura, y el RT. (Nota: las escrituras provenientes de la sincronización de datos de vistas de características sin conexión no se reflejan en estas métricas).
Pipeline de características en tiempo real
El servicio de almacenamiento de FeatureStore consta de tres componentes: Feature Service (capa de acceso), cola de mensajes (DataHub) y FeatureDB.
Para las características en tiempo real, puede invocar Feature Service mediante el SDK de Java de FeatureStore o Flink Connector para escribir datos de características en FeatureDB. Los datos escritos a través de Feature Service también se sincronizan con su tabla de MaxCompute para exportar muestras de características en tiempo real y continuar con el entrenamiento de modelos.
Puede leer los datos de características almacenados en FeatureDB con los SDK de Java o Go de FeatureStore, o bien extraer todas las características a la caché local mediante EasyRec Processor para obtener un mejor rendimiento de lectura. Las características en tiempo real entregan la información más reciente en milisegundos.
Configuración del ciclo de vida de los datos de características en tiempo real
Al crear una vista de características en tiempo real, configure el ciclo de vida de los datos de la tabla de FeatureDB mediante Feature Lifecycle . Las filas caducan y se limpian automáticamente en cuestión de segundos tras alcanzar su duración de ciclo de vida.
Actualmente, el tiempo de vida (TTL) de los datos admite dos métodos de configuración:
Método 1: no especifique un campo Event Time. En este caso, el tiempo de vida comienza a partir del momento de escritura de los datos, y las filas se limpian automáticamente al caducar.
-
Método 2: seleccione un campo de característica como campo Event Time (unidad: milisegundos). Considere event_time como el valor del campo Event Time, time_now como la hora actual y time_ttl = time_now - ttl como el umbral de event_time para la caducidad. FeatureDB procesa los datos escritos de la siguiente manera:
Si utiliza el modo PartialFieldWrite para actualizaciones de campos parciales, el tiempo de vida se calcula a partir de la hora real de escritura.
Si event_time > time_now + 15 min: los datos no se escriben. (Esto previene discrepancias de marcas de tiempo entre sistemas al permitir un margen de 15 minutos).
Si time_ttl < event_time <= time_now + 15 min: los datos se escriben con normalidad. El tiempo de vida comienza a partir de event_time y la fila se limpia automáticamente al caducar.
Si 0 < event_time < time_ttl: los datos se escriben, pero se limpian de inmediato. Nota: event_time está en milisegundos. Si su campo Event Time usa segundos, los datos caerán en este caso y no se conservarán.
Si event_time <= 0: el tiempo de vida se calcula a partir de la hora real de escritura.
Si el valor no es válido (no se puede convertir a un entero): los datos no se escriben.
Si el campo Event Time está registrado, pero no se proporciona ningún valor para dicho campo Event Time: los datos se escriben con normalidad y su tiempo de vida se calcula con base en la hora real de escritura.
Si no hay ningún campo Event Time registrado: los datos se escriben con normalidad y el tiempo de vida se calcula a partir de la hora real de escritura.
Además, FeatureDB utiliza el valor de event_time como la marca de tiempo (ts) de la fila. Para actualizar los datos de una clave determinada, el nuevo valor de Event Time debe ser mayor o igual que el valor anterior. Si el nuevo event_time es menor que el original, los datos de la clave no se actualizarán.
Pruebas de rendimiento
A continuación se muestran ejemplos de resultados de pruebas de estrés para leer datos de FeatureDB mediante FeatureStore Go SDK en un entorno VPC. Los datos de prueba provienen de tablas del lado del usuario en un escenario de recomendación, con un total de 17,689,586 filas. Las pruebas se ejecutaron en una máquina de 4 núcleos y 8 GiB. Los resultados son únicamente de referencia.
-
Con VPC Network High-Speed Connectivity configurado y el servicio en línea desplegado en recommended zone:
Número de campos de características (columnas)
Número de claves leídas (filas)
Latencia promedio
TP95
TP99
260
1
0.89 ms
1.20 ms
1.45 ms
260
10
1.17 ms
1.52 ms
1.87 ms
260
50
1.91 ms
2.56 ms
2.92 ms
260
100
2.87 ms
3.58 ms
3.93 ms
260
200
4.43 ms
5.25 ms
5.80 ms
-
Con la conectividad de alta velocidad de red VPC configurada, pero el servicio en línea desplegado en una zona no recomendada:
Número de campos de características (columnas)
Número de claves leídas (filas)
Latencia promedio
TP95
TP99
260
1
2.54 ms
2.86 ms
3.15 ms
260
10
2.75 ms
3.12 ms
3.56 ms
260
50
3.95 ms
4.75 ms
5.19 ms
260
100
4.82 ms
5.66 ms
6.21 ms
260
200
6.84 ms
7.75 ms
8.25 ms
-
Sin la conectividad de alta velocidad de red VPC configurada:
Número de campos de características (columnas)
Número de claves leídas (filas)
Latencia promedio
TP95
TP99
260
1
3.62 ms
3.83 ms
4.27 ms
260
10
3.82 ms
4.11 ms
4.61 ms
260
50
4.54 ms
5.19 ms
5.60 ms
260
100
5.40 ms
6.13 ms
6.56 ms
260
200
7.15 ms
7.93 ms
8.47 ms
Facturación
Para más detalles, consulte FeatureStore billing.