SOLUTION · REPLICATE TO SNOWFLAKE

Real-time data replication to Snowflake from your operational databases

Committed changes from your systems of record land in Snowflake continuously, through Snowpipe and COPY INTO, instead of waiting for the next ELT run.

Gluesync by MOLO17 captures changes from Oracle, SQL Server, PostgreSQL, MySQL, IBM i, MongoDB, and other heterogeneous sources with a dedicated agent per database, then writes them to Snowflake through a target agent built on the Snowflake JDBC driver with Apache Arrow. Snapshots load through the Snowpipe APIs, CDC follows as optimized batches or native bulk loads, and Core Hub, the Gluesync control plane, runs every pipeline from one web UI and REST API.

WHO THIS IS FOR

Teams that need Snowflake to reflect operations now, not after the nightly load

  • Analytics engineers who build dbt models, dynamic tables, or tasks on replicated data and need current-state tables keyed like the source, with column names that follow Snowflake's UPPERCASE identifiers and a reviewed CREATE TABLE generated from the source definition
  • Data platform leads feeding Snowflake from Oracle, SQL Server, PostgreSQL, IBM i, or MongoDB who want one Core Hub for every source instead of one connector product per source, backed by best-in-class enterprise support, rated 4.9/5 by customers
  • Architects who must keep ingestion compute predictable: a dedicated warehouse for Gluesync writes, bulk cycles that turn many changes into a few set-based statements, and a choice of write path per table
  • Engineers running Debezium, Kafka Connect, and a Snowflake sink, or a stack of scheduled ELT jobs, who want every source delivered to Snowflake by one product with snapshots, checkpoints, and monitoring built in

THE PROBLEM

Snowflake data that arrives in batches is already behind

Most Snowflake estates are fed by scheduled extracts: an hourly or nightly job queries the source, lands files, and merges them into tables. Dashboards, dbt models, and data products then run on the state of the business at the last load, every extract adds read load to the production database, and each source ends up with its own connector, schedule, and failure mode. Teams looking for real-time Snowflake ingestion or a Snowflake CDC pipeline usually weigh managed ELT services such as Fivetran or Airbyte, a Debezium and Kafka stack with a Snowflake sink connector, Snowflake's own Snowpipe and Streams, or scripts they write and keep running themselves.

Gluesync addresses that with per-agent CDC into Snowflake. A source agent reads each database's native change log, journal, or change stream; Core Hub routes the changes; the Snowflake target agent applies them with Snowflake's own loading primitives. Whether the data comes from Oracle, IBM i, or MongoDB, the pipeline model, the snapshot, and the operations stay the same.

HOW IT WORKS

How Gluesync writes to Snowflake

The write path: JDBC with Apache Arrow, Snowpipe, and COPY INTO

The Snowflake agent connects through the official Snowflake JDBC driver, bundled with the agent, and uses Apache Arrow for high-throughput CDC writes. It is a target agent: it receives changes from any Gluesync source agent and writes them to your tables. Gluesync never writes one row at a time; each entity uses one of these paths.

  • Snapshots: initial loads are uploaded in batches through the Snowpipe APIs. TRUNCATE before snapshot runs as a Snowflake SQL command when you want a clean reload, and can be disabled for every entity at the agent level.
  • Optimized batches, never row by row: by default, changes are grouped into highly optimized SQL batches and applied together. Batch size is configurable on the agent, so each write cuts network round-trips and keeps warehouse load predictable.
  • Native bulk load: switch it on per entity for the initial snapshot, for ongoing CDC, or both, and Gluesync loads through PUT and COPY INTO, as described below. Snowflake agent overview ↗

Native bulk load for snapshots and CDC

Bulk load is Snowflake-native loading, switched on per entity with two independent settings: Bulk for Snapshot for the initial load and Bulk for CDC for the ongoing change stream. Turn on one, the other, or both, on any existing entity, without recreating it.

In each mirroring cycle Core Hub collects the change events and collapses those on the same primary key: an insert followed by a delete is skipped, and consecutive updates become one update. The batch is written as CSV, uploaded with PUT, and loaded into a persistent staging table with COPY INTO ... FILE_FORMAT=(NULL_IF=('NULL')). When a source log omits unchanged columns, an optional update join or MERGE fills them from the live Snowflake table. Deletes and inserts are then applied in one pass and the staging table is truncated for the next cycle. Each changed key lands as one current row, and the warehouse runs a handful of set-based statements per cycle instead of one statement per change.

Snapshot first, then continuous CDC

  • Seed, then stream: each entity loads the full table into Snowflake, then switches to CDC from the source agent's change mechanism.
  • INSERT or UPSERT: INSERT with TRUNCATE before snapshot is the fast path for empty or reset tables; UPSERT merges the snapshot with rows already in Snowflake.
  • Parallel loads: snapshot writes run in parallel with configurable writer concurrency, and logical partitioning splits large source tables into ranges read in parallel.
  • Resume: an interrupted snapshot resumes from its last saved state when you start the entity again.
  • Scheduled refreshes: the Chronos Scheduler runs snapshots, or a snapshot followed by CDC, on a schedule for tables you prefer to reload on a cadence. See schedules and events.

Schema, types, and keys in Snowflake

  • Table creation: when a target table does not exist, Core Hub generates a CREATE TABLE from the source columns, data types, and primary key, converted to Snowflake syntax. You review and edit the statement before it runs.
  • Identifier case: Snowflake folds unquoted identifiers to upper case, so Core Hub normalizes target column names and filter clauses to UPPERCASE when an entity is saved, and generated tables follow the same case. Analysts reference columns without quoting them.
  • Type mapping: each source value is normalized into a Gluesync data family and written as the closest native Snowflake type. Fixed-point values such as Oracle NUMBER or SQL Server DECIMAL travel as big decimals so precision is kept, and the Fields Editor flags any column that needs a mapping decision.
  • Shaping on the way in: Unlock Schema, Custom Field Functions, and UDFs change types, compose columns, or reshape records, and Allowed Operations per entity keeps history tables growing by not forwarding DELETE or TRUNCATE. See data transformation.
  • On duplicate key: Upsert, Skip, or Fail, set per entity. Snowflake enforces primary keys on hybrid tables, and Gluesync checks the catalog when an entity starts and reports which behavior applies to each table.

What your Snowflake admin sets up

The agent needs a user that can read and write the target tables, a warehouse to run on, and key-pair authentication. Full statements are in the Snowflake target setup guide ↗.

  1. Create a warehouse and a role for ingestion, and grant the role USAGE and OPERATE on the warehouse. Our setup script names all of them INGEST.
  2. Grant the role read and write access to the target database and tables. The setup script gives it OWNERSHIP of the ingestion database and schema, which also covers the DDL that table creation and bulk staging use.
  3. Create the user with that default role, warehouse, and namespace. Generate an RSA key pair with openssl, set RSA_PUBLIC_KEY on the user, and give the agent the rsa_key.p8 private key.
  4. If the user has MFA enabled, generate a Programmatic Access Token and use it as the password.
  5. In Core Hub, enter the account hostname (for example XYZ-123.snowflakecomputing.com on port 443 with TLS), the database, the user's credentials, and the warehouse the agent runs on.

Compute you can see, and Core Hub around it

Point the agent at its own warehouse and ingestion compute stays separate from BI and transformation workloads, so you size it, schedule it, and read its credit consumption on its own. Query Studio, the SQL workbench inside Core Hub, opens the same Snowflake connection with autocomplete, a read-only session by default, and a cost prevention banner, so checking landed rows does not need another client. See Query Studio.

Lightweight agents sit close to each source; Core Hub orchestrates them through its web UI and REST APIs and routes changes to the Snowflake agent. A pipeline groups a source agent, the Snowflake agent, and the entities they replicate. Core Hub and agents deploy with Docker, Docker Compose, or Kubernetes, on-premises or in any cloud.

Explore the general CDC streaming architecture →

WRITE OPTIONS

The Snowflake target agent: one agent, a write path per table

Snowflake has one Gluesync target agent. Snapshots load through Snowpipe, every entity writes in optimized batches by default, and native bulk load with PUT and COPY INTO can be switched on per entity for the snapshot, for CDC, or both.

AgentWrite techniqueVersionsBest for
Snowflake agent ↗ Snowflake JDBC driver with Apache Arrow for CDC; Snowpipe APIs for snapshots; PUT and COPY INTO through a staging table in bulk mode Any Snowflake deployment, all versions; key-pair authentication, with a Programmatic Access Token for MFA users Every Snowflake account fed from operational databases. Optimized batches by default, and native bulk load through PUT and COPY INTO for snapshots and CDC, switched on per entity. Pair it with any Gluesync source agent under the same Core Hub.

SOURCES AND TOPOLOGIES

Feed Snowflake from the systems of record you already run

Any Gluesync source agent can feed Snowflake, each with its own native capture technique. Open the integrations finder with Snowflake pre-selected to see every source you can pair with it, from IBM i and Oracle to MongoDB and Couchbase.

One Core Hub runs Oracle to Snowflake, SQL Server to Snowflake, and MongoDB to Snowflake side by side, with the same snapshot, monitoring, and write settings for each. Gluesync keeps pace with your change volume at any scale, and you choose the write path and the warehouse per table. MOLO17 Professional Services can tune both with your team.

  • Oracle to Snowflake from the redo logs through LogMiner or XStream, or through triggers where redo access is restricted: see Oracle CDC
  • SQL Server to Snowflake through Change Data Capture or Change Tracking: see SQL Server CDC
  • IBM i (AS/400) to Snowflake through the native journal APIs: see IBM i CDC
  • PostgreSQL, MySQL, and MongoDB to Snowflake from the WAL, the binlog, and Change Streams: see PostgreSQL CDC, MySQL CDC, and MongoDB CDC

FAIR, HIGH-LEVEL COMPARISON

Where Gluesync fits among Snowflake ingestion approaches

ApproachWhat buyers usually getWhere Gluesync fits
Fivetran and Fivetran HVR Managed ELT with a broad connector catalog and scheduled syncs into Snowflake; HVR adds log-based database replication. Packaging differs by product Agents you deploy next to each source, native capture per engine, and staged bulk loads into Snowflake, all under one Core Hub; see warehouse sync
Airbyte Open-source and cloud ELT connectors; incremental and CDC modes vary by source connector, and you run the platform or use the managed service A commercial product with a dedicated capture agent per database and MOLO17 enterprise support behind every pipeline
Debezium, Kafka Connect, and a Snowflake sink connector Open-source capture into Kafka topics, loaded by a sink connector; you run Kafka, Connect, offsets, and schemas, and usually add a step that merges change events into current-state tables Changes applied to current-state Snowflake tables by key with no Kafka cluster in the path; Kafka stays available as another target. Read the Debezium alternative comparison
Snowflake native ingestion (Snowpipe, Snowpipe Streaming, Streams and Tasks) Native loading from cloud storage or streaming clients and in-warehouse change processing; getting changes out of the source database is a component you choose and run Gluesync uses the same primitives, Snowpipe for snapshots and COPY INTO for bulk cycles, and adds native capture from heterogeneous sources such as Oracle, IBM i, and SAP HANA
Qlik Replicate, AWS DMS, and similar replication services Mature replication with Snowflake among many targets; cloud services typically land changes in object storage for a separate Snowflake load Agents run on-premises or in any cloud with Docker, Docker Compose, or Kubernetes and write straight to Snowflake; see migrating to Gluesync
DIY scheduled ELT and scripts Full control; your team owns extract queries, file staging, MERGE logic, retries, and the load each run puts on production Log-based capture, staged bulk apply, snapshot resume, and Core Hub monitoring without pipeline code to maintain; read batch ETL vs real-time replication

FAQ

Snowflake replication questions

What does replicating to Snowflake with Gluesync involve?

A source agent captures committed changes from your database through its native change mechanism, Core Hub routes them, and the Snowflake target agent applies them to Snowflake tables continuously after a snapshot seeds each table.

Does Gluesync bulk load into Snowflake?

Yes, for the initial snapshot and for ongoing CDC, with a separate switch for each on every entity. Changes are collapsed per primary key, uploaded as CSV with PUT, loaded into a staging table with COPY INTO, and applied in one pass. Without bulk load, Gluesync writes through the Snowflake JDBC driver with Apache Arrow in optimized batches.

Which sources can replicate to Snowflake?

Any Gluesync source agent, including Oracle, SQL Server, PostgreSQL, MySQL, MariaDB, IBM Db2 for i, Db2 LUW, SAP HANA, MongoDB, and Couchbase. The integrations finder on our website lists every pairing.

Does Gluesync use MERGE or upserts on Snowflake?

In bulk mode, Core Hub combines changes per primary key, stages them, deletes the changed keys, and inserts their current values, with an optional MERGE or update join that fills columns the source log omitted. Snapshots can also run in UPSERT mode to merge with rows already in a table.

How do we keep ingestion compute separate from other Snowflake workloads?

Point the agent at a warehouse dedicated to Gluesync, so ingestion is sized and monitored on its own. Bulk mode turns each cycle into a few set-based statements, and Query Studio opens Snowflake in a read-only session with a cost prevention banner.

What does the Snowflake admin need to set up?

A user with read and write access to the target database and tables, a role with USAGE and OPERATE on the warehouse, and an RSA key pair whose public key is set on the user. If MFA is enabled, a Programmatic Access Token is used as the password.

Can Gluesync create the tables in Snowflake?

Yes. When a target table does not exist, Core Hub generates a CREATE TABLE from the source definition, converted to Snowflake types and upper-case column names, and you review it before it runs.

Which Snowflake deployments are supported?

Any Snowflake deployment. The agent connects to your account hostname over TLS.

Evaluate Gluesync with your Snowflake account

Start a trial on your infrastructure, or talk to MOLO17 about your sources, warehouse sizing, and the write path that fits each table.