Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
588 changes: 588 additions & 0 deletions compare/2026-10-11-best-data-lake-tools.mdx

Large diffs are not rendered by default.

494 changes: 494 additions & 0 deletions compare/2026-10-12-azure-etl-tools.mdx

Large diffs are not rendered by default.

588 changes: 588 additions & 0 deletions compare/2026-10-13-best-data-replication-tools.mdx

Large diffs are not rendered by default.

465 changes: 465 additions & 0 deletions compare/2026-10-14-best-reverse-etl-tools.mdx

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions docusaurus.config.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
const imageFetchPriorityRehypePlugin = require('./src/plugins/image-fetchpriority-rehype-plugin')
const externalLinksNofollowRehypePlugin = require('./src/plugins/external-links-nofollow-rehype-plugin')
const imageDimensionsRemarkPlugin = require('./src/plugins/image-dimensions-remark-plugin')
const releaseNotesRemarkPlugin = require('./src/plugins/release-notes-remark-plugin')
const fs = require('fs')
Expand Down Expand Up @@ -448,7 +449,7 @@ const config = {
onUntruncatedBlogPosts: 'ignore',
editUrl: 'https://github.com/datazip-inc/olake-docs/tree/master/',
remarkPlugins: [[require('@docusaurus/remark-plugin-npm2yarn'), { sync: true }]],
rehypePlugins: [imageFetchPriorityRehypePlugin],
rehypePlugins: [imageFetchPriorityRehypePlugin, externalLinksNofollowRehypePlugin],
// Adds width/height to local images so they reserve space (no layout shift)
beforeDefaultRemarkPlugins: [imageDimensionsRemarkPlugin]
}
Expand Down Expand Up @@ -486,7 +487,7 @@ const config = {
onUntruncatedBlogPosts: 'ignore',
editUrl: 'https://github.com/datazip-inc/olake-docs/tree/master/',
remarkPlugins: [[require('@docusaurus/remark-plugin-npm2yarn'), { sync: true }]],
rehypePlugins: [imageFetchPriorityRehypePlugin],
rehypePlugins: [imageFetchPriorityRehypePlugin, externalLinksNofollowRehypePlugin],
// Adds width/height to local images so they reserve space (no layout shift)
beforeDefaultRemarkPlugins: [imageDimensionsRemarkPlugin]
}
Expand Down
253 changes: 253 additions & 0 deletions learn/2026-10-01-data-migration-strategy.mdx

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions scripts/og-images.manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,12 @@
"/img/blog/cover/arrow_olake_cover_image.webp": "751920a247cecd985011ee1ae26814d2969e20ac5a5fbb5512e2b5844569d846",
"/img/blog/cover/aws-dms-vs-olake-cover.webp": "1869627b06852bc9e6bbc642629ef34f25f8e65c014dfeee5cc1743ac67ccaea",
"/img/blog/cover/aws-etl-tools-cover.webp": "2eb8c237e058674abc30df5f61ebdb59d91f1803a4732b3eca9fcb5157d4f32c",
"/img/blog/cover/azure-etl-tools-cover.webp": "db7b79ab08d1a27c56df391a02a82bc246533843565bcf787733dbc69d388405",
"/img/blog/cover/best-change-data-capture-tools-cover.webp": "23488501919176ee2e0ff5221095b3b0beb467ed4d68e02ce726822b6e0a8e30",
"/img/blog/cover/best-data-integration-tools-cover.webp": "7ef2564ab932a042d42240d4178370f287c9c587994be769779baba3b3c1106a",
"/img/blog/cover/best-data-lake-tools-cover.webp": "94f8414ef048f2b90f7a77250a6040985920ba59f38af37ed97ff02674035be5",
"/img/blog/cover/best-data-replication-tools-cover.webp": "11e186d1a3f089017902e379cda96e7dc9e74333689f4088cb58557b20f2e512",
"/img/blog/cover/best-reverse-etl-tools-cover.webp": "f9b408b7d106214a6ce74ec4e4e1b2c3f0dbde76c5e34881c87a54b3c4956d61",
"/img/blog/cover/beyond-strcutred-tables.webp": "4e4e41095bbbc585066f7c922995e72a5783ac4a9a1faee0db7cf1c5836b5b6d",
"/img/blog/cover/binlogs-cover.webp": "d7940f1450b8ae941e867fa05562a14ea494792c2aa3446e22af37ee6d9f7f9b",
"/img/blog/cover/build-data-lakehouse-iceberg-clickhouse-olake-cover.webp": "c19092f9b2f494db1c3b4e56376b789aa21ec63b79a1b57ac9872cc5169ab9d0",
Expand All @@ -27,6 +31,7 @@
"/img/blog/cover/cover_spark_databricks_interoperability.webp": "dffafe6b58826561a89afb25711150d260eef43ec9176db2b7e8295622d95e67",
"/img/blog/cover/data-lake-vs-delta-lake-cover.webp": "d4daa9288435344ef5a6d96bd5019e154713568ebfde1fda5d5353277e212237",
"/img/blog/cover/data-lakehouse-cover.webp": "38229221dc8cfd5bbc1686f165e9ff638537ab15f69c42c675cc5013a7f6a10a",
"/img/blog/cover/data-migration-strategy-cover.webp": "3336b541cdfbf1dcccb16dd1438b544428d62c059d1b464ffbe5a7b8774516fb",
"/img/blog/cover/data-migration-tools-cover.webp": "e8873cd5b00b2b4d19f641992f849502d8311f55c073845a8840ce7b39fbb10e",
"/img/blog/cover/data-partitioning-in-s3-cover.webp": "2d49805d034850ef397ffc73531c3d594bd1d9ddb83628a7fe734c40fff1403f",
"/img/blog/cover/database-to-iceberg-without-kafka-cover.webp": "f759e9bed6c76eebfd6ea8e36019a2c088038c9ef9bfb6f1a3362d14a40ec593",
Expand Down
264 changes: 264 additions & 0 deletions src/data/quizzes/azure-etl-tools.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,264 @@
{
"id": "azure-etl-tools",
"mode": "recommend",
"title": "Which Azure ETL tool fits you?",
"updated": "October 2026",
"guideHref": "#so-which-one-should-you-pick",
"guideLabel": "See the full decision table",
"topN": 3,
"questions": [
{
"q": "Where should the data land?",
"hint": "This one answer removes about half the list.",
"options": [
{
"label": "Microsoft Fabric (OneLake)",
"scores": {
"mirroring": 3,
"fabric": 3,
"informatica": 1
},
"exclude": [
"lakeflow"
],
"why": "you land in Fabric, and Lakeflow Connect writes into Databricks instead"
},
{
"label": "Azure Databricks",
"scores": {
"lakeflow": 3,
"airbyte": 2
},
"why": "Databricks is where your analysts work"
},
{
"label": "Azure Synapse or Azure SQL",
"scores": {
"hevo": 2,
"fivetran": 2,
"informatica": 2,
"adf": 2,
"airbyte": 1
},
"exclude": [
"lakeflow"
],
"why": "your target is not Databricks, and Lakeflow Connect writes Delta streaming tables into Databricks"
},
{
"label": "Files in my own Azure Data Lake Storage",
"scores": {
"adf": 3,
"fivetran": 3,
"informatica": 2,
"olake": 3
},
"why": "ADF can write Iceberg to ADLS Gen2, Fivetran's docs say its lake service writes Parquet there, OLake Go's Azure guide writes Iceberg to ADLS Gen2, and Hevo lists no ADLS destination in the docs we read"
}
]
},
{
"q": "How do you want to pay and run it?",
"options": [
{
"label": "Free software that I host myself",
"scores": {
"airbyte": 3,
"olake": 3
},
"why": "Airbyte Core is free to self-host and you pay for servers and staff, and OLake Go is open source under Apache 2.0 and runs on your own infrastructure"
},
{
"label": "Pay per use, with no capacity kept running",
"scores": {
"adf": 3
},
"why": "ADF bills per run and per compute hour"
},
{
"label": "A Fabric capacity is fine",
"scores": {
"fabric": 3,
"mirroring": 3
},
"why": "both Fabric options bill through a running Fabric capacity"
},
{
"label": "A vendor runs it all, no servers",
"scores": {
"fivetran": 3,
"hevo": 3,
"informatica": 1
},
"why": "you want a managed service"
}
]
},
{
"q": "What are your sources like?",
"options": [
{
"label": "Many SaaS apps",
"scores": {
"fivetran": 3,
"hevo": 3,
"airbyte": 2
},
"why": "you need a long connector list"
},
{
"label": "Databases that I want kept in sync",
"scores": {
"mirroring": 3,
"lakeflow": 2,
"adf": 2,
"fivetran": 2,
"hevo": 2,
"informatica": 2,
"fabric": 1,
"airbyte": 1,
"olake": 2
},
"why": "you want database changes copied over, and OLake Go's docs cover Azure Database for PostgreSQL and MySQL Flexible Server"
},
{
"label": "SSIS packages or a private network",
"scores": {
"adf": 3
},
"why": "Microsoft lists SSIS and managed virtual networks as To be determined in Fabric, and ADF supports them"
}
]
},
{
"q": "What should happen to the data on the way?",
"options": [
{
"label": "A live, read-only copy for reports",
"scores": {
"mirroring": 3
},
"why": "mirroring gives a read-only copy with no pipelines"
},
{
"label": "Load it raw on a schedule, reshape later",
"scores": {
"fabric": 3,
"fivetran": 1,
"hevo": 1,
"lakeflow": 1,
"adf": 1,
"olake": 1
},
"why": "you want ELT with incremental loads"
},
{
"label": "Clean or audit it before it lands",
"scores": {
"adf": 3,
"informatica": 3
},
"exclude": [
"mirroring"
],
"why": "mirroring has a single read-only destination and no transforms"
}
]
},
{
"q": "How big is your team and estate?",
"options": [
{
"label": "Small team, I want posted prices",
"scores": {
"hevo": 3,
"airbyte": 1,
"adf": 1
},
"why": "Hevo and ADF publish their rates"
},
{
"label": "Somewhere in the middle",
"scores": {
"fivetran": 1,
"adf": 1,
"fabric": 1
},
"why": "you have no strong need either way"
},
{
"label": "Large and regulated, a sales quote is fine",
"scores": {
"informatica": 3
},
"why": "Informatica publishes no dollar price per unit, so expect a quote, and its docs list several Azure replication targets"
}
]
}
],
"results": {
"fabric": {
"name": "Fabric Copy job",
"summary": "Scheduled full, incremental or CDC copies into OneLake without building pipelines.",
"bestWhen": "Fabric is your analytics home and you want scheduled, incremental loads.",
"watchOut": "CDC is in preview and leaves out PostgreSQL, MySQL and MongoDB, and SSIS and managed private networks are not there yet.",
"href": "#1-fabric-data-factory-copy-jobs-into-onelake"
},
"mirroring": {
"name": "Fabric mirroring",
"summary": "A continuously updated, read-only copy of a database in OneLake, with free replication compute.",
"bestWhen": "you want a live copy of a supported database for Fabric reports.",
"watchOut": "a Fabric capacity must keep running, and it writes to one read-only destination with no custom scheduling or transforms.",
"href": "#3-fabric-mirroring-free-read-only-copies-of-databases"
},
"adf": {
"name": "Azure Data Factory",
"summary": "Microsoft's pay-per-use pipeline service for hybrid ETL, with SSIS support and a self-hosted runtime.",
"bestWhen": "you run SSIS, need a private network or already have ADF pipelines.",
"watchOut": "Microsoft says to start with Fabric Data Factory if you are new, and new Fabric features are not backported.",
"href": "#2-azure-data-factory-hybrid-pipelines-and-ssis"
},
"lakeflow": {
"name": "Databricks Lakeflow Connect",
"summary": "Managed connectors that copy database changes into Databricks Delta tables.",
"bestWhen": "Databricks is where your analysts work.",
"watchOut": "the gateway is paid even when idle, the MySQL connector is Public Preview, and MongoDB is not listed.",
"href": "#5-azure-databricks-lakeflow-connect-databases-into-databricks"
},
"olake": {
"name": "OLake Go",
"summary": "Open-source replication of Postgres, MySQL/MariaDB, MongoDB and SQL Server (plus Oracle, Db2, S3 and Kafka sources) into Iceberg or Parquet, with an Azure guide for ADLS Gen2.",
"bestWhen": "your sources are databases and you want Iceberg or Parquet on Azure storage you run.",
"watchOut": "its output is Iceberg and Parquet, so it suits teams that want one of those on storage they run.",
"href": "#6-olake-go-best-for-azure-databases-into-iceberg-on-your-own-storage"
},
"fivetran": {
"name": "Fivetran",
"summary": "A fully managed ELT service with many connectors and a free plan up to a row limit.",
"bestWhen": "you want a vendor to run everything and your row counts are predictable.",
"watchOut": "billing is by monthly active rows, deletes count as paid rows, and its lake service has no Iceberg position deletes.",
"href": "#7-fivetran-many-connectors-with-no-servers"
},
"hevo": {
"name": "Hevo",
"summary": "A managed ELT service with posted tiers and a free plan.",
"bestWhen": "a small team loads a Synapse dedicated pool and wants posted prices.",
"watchOut": "its docs name dedicated SQL pools as the Synapse destination, and we found no Fabric or ADLS destination.",
"href": "#9-hevo-small-teams-loading-synapse"
},
"airbyte": {
"name": "Airbyte",
"summary": "A free self-hosted Core edition plus a paid cloud, with a long connector list.",
"bestWhen": "you want to self-host, or land data in Databricks or SQL Server.",
"watchOut": "its Azure Blob destination lists CSV and JSON Lines only, with no Synapse page, and database capture runs as scheduled syncs.",
"href": "#8-airbyte-self-hosting-and-connector-choice"
},
"informatica": {
"name": "Informatica",
"summary": "An enterprise data management suite whose replication docs list ADLS Gen2, Synapse, Fabric and OneLake targets.",
"bestWhen": "you run a large, regulated estate with a dedicated team.",
"watchOut": "no dollar price per unit is published, so you need a quote from Informatica.",
"href": "#11-informatica-large-governed-estates"
}
}
}
Loading
Loading