Skip to main content

Starlake vs Airbyte

Starlake and Airbyte are both open-source data integration tools, but they serve different roles in the data stack.

Philosophy​

StarlakeAirbyte
ApproachDeclarative (YAML + SQL)Connector-based (UI + YAML)
ModelFull ELT platform (Extract, Load, Transform, Orchestrate)EL platform (Extract, Load); delegates Transform to dbt or SQL
ConfigurationYAML files — no code requiredUI-driven or Terraform/YAML (Octavia CLI)
RuntimeMulti-engine (BigQuery, Snowflake, Spark, DuckDB, JDBC)Docker-based connector pods (Cloud or self-hosted)

Data Sources​

StarlakeAirbyte
ConnectorsFiles, JDBC databases, REST APIs, Kafka400+ pre-built connectors (SaaS, APIs, databases, files)
FilesCSV, JSON, XML, Parquet, fixed-widthCSV, JSON, Parquet, Avro (via File/S3/GCS sources)
DatabasesJDBC extraction with incremental support and CDC (push via Debezium/Kafka, pull via watermark)CDC (Debezium), incremental, full refresh per connector
APIsREST API extraction (any JSON/XML API) with auth, pagination, rate limiting, incremental supportREST APIs, GraphQL, SaaS platforms (Salesforce, HubSpot, Stripe, etc.)
StreamsKafka / Kafka Streams—
Custom sourcesOpenAPI schema extraction for automatic table generationConnector Builder (low-code) or Connector Development Kit (Python)

Destinations​

StarlakeAirbyte
Cloud warehousesBigQuery, Snowflake, Databricks, RedshiftBigQuery, Snowflake, Databricks, Redshift
DatabasesAny JDBC (PostgreSQL, MySQL, ClickHouse, etc.)PostgreSQL, MySQL, MSSQL, Oracle, ClickHouse, 50+ others
LocalDuckDB, filesystemDuckDB, local JSON/CSV
Lake formatsDelta Lake, ParquetIceberg, Delta Lake (via Databricks)
OtherElasticsearch, KafkaS3, GCS, Azure Blob, Kafka, Vector databases

Schema Management​

StarlakeAirbyte
DefinitionExplicit YAML schema with typed attributesAutomatic inference from source catalog
EvolutionManual or via syncStrategy (NONE, ADD, ALL)Automatic: propagate or ignore column changes
Nested datastruct / array types in schemaAuto-flattening or raw JSON column (normalization)
ValidationRegex-based type checking per valueBasic type coercion

Write Strategies​

StrategyStarlakeAirbyte
AppendAPPENDappend
OverwriteOVERWRITEoverwrite
Upsert by keyUPSERT_BY_KEYDeduped + history (cursor + primary key)
Upsert by key + timestampUPSERT_BY_KEY_AND_TIMESTAMPDeduped (cursor-based incremental)
Partition overwriteOVERWRITE_BY_PARTITION—
Delete then insertDELETE_THEN_INSERT—
SCD2SCD2—
Adaptive (runtime)ADAPTATIVE—

CDC (Change Data Capture)​

StarlakeAirbyte
Push-based CDCDebezium/Kafka ingestion with automatic offset trackingBuilt-in Debezium CDC for supported database connectors
Pull-based CDCIncremental JDBC extraction with SL_LAST_EXPORT watermark trackingCursor-based incremental sync
File-based CDCLoad change files with operation column, merge via transform—
Delete propagationpresql for delete handling, soft-delete support_airbyte_extracted_at + soft deletes (_fivetran_deleted equivalent)
SCD2 historyBuilt-in SCD2 write strategy with configurable start/end timestamps—
DeduplicationSOURCE_AND_TARGET deduplicates within batch before mergeDeduped sync mode with cursor + primary key

Transformations​

StarlakeAirbyte
SQL transformsBuilt-in: SELECT materialization, incremental modelling, variable substitution, dialect transpilation—
Python transformsPySpark scripts with SL_THIS view—
Computed columnsscript property (Spark SQL expressions)—
Pre/Post hookspresql / postsql—
Dependency detectionAutomatic FROM/JOIN parsing → DAG—
dbt integration—dbt Cloud integration for post-load transforms

Data Quality​

StarlakeAirbyte
Type validationRegex-based per value; rejected rows → audit.rejectedBasic type coercion at load
Expectations53 built-in Jinja2 macros (completeness, validity, volume, schema, uniqueness, numeric)—
Data contractsYAML schema + expectations + failOnError—
MetricsContinuous, discrete, text profiling per columnSync-level metrics (records emitted/committed)
FreshnessConfigurable warn/error thresholdsConnection-level scheduling and alerting

Security & Privacy​

StarlakeAirbyte
Column maskingHIDE, MD5, SHA1, SHA256, SHA512, AES, SQL expressions—
Row-level securityDeclarative RLS with predicates and grants—
Column-level accessaccessPolicy (BigQuery policy tags)—
Table ACLDeclarative ACL with roles and grants—
SecretsEnvironment variablesBuilt-in secrets management (Cloud), env vars (OSS)

Orchestration​

StarlakeAirbyte
Built-inDAG generation from SQL dependenciesBuilt-in scheduler (cron-based)
AirflowAuto-generated DAGs (Bash, Cloud Run, Dataproc, Fargate)Airflow provider (apache-airflow-providers-airbyte)
DagsterAuto-generated assets (Shell, Cloud Run, Dataproc, Fargate)dagster-airbyte integration
Snowflake TasksAuto-generated native tasks—
API triggers—REST API to trigger syncs programmatically

Testing​

StarlakeAirbyte
Unit testsBuilt-in: load tests + transform tests with DuckDB—
Test dataCSV/JSON fixtures with _expected files—
ReportsJUnit XML + HTML report websiteSync logs and metrics in UI
CoverageTested vs untested domains/tables tracking—
SQL transpilationAutomatic (BigQuery/Snowflake/etc. → DuckDB)N/A

Deployment​

StarlakeAirbyte
InstallJava CLI (starlake binary)Docker Compose (OSS) or Airbyte Cloud (managed)
RuntimeJVM (Spark, standalone) or native engineDocker containers (one per connector)
InfrastructureOn-premise, Cloud Run, Dataproc, Fargate, SnowflakeSelf-hosted (K8s, Docker), Airbyte Cloud
Managed offering—Airbyte Cloud (fully managed SaaS)

When to Choose​

Choose Starlake when:

  • You prefer declarative YAML + SQL over UI-driven configuration
  • You need built-in transformations with automatic dependency resolution
  • You need comprehensive data quality (53 expectation macros, type validation, rejection routing)
  • You need built-in security (column masking, RLS, ACL)
  • You want auto-generated orchestration DAGs
  • Your sources are primarily files (CSV, JSON, XML, fixed-width), JDBC databases, REST APIs, or Kafka streams
  • You work across multiple SQL engines and need dialect transpilation