A standalone, enterprise-grade dataset management system for machine learning.
MDM (ML Data Manager) is a powerful, production-ready tool for managing machine learning datasets. Version 1.0.0 represents a mature, stable release with comprehensive features for dataset management, feature engineering, and ML workflow integration.
- πΎ Multi-Backend Support: SQLite (default), DuckDB (analytics), and PostgreSQL (enterprise)
- 𧬠Advanced Feature Engineering: Two-tier system with generic and custom transformers
- π Automatic Type Detection: Smart column type inference with override capabilities
- π― Kaggle Structure Recognition: Automatic detection of Kaggle competition datasets
- π Smart Dataset Discovery: Tag-based and pattern search across all datasets
- π¦ Multiple Export Formats: CSV, Parquet, JSON with compression options
- β‘ High Performance: Batch processing, progress tracking, and optimized data loading
- π¨ Beautiful CLI: Rich terminal output with progress bars and formatted tables
- π Comprehensive Statistics: Automatic profiling and statistical analysis
# Using pip
pip install mdm
# Using uv (recommended for faster dependency resolution)
pip install uv
uv pip install mdm
# Development installation
git clone https://github.com/hipotures/mdm.git
cd mdm
uv pip install -e .# Register a dataset
mdm dataset register iris_dataset ./data/iris.csv \
--target species \
--problem-type classification
# List all datasets
mdm dataset list
# Get dataset information
mdm dataset info iris_dataset
# View statistics
mdm dataset stats iris_dataset
# Search datasets
mdm dataset search iris
mdm dataset search --tag classification
# Export dataset
mdm dataset export iris_dataset --format parquet --compression gzip
# Update dataset metadata
mdm dataset update iris_dataset --description "Classic ML dataset" --tags "iris,classification"from mdm import MDMClient
# Initialize client
client = MDMClient()
# Register a dataset
client.register_dataset(
name="titanic",
path="./data/titanic.csv",
target_column="survived",
problem_type="binary_classification"
)
# Load dataset
df = client.load_dataset("titanic")
# Get dataset info
info = client.get_dataset_info("titanic")
print(f"Rows: {info.row_count}, Columns: {info.column_count}")
# Search datasets
datasets = client.search_datasets("classification")
# Export dataset
client.export_dataset("titanic", format="parquet", output_dir="./exports")- Project Overview - Introduction to MDM
- Configuration Guide - Configuration options and settings
- Database Architecture - Backend design and selection
- Dataset Registration - How to register datasets
- Dataset Management - Dataset operations
- Database Backends - Backend comparison and selection
- CLI Reference - Command-line interface guide
- Programmatic API - Python API documentation
- Advanced Features - Feature engineering and more
- Getting Started - Quick start guide
- Advanced Dataset Management - Advanced operations
- Performance Optimization - Tips for large datasets
- API Reference - Complete API reference
- Architecture Design - System architecture details
MDM uses a hierarchical configuration system with sensible defaults:
# ~/.mdm/mdm.yaml
database:
default_backend: sqlite # Options: sqlite, duckdb, postgresql
performance:
batch_size: 10000
enable_progress: true
features:
enable_at_registration: true
min_column_variance: 0.01
logging:
level: INFO
file: ~/.mdm/logs/mdm.logEnvironment variables override file settings:
export MDM_DATABASE_DEFAULT_BACKEND=duckdb
export MDM_PERFORMANCE_BATCH_SIZE=50000
export MDM_LOGGING_LEVEL=DEBUGMDM uses a clean, modular architecture:
mdm/
βββ api/ # Public API and client
βββ cli/ # Command-line interface
βββ core/ # Core functionality
β βββ config/ # Configuration management
β βββ exceptions/ # Custom exceptions
β βββ logging/ # Logging setup
βββ dataset/ # Dataset management
β βββ loaders/ # File format loaders
β βββ manager/ # Dataset operations
β βββ registrar/ # Registration system
βββ features/ # Feature engineering
β βββ generic/ # Built-in transformers
β βββ custom/ # User-defined features
βββ models/ # Data models
βββ storage/ # Storage backends
β βββ base/ # Abstract interfaces
β βββ sqlite/ # SQLite implementation
β βββ duckdb/ # DuckDB implementation
β βββ postgresql/ # PostgreSQL implementation
βββ utils/ # Utility functions
# Run all tests
./scripts/run_tests.sh
# Run specific test suites
./scripts/run_tests.sh --unit-only
./scripts/run_tests.sh --integration-only
./scripts/run_tests.sh --e2e-only
# Run with coverage
./scripts/run_tests.sh --coverage
# Run specific test file
pytest tests/unit/test_config.py -vCurrent test coverage: 95.4% (1110/1163 tests passing)
MDM supports three storage backends:
- Best for: Single-user, small to medium datasets (<1GB)
- Pros: Zero configuration, file-based, portable
- Cons: Limited concurrent access
- Best for: Analytics workloads, medium to large datasets (1GB-100GB)
- Pros: Columnar storage, fast analytics, excellent compression
- Cons: Single-writer limitation
- Best for: Enterprise, multi-user, production deployments
- Pros: Full ACID, concurrent access, scalability
- Cons: Requires server setup
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
# Clone repository
git clone https://github.com/hipotures/mdm.git
cd mdm
# Create virtual environment
uv venv
source .venv/bin/activate
# Install in development mode
uv pip install -e ".[dev]"
# Run pre-commit hooks
pre-commit installMDM is optimized for performance:
- Batch Processing: Efficient handling of large datasets with configurable batch sizes
- Progress Tracking: Real-time progress bars for long operations
- Type Detection: Fast column type inference with caching
- Memory Efficient: Streaming data processing to handle datasets larger than RAM
- Parallel Processing: Multi-threaded feature generation where applicable
- SQL injection prevention through parameterized queries
- Path traversal protection for file operations
- Secure configuration with environment variable support
- No sensitive data in logs or error messages
- π First stable production release
- β Comprehensive test suite (95.4% passing)
- π Complete documentation
- π All critical bugs fixed
- π Production-ready performance
See CHANGELOG.md for detailed release history.
MIT License - see LICENSE file for details.
- SQLAlchemy team for the excellent ORM
- Rich library for beautiful terminal output
- DuckDB team for the amazing analytics engine
- Typer for the intuitive CLI framework
- All contributors and users of MDM
- π Documentation
- π Issue Tracker
- π¬ Discussions
MDM v1.0.0 - Production-ready ML dataset management