RockfishRockfish · synthetic data MySQL to synthetic replica

Model-based database synthesis

A live MySQL database, synthesized end to end

Rockfish reads the public Sakila DVD-rental database, learns it, and writes back a synthetic replica: statistically faithful, referentially intact, and free of real personal data. Every number on this page is from one completed run.

0.95
Overall fidelity on the trained fields
0
Orphaned foreign keys in the synthetic database
99.4%
Revenue match versus the real database
0
Synthetic identities matching a real person

The database

Eight related tables, kept referentially intact

Sakila is a real relational schema. The behavioral core is generated; the catalog and reference tables are reused. Every generated foreign key resolves to a real parent row.

Generated by the model Reused from the source database

Why only four tables are generated: the reused tables are catalog and lookup data (the film list, stores, staff, geography). They hold no customer behavior to learn, so training on them adds nothing and a model would only mislearn a near-uniform list of categories. Reusing them keeps the catalog exact and every foreign key valid; the one reused table that contains personal data, staff, has its identifiers masked.

The pipeline

Six stages, one command

The connector reads from MySQL, the model trains on the Rockfish platform, and the synthetic database is written straight back, so nothing leaves the workflow.

01

Ingest

Load tables from MySQL through the connector.

02

Mask PII

Detect names, emails, phones; replace with fakes.

03

Train

One session model over customers and rentals.

04

Generate

Synthesize, re-normalize, resolve every key.

05

Write back

Load the replica into a fresh MySQL schema.

06

Assess

Score fidelity and privacy; emit the report.

Privacy

Personal data is detected and masked

Direct identifiers are found automatically and replaced with realistic, format-preserving fakes. They never enter the model, and each synthetic customer receives a freshly generated identity.

FieldDetected asReal valueMasked value
first / last namePERSONMike HillyerNorma Fisher
emailEMAIL_ADDRESSmike.hillyer@sakilastaff.comsarah.chang@williams-sheppard.info
first / last namePERSONJon StephensJorge Sullivan
emailEMAIL_ADDRESSjon.stephens@sakilastaff.comjennifer.bowers@faulkner-howard.com

The result

The synthetic data answers real questions the same way

Fidelity that matters is not only matching marginal distributions; it is recreating the numbers a downstream analyst would actually compute. Real versus synthetic, side by side:

Business metricRealSynthetic
Total revenue$67,417$67,009
Average payment$4.20$4.18
Rentals per customer26.826.8
Average rental duration4.53 d4.56 d
Distinct films rented958958
Payment equals film's list price54.4%54.6%
Synthetic identities matching a real personn/a0
Real Synthetic

Rentals per month

The summer rental burst is recreated, not flattened.

Payment amount mix

Every price point, including the rare high ones.

Genre mix by share of rentals

Near-uniform across 16 genres in both the real and synthetic data (top 8 shown).

Scorecard

Fidelity and privacy, measured

Per-field fidelity (1.0 is a perfect distributional match).

Privacy holds under direct measurement and simulated attack.

0.00
Memorization rate
(lower is better)
13.7
Distance-to-closest-record
(≥ 1 is good)
1.00
Linkability-attack protection
1.00
Inference-attack protection

the next step

See it on your database

This is one worked example on the Sakila database. Rockfish learns your own databases and generates a synthetic replica that keeps the relationships intact and carries no real personal data. To see it on your data, get in touch with the Rockfish team.

Talk to Rockfish →