-
Notifications
You must be signed in to change notification settings - Fork 3
How It Works
The data generator is a crucial component designed for the benchmark, facilitating synthetic data generation for evaluating transaction-processing workloads. It leverages specialized algorithms and data manipulation techniques to ensure realistic, scalable, and diverse dataset creation, which is essential for benchmarking performance in transactional and analytical systems.
The generator simulates real-world transactional workloads by creating structured datasets with defined relationships and properties. It ensures data integrity and controlled variability through probabilistic modeling and deterministic transformations.
-
Randomized Data Generation:
- Utilizes pseudo-random number generators (PRNGs) to ensure statistical variability while maintaining repeatability.
- Implements controlled randomness for specific attributes to prevent overly deterministic patterns.
-
Swapping-Based Shuffling:
- Uses Fisher-Yates shuffle for unbiased permutation of data elements.
- Employs block-wise swapping to optimize cache efficiency and prevent memory fragmentation.
- Supports key-based shuffling where certain fields remain fixed while others are swapped to create varied yet coherent datasets.
-
Hierarchical Data Structuring:
- Implements tree-based indexing to maintain relationships between generated entities.
- Uses parent-child references to simulate realistic dependencies in transactional data.
-
Constraint-Based Data Augmentation:
- Ensures generated data adheres to predefined constraints such as foreign key relationships and domain-specific rules.
- Supports configurable constraints to model different workload patterns.
- Programming Language: Implemented primarily in Python and C++ for performance and flexibility.
- PRNG Library: Uses the Mersenne Twister (MT19937) algorithm for robust random number generation.
- Database Interfaces: Supports PostgreSQL and MySQL for validating generated datasets.
- Parallel Processing: Implements multi-threaded data generation to scale efficiently with hardware capabilities.
- Configuration Interface: Uses JSON/TOML configuration files to allow users to customize dataset properties dynamically.
Users can define parameters such as dataset size, key distribution, and transaction mix through a configuration file. The generator provides command-line utilities for dataset generation, validation, and export to various formats including CSV, JSON, and SQL dumps.
- Optimized Memory Management: Implements buffer pooling techniques to minimize memory overhead.
- Scalability: Designed to handle datasets ranging from a few thousand to several million records efficiently.
- Reproducibility: Seed-based initialization allows for consistent dataset regeneration for benchmarking purposes.
This data generator is an advanced tool for synthetic transaction workload generation, designed to provide realistic and configurable datasets for benchmarking transaction-processing systems. Its robust algorithms, efficient swapping methods, and versatile technology stack make it a valuable asset in database performance evaluation.