Skip to content
hipoturesPublic

About

A standalone, enterprise-grade dataset management system for machine learning.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

MDM - ML Data Manager

Version Python License Status

A standalone, enterprise-grade dataset management system for machine learning.

πŸš€ Overview

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.

Key Features

  • πŸ’Ύ 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

πŸ“¦ Installation

# 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 .

πŸš€ Quick Start

# 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"

πŸ’» Python API

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")

πŸ“– Documentation

Core Documentation

Guides and Tutorials

API Documentation

βš™οΈ Configuration

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.log

Environment variables override file settings:

export MDM_DATABASE_DEFAULT_BACKEND=duckdb
export MDM_PERFORMANCE_BATCH_SIZE=50000
export MDM_LOGGING_LEVEL=DEBUG

πŸ—οΈ Architecture

MDM 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

πŸ§ͺ Testing

# 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 -v

Current test coverage: 95.4% (1110/1163 tests passing)

πŸ”’ Backend Selection

MDM supports three storage backends:

SQLite (Default)

  • Best for: Single-user, small to medium datasets (<1GB)
  • Pros: Zero configuration, file-based, portable
  • Cons: Limited concurrent access

DuckDB

  • Best for: Analytics workloads, medium to large datasets (1GB-100GB)
  • Pros: Columnar storage, fast analytics, excellent compression
  • Cons: Single-writer limitation

PostgreSQL

  • Best for: Enterprise, multi-user, production deployments
  • Pros: Full ACID, concurrent access, scalability
  • Cons: Requires server setup

🀝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Development Setup

# 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 install

πŸ“Š Performance

MDM 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

πŸ” Security

  • 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

πŸ“ Release Notes

Version 1.0.0 (2025-07-12)

  • πŸŽ‰ 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.

πŸ“„ License

MIT License - see LICENSE file for details.

πŸ™ Acknowledgments

  • 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

πŸ“ž Support


MDM v1.0.0 - Production-ready ML dataset management

About

A standalone, enterprise-grade dataset management system for machine learning.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages