π¦ SynthDB
The Universal Database Seeder
Production-grade synthetic data. Zero config. Context-aware.
Features β’ Quick Start β’ Examples β’ Contributing
π Overview
SynthDB is a next-generation database seeding engine that reads your existing PostgreSQL schema and generates statistically realistic, relational data automatically.
Unlike traditional tools that generate random gibberish, SynthDB employs a Deep Semantic Engine to understand your data model's context and relationships, producing data that looks and feels real.
-- Instead of this garbage:
INSERT INTO users VALUES ('XJ9K2', 'asdf@qwerty', '99999', 'ZZZ');
-- SynthDB generates this:
INSERT INTO users VALUES ('John Doe', 'john.doe@techcorp.com', '+1-555-0142', 'San Francisco, CA');
β¨ Features
π§ Deep Semantic Intelligence
SynthDB understands the meaning of your columns, not just their types.
π― Context-Aware Identity
If a table has first_name, last_name, and email, SynthDB ensures they match perfectly:
- Name: "Sarah Martinez"
- Email: "sarah.martinez@company.com"
- Username: "smartinez"
π·οΈ Smart Categorization
Automatically detects and generates valid data across multiple domains:
π° Finance
- Credit Cards (valid Luhn)
- IBANs & Swift Codes
- Cryptocurrency Addresses
- Currency Codes & Amounts
π Geography
- Coherent Addresses
- Cities β States β Zip Codes
- Latitude/Longitude Pairs
- Time Zones
π¬ Science
- Chemical Formulas
- DNA Sequences
- Medical/ICD Codes
- Laboratory Values
π» Technology
- IPv4 & IPv6 Addresses
- MAC Addresses
- User Agents
- File Paths & URLs
π’ Business
- Company Names
- Job Titles
- Department Names
- Stock Tickers
π± Personal
- Phone Numbers
- Social Security Numbers
- Passport Numbers
- Driver's License IDs
π Referential Integrity
π Topological Sort
Automatically analyzes foreign key dependencies and inserts data in the correct order:
Users β Orders β OrderItems β Shipments
β Zero Broken Links
Generated foreign keys always reference valid, existing parent rows. No orphaned records, ever.
-- Parent record created first
INSERT INTO customers (id, name) VALUES (1, 'Acme Corp');
-- Child record references existing parent
INSERT INTO orders (id, customer_id, total) VALUES (101, 1, 1299.99);
π‘οΈ Production Ready
| Feature | Description |
|---|---|
| Strict Precision | Respects NUMERIC(10,2), VARCHAR(15), and all constraint types |
| Smart Nulls | Intelligently applies NULL values to optional fields while keeping critical data populated |
| Unique Constraints | Guarantees uniqueness for columns with UNIQUE or PRIMARY KEY constraints |
| Check Constraints | Honors CHECK constraints and enum types |
| Zero Configuration | No YAML files, no mapping rules. Just point it at your database |
| Performance | Written in Rust π¦ for blazing-fast data generation |
β‘ Quick Start
π₯ Installation
# Via Cargo
π― Basic Usage
Step 1: Create a target database with your schema (tables must exist)
Step 2: Run SynthDB
Step 3: Apply the generated data
π§ Advanced Options
# Generate data directly to database (no SQL file)
# Specify custom row counts per table
# Exclude specific tables
# Set data locale
π‘ Examples
π¨ How SynthDB Handles Data
ποΈ Real-World Schema Example
-- Your existing schema
(
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
website VARCHAR(255),
industry VARCHAR(50)
);
(
id SERIAL PRIMARY KEY,
company_id INTEGER REFERENCES companies(id),
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
phone VARCHAR(20),
job_title VARCHAR(100),
salary NUMERIC(10,2),
hire_date DATE NOT NULL
);
SynthDB generates:
-- Coherent company data
INSERT INTO companies VALUES
(1, 'TechVision Solutions', 'https://techvision.io', 'Software'),
(2, 'Global Logistics Inc', 'https://globallogistics.com', 'Transportation');
-- Employees with matching company context
INSERT INTO employees VALUES
(1, 1, 'Alice', 'Chen', 'alice.chen@techvision.io', '+1-555-0123', 'Senior Software Engineer', 125000.00, '2022-03-15'),
(2, 1, 'Bob', 'Kumar', 'bob.kumar@techvision.io', '+1-555-0124', 'Product Manager', 135000.00, '2021-08-22'),
(3, 2, 'Carol', 'Rodriguez', 'carol.rodriguez@globallogistics.com', '+1-555-0198', 'Operations Director', 145000.00, '2020-01-10');
ποΈ Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SynthDB Engine β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β 1. Schema Introspection β
β ββ Read tables, columns, constraints, relationships β
β β
β 2. Dependency Analysis β
β ββ Build dependency graph via topological sort β
β β
β 3. Semantic Classification β
β ββ Detect column meaning from names & types β
β β
β 4. Context-Aware Generation β
β ββ Generate coherent, relational data β
β β
β 5. Constraint Validation β
β ββ Ensure all DB constraints are satisfied β
β β
β 6. Output β
β ββ SQL file or direct database insertion β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
πΊοΈ Roadmap
- PostgreSQL support
- Semantic column detection
- Foreign key resolution
- MySQL/MariaDB support
- SQLite support
- Custom data providers
- GraphQL schema support
- Performance benchmarking suite
- Web UI for configuration
- Machine learning-based pattern detection
π€ Contributing
We love Rustaceans! π¦ Contributions are welcome and appreciated.
How to Contribute
- Fork the repository
- Create a feature branch
- Make your changes
- Commit your changes
- Push to your fork
- Open a Pull Request
Development Setup
# Clone the repository
# Build the project
# Run tests
# Run with example
Code of Conduct
Please read our Code of Conduct before contributing.
π Acknowledgments
Built with β€οΈ using:
- Rust - Systems programming language
- Tokio - Async runtime
- SQLx - Database toolkit
- Fake - Data generation library
π License
Distributed under the MIT License. See LICENSE for more information.
π¬ Community & Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
If SynthDB helps your project, consider giving it a β on GitHub!
Made with π¦ by the SynthDB team