FFastero

Connect any database. Ask in plain English.

Try free
Back to blog

Blog article

Schema Change Alerts Without Monte Carlo or Datadog

A backend engineer drops a column in a migration. Your dashboard silently shows NULL for three days before anyone notices. Monte Carlo catches this but costs $100k+/year. Here's how to get schema change alerts that actually understand your data model, without the enterprise contract.

Fastero Dev TeamFastero Dev Team
2026-08-04
schema-driftdata-qualitymonitoringalertsobservabilitydata-engineering
Schema Change Alerts Without Monte Carlo or Datadog

Schema Change Alerts Without Monte Carlo or Datadog

A backend engineer ships a migration that renames mrr_cents to monthly_revenue. It passes code review, the tests pass, the deploy goes out at 2pm on a Tuesday. The finance dashboard that powers your board deck still queries mrr_cents. It doesn't error — the column is gone, so the join silently returns NULL, and the MRR widget shows $0 for every account added after the deploy.

Nobody notices for three days. Not the analyst who built the dashboard, not the VP of Finance who checks it every morning (she assumed it was a data lag), not the engineer who shipped the migration (he doesn't look at dashboards). On Friday, the CEO asks why MRR dropped 40% and the entire data team spends their afternoon tracing it back to a two-line migration.

This is the most common data incident I've seen. Not corrupted data, not a pipeline explosion, not a dramatic outage. A schema change that broke a downstream dependency silently, and nobody had anything watching for it.

What you actually need from schema change detection

The problem is specific enough that the solution should be too. You need four things:

Detection across all your sources. Not just your warehouse — your production Postgres, your Snowflake, your BigQuery datasets, your MySQL replicas. Schema changes happen at the source, and that's where you need to catch them. A tool that only monitors one database is a tool that misses the change that matters.

Classification of what changed. "Something changed in the orders table" is not actionable. You need to know: column mrr_cents was removed, column monthly_revenue was added (type: integer), column plan_type changed from varchar(20) to varchar(50). The diff matters because the response depends on the type of change.

Immediate alerting. Not "we'll check on the next dbt run." Not "you can query the metadata yourself." A Slack message or email that lands within minutes of the change being detected, with enough context that someone can assess severity without opening a SQL client.

Impact analysis. This is the part almost nobody gets right. Knowing that mrr_cents was dropped is useful. Knowing that mrr_cents is referenced by the MRR dashboard, the revenue reconciliation query, and the Salesforce reverse ETL sync — that's the difference between "something changed" and "here's exactly what broke."

Why the existing options don't fit most teams

Monte Carlo is the gold standard in data observability, and it earns that position. ML-based anomaly detection, automated lineage, incident management, the whole platform. It also starts north of $100k/year and requires a platform team to operationalize. If you have 500 tables, 30 data consumers, and a dedicated reliability team, it's the right tool. If you're a team of 5-15 people running 20-80 tables that matter, you're paying for a fighter jet to commute to work.

Datadog added data monitoring, but it's bolted onto an infrastructure observability platform. It can tell you a table hasn't been updated — it's checking metadata, not understanding your data model. It doesn't know which dashboards reference which columns, doesn't do column-level lineage, and doesn't understand the relationship between a schema change and a downstream query. The alerting is fine. The "so what" is missing.

Great Expectations is powerful and open source, but it's a Python testing framework that lives inside your pipeline. You write expectations in Python, run them as pipeline steps, and handle failures in your orchestrator. If you already have an Airflow/Dagster pipeline and a team that writes Python, it's a solid choice. If you don't have that pipeline, you're building one just to check whether a column still exists.

Soda follows a similar pattern — YAML-based checks that run inside your pipeline. Good abstraction, but same dependency: you need a pipeline to run it in, and you need someone maintaining the check definitions as your schema evolves.

dbt tests catch what you write tests for. not_null, unique, accepted_values, custom schema tests — all useful, all scoped to things you already know to check. A column that gets dropped isn't caught by a dbt test unless you wrote a test for "this column exists," and nobody writes that test for every column. dbt tests are for validating known contracts, not detecting unknown changes.

The gap in the market is a tool that monitors schemas the way these platforms do, provides lineage-aware impact analysis, and doesn't require $100k, a Python pipeline, or a platform team.

Fastero

Connect your database. Ask questions. Get dashboards.

Postgres, BigQuery, Snowflake, and 10+ sources — live-connected, AI-powered, no dashboard builder learning curve.

Try free →

How Fastero's drift detection works

Fastero monitors schemas across every connected database — Postgres, MySQL, Snowflake, BigQuery, Redshift, MSSQL, and more. The approach is straightforward: on a schedule you configure, Fastero snapshots the schema of every monitored table, diffs it against the previous snapshot, and classifies what changed.

When it detects a change, you get an alert — Slack, email, or both — that tells you specifically what happened:

  • Column mrr_cents removed from public.subscriptions
  • Column monthly_revenue added to public.subscriptions (type: integer)
  • Column status in public.orders changed type from varchar(20) to text

That alone is more useful than most teams have today. But the part that actually changes your response time is the integration with lineage. Fastero traces column-level dependencies across your connected sources, dashboards, queries, and workflows. So the alert doesn't just say "column removed" — it says "column removed, and here are the three dashboards, two saved queries, and one scheduled report that reference it."

That transforms the incident from "something changed, go figure out if it matters" to "this specific change broke these specific things, and here's the owner of each one."

No INFORMATION_SCHEMA polling scripts to maintain. No diffing CSV snapshots in a cron job. The monitoring is continuous, the lineage is automatic, and the alerting is immediate.

Column profiling: catching what schema checks miss

Schema drift detection catches structural changes — columns added, removed, renamed, retyped. But some of the worst data incidents don't change the schema at all. The column is still there, still the same type, still getting populated. The data inside it just went wrong.

Column profiling is the companion to schema monitoring. Fastero profiles data distributions across your tables and watches for shifts that indicate a problem:

Null rate spikes. email in your users table went from 0.1% null to 35% null overnight. The column still exists, the type is still varchar. But an upstream form validation broke, and a third of your new signups have no contact information.

Cardinality drops. country_code used to have 47 distinct values. Now it has 3. Something in the ingestion pipeline is filtering or mapping incorrectly.

Value range shifts. order_total averaged $85 with a max of $2,000. Today the max is $4.2 million. Either you landed a whale or a decimal point moved.

Distribution changes. payment_method used to be 60% credit card, 30% ACH, 10% wire. Now it's 95% credit card. Maybe the ACH integration broke and silently fell back to card-only checkout.

These are the incidents that schema monitoring alone won't catch, and they're the ones that cause the most damage because the data looks structurally fine. The dashboard renders, the numbers appear, and they're just wrong enough to be plausible.

Setting it up: 10 minutes, no YAML

This is where Fastero's approach diverges most from the pipeline-integrated tools. There's no YAML to write, no Python tests to maintain, no pipeline to integrate with.

Connect your database. Fastero already supports direct connections to Postgres, BigQuery, Snowflake, MySQL, Redshift, MSSQL, and others. If you've already connected a source for querying or dashboards, drift detection uses the same connection.

Enable drift detection. Select which databases or schemas you want monitored and set the check frequency — hourly for production tables that feed executive dashboards, daily for staging or less critical datasets.

Configure your alert channel. Route alerts to a Slack channel, email distribution list, or both. The alert includes the full change diff and the list of affected downstream assets, so whoever receives it can assess impact without logging in.

That's it. No pipeline dependency, no orchestrator integration, no YAML files in a repo that someone needs to keep in sync with your actual schema. The monitoring runs independently of your data pipeline, which means it catches changes whether they come from a migration, a manual ALTER TABLE, an upstream API contract change, or a third-party tool modifying your schema.

A real walk-through

Your backend team ships a migration that drops the discount_code column from the orders table and adds a promotion_id foreign key instead. Reasonable refactor — they're normalizing discount data into its own table.

Within the hour, Fastero's drift detection picks up two changes on public.orders: discount_code (varchar) removed, promotion_id (integer) added. The alert fires to #data-alerts in Slack.

The alert also shows impact: the "Promo Performance" dashboard has a widget that groups revenue by discount_code. The weekly promo report query references it. The marketing team's saved analysis from last quarter joins on it.

The analyst who owns the promo dashboard sees the alert, updates the widget to join through promotions on promotion_id, and the dashboard is fixed before marketing opens it Monday morning. Total time from deploy to fix: 45 minutes. Without the alert, this would have been discovered when marketing asked "why does the promo dashboard show nothing" — probably Wednesday.

That's the difference. Not a fundamentally different technology. Just catching the change at the right time, with enough context to act immediately, instead of discovering it through a confused Slack thread three days later.

Picking the right tool for your team

If you have a platform team, 500+ tables, and budget for enterprise data observability, Monte Carlo is an excellent choice — it does everything described here and much more, with ML-based anomaly detection and a mature incident management layer.

If you already run a Python-heavy pipeline with Airflow or Dagster, Great Expectations or Soda integrate well into that workflow and give you programmatic control over your data contracts.

If you're a team of 5-20 people, running a few dozen to a few hundred tables across multiple databases, and you want schema change alerts with lineage-aware impact analysis without building a pipeline or signing a six-figure contract — that's the problem Fastero's drift detection and triggers are built for. Connect your databases, turn on monitoring, and get alerts in Slack. The same platform handles data quality monitoring, schema drift tracking, dashboards, and SQL alerting, so the schema monitoring isn't a standalone tool you add to a growing stack — it's part of the same environment your team already works in.


Try Fastero free — connect your databases and get schema change alerts with impact analysis in minutes. No credit card required.

Ready to try it yourself?

Connect your database, ask questions in plain English, and get live dashboards — in under 2 minutes. No credit card required.