La proliferación de datos en la "edge" y la necesidad de análisis en tiempo real han impulsado la demanda de plataformas de datos que combinen escalabilidad, eficiencia de costos y apertura. Históricamente, los data lakes han ofrecido flexibilidad, pero a menudo carecen de las garantías transaccionales y la gestión de metadatos de los data warehouses, lo que lleva a la complejidad operativa y al "data swamp".

Cloudflare Basin aborda este problema fundamental al adoptar Apache Iceberg como formato de tabla abierto, que proporciona una capa de abstracción sobre el almacenamiento de objetos, ofreciendo capacidades como evolución de esquema, ocultación de archivos y viajes en el tiempo. Al combinar esto con R2 Object Storage, que elimina las tarifas de egreso, Basin busca democratizar el acceso y la portabilidad de los datos analíticos, permitiendo a los ingenieros construir sistemas de análisis de alto rendimiento sin los costos prohibitivos o el "vendor lock-in" asociados con las soluciones tradicionales de la nube.

Arquitectura del Sistema

Cloudflare Basin es una arquitectura de tres componentes principales: Basin Pipelines, Basin Catalog y Basin SQL. Basin Pipelines es el componente de ingesta, diseñado para recibir eventos de diversas fuentes (HTTP, Workers, Cloudflare Logpush), transformarlos mediante sentencias SQL y escribirlos como tablas Apache Iceberg o archivos Parquet/JSON en R2. Soporta hasta 3GB/s por stream y ofrece integración con Terraform para infraestructura como código.

Basin Catalog actúa como el catálogo de metadatos de Apache Iceberg, gestionando las tablas y realizando mantenimiento automático. Esto incluye compactación de metadatos y archivos de datos, expiración de snapshots y limpieza de datos no referenciados, lo que optimiza el rendimiento de las consultas y reduce el I/O. Implementa un catálogo REST compatible con Iceberg. Basin SQL es el motor de consulta distribuido y serverless, diseñado para leer grandes conjuntos de datos de tablas Iceberg en R2. Utiliza estadísticas generadas por Basin Catalog para planificar y distribuir consultas a través de la red global de Cloudflare Workers, soportando un amplio conjunto de funciones SQL, incluyendo agregaciones, joins, subconsultas y funciones de ventana. La separación de almacenamiento y cómputo, habilitada por Iceberg, permite la interoperabilidad con otros motores de consulta como PyIceberg, DuckDB, Snowflake y Apache Spark.

Flujo de Ingesta y Consulta de Datos en Basin

  1. 1 Fuente de Eventos Workers, HTTP, Cloudflare Logpush
  2. 2 Basin Pipelines Ingesta, transformación SQL, escritura a R2
  3. 3 R2 Object Storage Almacenamiento de datos en formato Iceberg, Parquet o JSON
  4. 4 Basin Catalog Gestión de metadatos Iceberg, compactación, expiración de snapshots
  5. 5 Basin SQL Motor de consulta distribuido, lectura de tablas Iceberg
  6. 6 Resultados de Consulta Datos analíticos para usuarios o aplicaciones
CapaTecnologíaJustificación
storage R2 Object Storage Almacenamiento de objetos de bajo costo y sin tarifas de egreso para los datos brutos y procesados. vs AWS S3, Google Cloud Storage, Azure Blob Storage
data-processing Apache Iceberg Formato de tabla abierto para data lakes, proporcionando una capa de abstracción sobre R2 para gestión de esquema, ocultación de archivos y capacidades transaccionales. vs Apache Hudi, Delta Lake
compute Cloudflare Workers Plataforma serverless para la ejecución de Basin SQL y la distribución de tareas de consulta a escala global. vs AWS Lambda, Google Cloud Functions, Azure Functions
data-processing Basin Pipelines Servicio de ingesta y transformación de eventos en tiempo real con SQL, escribiendo a Iceberg en R2. vs Apache Flink, Apache Kafka Streams, AWS Kinesis Data Firehose
data-processing Basin Catalog Servicio de catálogo de metadatos para Apache Iceberg, incluyendo mantenimiento automático como compactación y expiración de snapshots. vs AWS Glue Data Catalog, Hive Metastore
data-processing Basin SQL Motor de consulta distribuido y serverless para tablas Apache Iceberg, optimizado para grandes datasets analíticos. vs AWS Athena, Presto/Trino, Apache Spark SQL

Trade-offs

Ganancias
  • ▲▲ Costo de egreso de datos
  • ▲ Complejidad operativa (serverless)
  • ▲ Portabilidad de datos (Iceberg)
  • ▲ Velocidad de configuración y consulta
Costes
    INSERT INTO http_logs_sink
    SELECT
      EdgeResponseStatus,
      to_timestamp_micros(EdgeStartTimestamp) AS event_time,
      upper(ClientRequestMethod) AS method,
      sha256(ClientIP) AS hashed_ip
    FROM http_logs_stream
    WHERE EdgeResponseStatus >= 400;
    Ejemplo de una sentencia SQL utilizada en Basin Pipelines para transformar logs HTTP antes de almacenarlos, incluyendo filtrado, selección y hashing de datos.
    WITH account_activity AS (
      SELECT
        a.plan,
        e.account_id,
        count(*) AS events,
        approx_distinct(e.user_id) AS active_users
      FROM analytics.events e
      JOIN analytics.accounts a
      ON e.account_id = a.account_id
      WHERE e.event_time >= '2026-09-01T00:00:00Z'
      GROUP BY a.plan, e.account_id
    )
    SELECT
      *,
      rank() OVER (PARTITION BY plan ORDER BY events DESC) AS activity_rank
    FROM account_activity
    QUALIFY rank() OVER (PARTITION BY plan ORDER BY events DESC) <= 10;
    Ejemplo de una consulta SQL en Basin SQL que une tablas, agrega datos, y utiliza una función de ventana para clasificar resultados por plan de cuenta.

    Fundamentos Teóricos

    El concepto de separar el almacenamiento del cómputo en sistemas de datos analíticos se remonta a principios fundamentales de la arquitectura de bases de datos, donde la modularidad y la especialización de componentes mejoran la escalabilidad y la flexibilidad. La evolución de los formatos de tabla de data lake como Apache Iceberg puede verse como una aplicación práctica de principios de sistemas de archivos distribuidos y bases de datos transaccionales. Iceberg, en particular, aborda desafíos de consistencia y gestión de metadatos en data lakes, problemas que han sido estudiados en la literatura académica sobre sistemas de archivos distribuidos y bases de datos NoSQL.

    La optimización de consultas en Basin SQL, que utiliza estadísticas y distribuye tareas, se basa en algoritmos clásicos de optimización de consultas de bases de datos relacionales, adaptados a un entorno distribuido y serverless. La compactación de datos y metadatos en Basin Catalog se alinea con técnicas de mantenimiento de estructuras de datos como LSM-trees (Log-Structured Merge-trees), donde las operaciones de escritura se optimizan y los datos se consolidan periódicamente para mejorar el rendimiento de lectura y reducir el espacio en disco. Aunque no se cita un paper específico, la filosofía de Iceberg de gestionar el estado de las tablas de manera transaccional sobre un almacenamiento de objetos se alinea con los desafíos de consistencia y durabilidad en sistemas distribuidos, un área ampliamente cubierta por trabajos como los de Lamport sobre consenso distribuido y los principios de ACID en bases de datos.