frontpage.
newsnewestaskshowjobs

Open Source @Github

fp.

Open in hackernews

Show HN: Paganel – Data migration with a receipt you can verify later

https://github.com/stanstork/paganel
1•stan_stork•44m ago
Paganel comes from an old work problem: I had a large schema migration with lots of transformations and several environments to check. One of the main requirements was to validate whether the data had moved correctly, and I was not allowed to use any SaaS tools because it was forbidden for data to leave our network. Since I couldn't find any air-gapped tool that could do both the transformation and the verification (basic row counts aren't enough for transformed data), I had to write custom scripts for the entire process.

Ever since then, the idea of automating complex migrations has stuck in my head, which led me to start building Paganel a year and a half ago.

In Paganel, a migration is just a single declarative file. You specify where the data comes from and where it's going, and the rest goes in the same file: joins, filters, computed fields, and validation rules.

If you are missing a specific source, sink, transform, or filter, you can easily extend Paganel by writing your own WASM plugin in Rust or JS. These execute inside a strict sandbox, so they don't have any filesystem or network access unless you allow it in the migration config.

I also wanted to make large migrations simple, so before running a real migration, you can run pag plan to review the output schema, the DDL, and the time and memory estimates. You can also use the plan to see a sample of real rows. They get processed through the whole pipeline, which gives you absolute clarity on what will actually be inserted.

One of the biggest challenges isn't just doing the migration, but verifying that everything actually moved correctly. For that, there is the --integrity flag. Pass it, and Paganel hashes the rows on the fly as they migrate, storing those hashes on disk, keyed by primary key. After the run, it uses them to spit out a 32-byte root hash for the table. Together with the row hashes, this gives you a complete 'migration receipt.'

Minutes or weeks later, you can run pag verify, and it re-reads the destination, recomputes the hashes and compares them with the receipt, without connecting to the source. When the root doesn't match, you know something changed, and then verify goes through the row hashes and tells you which rows it was.

It tells you that the destination still contains what Paganel wrote, but it can't tell you whether the transformation itself was correct.

Another huge factor is migration speed. I created a small benchmark to measure Paganel's speed and tested it on a 100M-row migration from MySQL to PostgreSQL (with the databases on separate servers). With the default config, which is a single stream, I got about 390k rows a second. Splitting the table into four parallel streams got it to almost 940k. The number of streams is configurable for tables with an integer primary key. Enabling the --integrity flag does add some overhead, dropping those numbers to 340k and 670k, respectively.

Paganel is still pre-v1.0, so there are some rough edges to be aware of:

- No CDC yet: Currently, it only handles batch processing. Continuous sync with verification is the ultimate goal, but nailing the batch engine comes first.

- Limited databases: Right now, Paganel only natively supports MySQL and PostgreSQL.

- API changes: The project is under heavy development, meaning the config syntax might change slightly from release to release.

- One-man team: I'm developing this solo. You will likely run into edge cases I haven't caught yet.

- Platform testing: The full integration suite and all my own manual testing run on Linux. macOS and Windows get pre-built binaries too, but they only go through a basic smoke test.

If you want to try it out, the quickstart in the README will spin up some sample databases in Docker for you.

How do you verify migrations today? I'd like to know whether a receipt like this would fit into how you work.

Show HN: Bio ML Tools in the Browser

https://athanortools.com/
1•the__alchemist•49s ago•0 comments

Can AI Make a Game Engine? [video]

https://www.youtube.com/watch?v=R_uf5OfMGio
1•chii•1m ago•0 comments

Ask HN: Is Observability Broken for You?

1•tmach32•1m ago•0 comments

Erdosproblems.com Succumbs to the AI Onslaught

https://www.erdosproblems.com/forum/thread/blog:9
1•pfdietz•2m ago•1 comments

Show HN: IAAP Cpacc Practice Tests and Mock Tests

https://accesslumens.com/learn/cpacc
2•prabhusaves•2m ago•0 comments

Show HN: TwinStub – deterministic API simulation with signed webhook chains

https://github.com/twinstub/twinstub
1•lna_stub•2m ago•0 comments

Can AI Stand in for Human Survey-Takers? Not

https://www.pewresearch.org/data-labs/2026/09/30/can-ai-stand-in-for-human-survey-takers-not-really/
1•vuice•4m ago•1 comments

Devpack for Rust

https://github.com/canonical/devpack-for-rust
2•tapanjk•5m ago•0 comments

ProbeLab Sonar

https://probelab.io/blog/introducing-probelab-sonar/
1•dennis-tra•5m ago•0 comments

Show HN: Everyone photographs the same object daily and AI makes a creature

https://snapplings.com/daily?src=hn
1•dgp1000•7m ago•0 comments

Kabul, Afghanistan is on track to run out of water by 2030

https://www.cnn.com/2026/10/06/climate/water-crisis-city-day-zero-kabul-afghanistan
1•littlexsparkee•8m ago•0 comments

Disney, ABC battle Trump's FCC in court over free speech protections

https://www.npr.org/2026/10/06/nx-s1-5991831/disney-battles-fcc
1•rbanffy•8m ago•0 comments

Show HN: Lask – A task runner with a type system and pinned Docker environments

https://github.com/lask-task-runner/lask
1•torudev•9m ago•0 comments

Software Supply Chain Attack on subql/common

https://flatt.tech/research/posts/subql-common-npm-supply-chain-attack/
2•WalterSobchak•10m ago•0 comments

Meta's Muse Is an Adorable Privacy and Security Dumpster Fire

https://www.techdirt.com/2026/10/06/metas-muse-is-an-adorable-privacy-and-security-dumpster-fire/
2•beardyw•10m ago•0 comments

Nvidia's Olympus Core: Pushing Server Single Threaded Performance Boundaries

https://chipsandcheese.com/p/nvidias-olympus-core-pushing-server
1•rbanffy•13m ago•0 comments

Cable lobby to sue Trump FCC over repeal of national TV ownership cap

https://arstechnica.com/tech-policy/2026/10/cable-lobby-to-sue-trump-fcc-over-repeal-of-national-...
1•rbanffy•15m ago•0 comments

Formulas for Bootstrapping Sample Medians

https://www.evanmiller.org/bootstrapping-sample-medians.html
1•hn3ufz62f7•15m ago•0 comments

Why App Store Connect and RevenueCat revenue never match

https://plask.dev/blog/app-store-connect-vs-revenuecat-revenue
1•tskulbru•15m ago•0 comments

Omnitwine – AI powered professional networking/LinkedIn alternative

https://omnitwine.com/
1•adjk•15m ago•1 comments

What's Earth's dominant species by mass?

https://signoregalilei.com/2026/09/27/whats-earths-dominant-species-by-mass/
3•surprisetalk•16m ago•1 comments

Mind the Tone

https://europeancorrespondent.com/en/r/mind-the-tone
1•speckx•16m ago•0 comments

How funny are the frontier AI models?

https://www.lesswrong.com/posts/oG53pJxkHgpL4Ny4d/how-funny-are-the-frontier-ai-models
3•paraschopra•18m ago•0 comments

Why Databricks can't match ClickHouse Cloud for real-time analytics

https://clickhouse.com/blog/clickhouse-vs-databricks-real-time-performance-per-dollar
1•ilreb•19m ago•0 comments

Former German spy chief arrested, suspected of trading state secrets and treason

https://text.npr.org/g-s1-146630
1•firefax•20m ago•0 comments

The methane mega-leaks from UN climate summit host Turkey

https://www.theguardian.com/environment/2026/oct/05/methane-mega-leaks-from-un-climate-summit-hos...
2•littlexsparkee•20m ago•0 comments

Teenager rescued from B.C. 'Widowmaker' after getting stranded using Claude

https://www.ctvnews.ca/vancouver/article/teenager-rescued-from-bcs-widowmaker-after-getting-stran...
3•AlexeyBrin•20m ago•1 comments

AI training of copyrighted material not fair use: Third Circuit

https://www.courthousenews.com/ai-training-of-copyrighted-material-not-fair-use-third-circuit/
3•donohoe•21m ago•1 comments

Why the Future Doesn't Need Us – Bill Joy (2000)

https://www.wired.com/2000/04/joy-2/
1•bikeshaving•23m ago•1 comments

Subquadratic 3SUM and Subcubic APSP

https://arxiv.org/abs/2610.06783
1•mauriziocalo•25m ago•0 comments