Tema representativo de entrevista

Entrevista de diseño de sistemas: ¿Cómo construirías el descubrimiento de objetos con tablas de metadatos de S3?

Diseño de sistemasDifícil
Equipo editorial de Offer.ccPublicado Actualizado

Pregunta

Una plataforma de datos debe encontrar objetos de S3 no cifrados, por expirar o eliminados recientemente, además de admitir consultas de auditoría. ¿Cómo diseñarías las tablas de metadatos de S3, el backfill, las consultas y la recuperación?

Problema y alcance

Las tablas de metadatos de S3 proporcionan metadatos tabulares de objetos para un bucket de uso general: una tabla de journal registra los cambios de objetos y metadatos, mientras que una tabla de inventario en vivo realiza el backfill de una instantánea de los objetos existentes. La pregunta evalúa la combinación de eventos e instantáneas, latencia y consistencia, control de acceso, costo y recuperación; su categoría es system-design. No se trata de un índice externo fuertemente consistente de cada solicitud de S3.

Qué está evaluando el entrevistador

Explicar los roles del journal y del inventario, el impacto del primer backfill, los eventos de eliminación y ciclo de vida, la realización de consultas en las tablas de Iceberg y el manejo de retrasos, duplicados y brechas. Cubrir IAM para buckets de tablas, acceso entre cuentas, metadatos sensibles, particionamiento y costo de escaneo, retención y procedimientos de reconstrucción.

Preguntas para clarificar

  • ¿Las consultas necesitan el estado actual, el historial de cambios o ambos?
  • ¿Qué retraso de descubrimiento es aceptable y la eliminación o la transición de ciclo de vida deben ser en tiempo real?
  • ¿Cuáles son la cantidad de objetos, el volumen de cambio diario, las dimensiones de consulta y el período de retención?
  • ¿Quién puede leer los metadatos, incluidos los campos de inquilino (tenant), cifrado, etiquetas o personalizados?
  • ¿Se requiere un uso entre cuentas o entre Regiones, o solo una cuenta de AWS?
  • ¿Cuál es el objetivo de tiempo de recuperación si se elimina la configuración de la tabla o falla el backfill?

Un marco de respuesta de 30 segundos

“Usa el inventario para establecer la línea base de objetos actuales y el journal para rastrear cambios posteriores; haz explícitas las garantías de instantáneas e historial en el contrato de consulta. Durante el backfill, expón el estado incompleto, desduplica consumidores mediante la hora del evento y la versión del objeto, y genera alertas sobre retrasos y brechas. Restringe las lecturas con políticas de recursos de bucket de tablas, poda las consultas comunes y modela los costos de almacenamiento, escaneo y por objeto. Si se pierde la configuración, preserva el S3 de origen y las exportaciones de auditoría, reconstruye a partir de la configuración versionada y reconcilia la línea base.”

Respuesta paso a paso

Paso 1: Definir el límite del producto de datos

Haz que el “catálogo actual” y el “registro de cambios” sean contratos de consulta separados. El catálogo encuentra objetos no cifrados o por expirar; el journal desencadena flujos de trabajo de gobernanza y auditoría. Los sistemas downstream no deben tratar una tabla de eventos como una tabla de estado actual libre de brechas.

Paso 2: Diseñar el backfill y la transición (cutover)

Crea la configuración y observa el backfill del inventario antes de exponer consultas que afirmen una cobertura total. Durante el backfill, clasifica los objetos como cubiertos, pendientes o fallidos para reintentar, de modo que un objeto no escaneado no se reporte como ausente. Conecta el journal como una fuente incremental únicamente después de que la línea base esté lista.

Paso 3: Fusionar instantáneas y eventos

Haz que el procesamiento sea idempotente con la clave del objeto, la hora del evento y el tipo de evento. Mantén registros de auditoría para eliminaciones, sobrescrituras y cambios de ciclo de vida. Los consumidores deben reproducir el journal y reconciliar periódicamente con el inventario, reparando brechas en lugar de restablecer el índice a ciegas.

Paso 4: Proteger el acceso y los campos sensibles

Usa políticas de recursos de IAM en el bucket de tablas y en las tablas para restringir entidades principales, prefijos y operaciones. Autoriza campos de inquilino, etiquetas y cifrado según la clase de datos, y devuelve solo las columnas requeridas. Para el uso entre cuentas, define la propiedad del bucket, la propiedad de los costos de consulta y la propagación de revocaciones.

Paso 5: Controlar costos y recuperarse de fallas

Particiona o materializa tablas derivadas para filtros comunes, limitando escaneos completos y consultas ad-hoc frecuentes. Rastrea el volumen de journal, inventario y escaneo, así como el costo por objeto. Si se elimina una configuración, una Región no es compatible o el servicio falla, retén los eventos de origen y las instantáneas exportadas, reconstruye a partir de la configuración versionada y reconcilia nuevamente.

Respuesta modelo

“Trataría el inventario como la línea base de objetos existentes y el journal como la fuente de cambios, con garantías explícitas de latencia y consistencia para cada consulta. Después de habilitar la configuración, monitorearía el backfill y no publicaría ninguna conclusión de cobertura total hasta que finalice; luego fusionaría de forma idempotente por clave de objeto, hora de evento y tipo, con reconciliación periódica del inventario. Limitaría por separado el IAM del bucket de tablas, los campos sensibles, los costos entre cuentas y los escaneos de consultas. Durante una falla, preservaría el S3 de origen y las exportaciones de auditoría, reconstruiría a partir de la configuración y verificaría las brechas en lugar de tratar las tablas de metadatos como un índice fuertemente consistente.”

Errores comunes

  • Tratar el journal como una instantánea → la reproducción o pérdida genera un estado incorrecto → reconciliar con el inventario y mantener el estado derivado.
  • Publicar resultados de cumplimiento antes de que se complete el backfill → los objetos no escaneados parecen ausentes → exponer el estado y la cobertura del backfill.
  • Ignorar el orden de sobrescritura y eliminación → un evento antiguo sobrescribe el estado nuevo → usar la hora del evento, el tipo y claves de idempotencia.
  • Otorgar acceso de lectura del bucket de tablas a todos → se filtran metadatos sensibles → autorizar por entidad principal, columna e inquilino.
  • Monitorear solo el almacenamiento → los costos de escaneos y por objeto se disparan → monitorear el volumen, la frecuencia y el costo total.
  • Restablecer el índice tras la pérdida de configuración → el linaje de auditoría y las brechas desaparecen → versionar las reconstrucciones a partir de fuentes retenidas y reconciliar.

Preguntas de seguimiento

Pregunta de seguimiento 1: ¿Cómo funcionan juntos el journal y el inventario?

El inventario suministra una instantánea de los objetos existentes; el journal registra los cambios posteriores. Construye la línea base a partir del inventario, aplica los cambios del journal y reconcilia periódicamente con un nuevo inventario para corregir eventos faltantes o duplicados.

Pregunta de seguimiento 2: ¿Cómo detectas un backfill incompleto?

Rastrea el estado del backfill, la cobertura y los fallos, y propaga el estado incompleto a la capa de consultas. Las conclusiones de cobertura total esperan a la finalización o marcan explícitamente los resultados como incompletos.

Pregunta de seguimiento 3: ¿Cómo manejas eventos duplicados?

Genera una clave de idempotencia a partir de la clave del objeto, la hora del evento, el tipo de evento y la información de versión disponible. El consumo duplicado se convierte en una no-operación (no-op); el orden incierto se corrige mediante la reconciliación con la instantánea.

Pregunta de seguimiento 4: ¿Cuándo deberías evitar las tablas de metadatos de S3?

Si el negocio necesita consistencia de lectura tras escritura (read-after-write) a nivel de milisegundos, joins transaccionales complejos o una gobernanza de campos totalmente personalizada, evalúa un índice o base de datos dedicada. Las tablas de metadatos son adecuadas para el descubrimiento de objetos, auditoría y fuentes de gobernanza por lotes.

Fuentes públicas

Preguntas relacionadas

Herramienta de entrevista relacionada

Usa Resolver para una respuesta de diseño de sistemas

Aclara primero los requisitos y luego avanza a través de la escala, la arquitectura, la elección de componentes y las compensaciones (trade-offs).

Ver la herramienta