raystack / raystack/meteor

Add change detection and watermark tracking to extractors

Open
#507 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
242
Forks
45
PR merge metrics
No merged PRs in 30d

Description

Context

Meteor currently extracts everything on every run. For high-volume sources, this is wasteful and slow. Change detection allows extractors to emit only what changed since the last run.

Scope

  • Define a watermark/checkpoint interface that extractors can implement
  • Store watermarks between runs (local file, config store, or Compass state)
  • Update high-volume extractors to support incremental extraction:
    • BigQuery — use INFORMATION_SCHEMA timestamps for modified tables
    • Postgres/MySQL — track schema modification timestamps
    • Kafka — track topic configuration changes
  • Emit change type metadata on records: created, updated, deleted
  • Fall back to full extraction when no watermark exists

Design Considerations

  • Watermark storage should be pluggable (local file for dev, remote store for production)
  • Full extraction should remain available as a fallback or explicit mode
  • Change detection accuracy varies by source — document limitations per extractor

Key Files

Area Location
Plugin interfaces plugins/plugin.go
Runner orchestration runner/runner.go
Runner config runner/config.go
CLI run command cmd/run.go
State store (new) state/
BigQuery extractor plugins/extractors/bigquery/bigquery.go

Why

Incremental extraction reduces load on sources, shrinks payloads, and enables faster refresh cycles. A graph that updates in minutes instead of hours is significantly more useful for AI agents.

References

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the plugin interfaces in plugins/plugin.go and runner orchestration in runner/runner.go, then review runner/config.go, cmd/run.go, and the BigQuery extractor. Define the state/ watermark boundaries and how full extraction remains available. Done means the listed high-volume extractors can emit change metadata and fall back to full extraction when no watermark exists.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, google-cloud, kafka, mysql, postgresql
Domain
backend, data-engineering, databases
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.