Bugfixes should stay fixed
Detect data anomalies in your production database before they become customer-facing problems.
The Problem with Production Data
Have you seen this nonsense?
-
⚠️
Records that are individually valid but imply something impossible when you put them together.
For example:
An ecommerce
Order
inpending
status with an associatedShipment
marked asdelivered
. -
⚠️
You insert a record with
null
in a column and enqueue a background job to fill it. But then one time in a million if the third-party API is down while the job system is getting deployed, you find you've still got anull
hanging around. Every SQL database lets you say the column isNOT NULL
but you can't really sayNOT NULL AFTER 5 SECONDS
, and what process would be around to that exception anyways? - ⚠️ If a state machine measures its transitions in days, all your records that have an extra transition as code is deployed.
No Silver Bullets
I'd like to tell you that all your problems can be solved by SQL check constraints, functional programming, event sourcing, or my favorite programming language, but no. It's not just that all tools are imperfect, it's that they can't solve these problems. Either they can't operate at every level of abstraction, you don't have the budget to spend months bulletproofing everything, and nothing can prevent a developer or customer support agent from making a typo while fixing a different issue.
As long as your database is used by humans,
it will have invalid data in it.
You can find and fix your bad data
When you find invalid data, you query to find the scope of the problem. You may fix the bug or accept that "weird stuff happens at scale."
How Recheck Works:
-
1Paste your query into a "check"
-
2Manually run your checks, or run Recheck as a background on-prem service to reruns your query regularly
-
3Get notified immediately if more data goes wrong
It's like a unit test for your production database.
Recheck is a high-ROI tool for addressing bad data that slips through the engineering tradeoffs of other tools. Rather than spend six months trying to gold plate all your background jobs and SQL constraints, find and deal with the handful of odd records as they appear.
Stay Updated
Want to hear when Recheck is available? Join the announcement list. I'll email as new versions are released and you can one-click unsubscribe at any time.