Features โข Quick Start โข Examples โข Contributing
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');SynthDB understands the meaning of your columns, not just their types.
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"
Automatically detects and generates valid data across multiple domains:
|
๐ฐ Finance
๐ Geography
๐ฌ Science
|
๐ป Technology
๐ข Business
๐ฑ Personal
|
Automatically analyzes foreign key dependencies and inserts data in the correct order:
Users โ Orders โ OrderItems โ Shipments
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);| 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 |
# Via Cargo
cargo install synthdbStep 1: Create a target database with your schema (tables must exist)
Step 2: Run SynthDB
synthdb clone \
--url "postgres://user:pass@localhost:5432/my_staging_db" \
--rows 1000 \
--output seed.sqlStep 3: Apply the generated data
psql -d my_staging_db -f seed.sql# Generate data directly to database (no SQL file)
synthdb clone --url "postgres://..." --rows 5000 --execute
# Specify custom row counts per table
synthdb clone --url "postgres://..." --config counts.json
# Exclude specific tables
synthdb clone --url "postgres://..." --exclude "logs,temp_*"
# Set data locale
synthdb clone --url "postgres://..." --locale "en_GB"| Column Name | Generated Value | Logic |
|---|---|---|
merchant_name |
'Acme Corporation' |
๐ข Detected Company entity |
support_email |
'support@acmecorp.com' |
๐ง Matched to Company Name |
mac_address |
'00:1A:2B:3C:4D:5E' |
๐ง Valid hexadecimal format |
ipv6_address |
'2001:0db8:85a3::8a2e:0370' |
๐ Valid IPv6 format |
contract_value |
45021.50 |
๐ฏ Respected NUMERIC(10,2) |
tracking_code |
'TRK-9281-A02' |
๐ฏ Semantic ID generation |
audit_log_path |
'/var/logs/audit/2024-11.log' |
๐ Context-aware file path |
birth_date |
'1985-06-15' |
๐ Realistic age distribution |
website_url |
'https://acmecorp.com' |
๐ Matched to company domain |
-- Your existing schema
CREATE TABLE companies (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
website VARCHAR(255),
industry VARCHAR(50)
);
CREATE TABLE employees (
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');โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 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 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- 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
We love Rustaceans! ๐ฆ Contributions are welcome and appreciated.
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes
cargo fmt cargo clippy cargo test - Commit your changes
git commit -m 'Add amazing feature' - Push to your fork
git push origin feature/amazing-feature
- Open a Pull Request
# Clone the repository
git clone https://github.com/yourusername/synthdb.git
cd synthdb
# Build the project
cargo build
# Run tests
cargo test
# Run with example
cargo run -- clone --url "postgres://localhost/testdb" --rows 100Please read our Code of Conduct before contributing.
Built with โค๏ธ using:
- Rust - Systems programming language
- Tokio - Async runtime
- SQLx - Database toolkit
- Fake - Data generation library
Distributed under the MIT License. See LICENSE for more information.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Support: Buymeacoffee
If SynthDB helps your project, consider giving it a โญ on GitHub!
Made with ๐ฆ by the SynthDB team