Skip to content

[HELP WANTED] Implement a new adapter for MariaDB #113

Description

@raphael-intugle

name: Help Wanted
about: Request community help on a specific task or feature
title: '[HELP WANTED] Implement a new adapter for MariaDB'
labels: 'help wanted'
assignees: ''

What We Need Help With

We are looking for help to create a new adapter for MariaDB. This will allow Intugle to connect directly to MariaDB servers, enabling users to profile their data, build semantic models, and generate data products.

Background & Context

MariaDB is a popular, community-developed fork of MySQL and is widely used in the open-source community. Providing a native adapter for MariaDB will ensure that users of this database can take full advantage of Intugle's data intelligence capabilities.

Current State

Intugle does not have a dedicated adapter for MariaDB. While a MySQL adapter might work for some basic queries, a native adapter is needed to ensure full compatibility and optimal performance.

Desired Outcome

A fully functional and tested MariaDB adapter that allows users to:

  • Configure their MariaDB connection in profiles.yml.
  • Profile tables and columns in a MariaDB database.
  • Execute queries using MariaDB's SQL dialect.
  • Create new tables or views from query results.
  • Integrate MariaDB data sources seamlessly into the Intugle semantic model.

Scope of Work

  • Create the directory and file scaffolding for the MariaDB adapter in src/intugle/adapters/types/mariadb/.
  • Define the Pydantic models for MariaDB connection and data configuration (models.py).
  • Implement the MariaDBAdapter class, inheriting from intugle.adapters.adapter.Adapter (mariadb.py).
  • Implement all abstract methods from the Adapter base class, ensuring compatibility with the MariaDB dialect.
  • Register the new adapter in the adapter factory.
  • Add the mariadb Python driver as an optional dependency in pyproject.toml.
  • Write unit tests to validate the adapter's functionality.

Technical Details

Checkout the documentation on how to implement a adapter : Implementing a Connector
The implementation can be based heavily on the PostgresAdapter . The key will be to handle any differences in the SQL dialect, information schema, and connection parameters specific to MariaDB.

Relevant Files/Modules

  • src/intugle/adapters/types/postgres/ (as a reference)
  • src/intugle/adapters/types/mariadb/ (to be created)
  • src/intugle/adapters/factory.py (to register the new adapter)
  • pyproject.toml (to add optional dependencies)
  • tests/adapters/ (to add new tests)

Key Concepts/Technologies

  • MariaDB & its SQL dialect
  • Python
  • Pydantic

Related Documentation

Suggested Approach

Leverage the existing PostgresAdapter. The official mariadb Python connector is the recommended driver.

Skills Needed

  • Python development
  • Data engineering
  • SQL and database knowledge
  • Testing (pytest)
  • Documentation writing

Difficulty Level

  • Intermediate - Familiarity with data engineering concepts.

Time Estimate

  • Medium (a few days)

Getting Started

  1. Fork the repository.
  2. Set up your development environment (see CONTRIBUTING.md).
  3. Follow the Implementing a Connector guide.
  4. Use the PostgresAdapter as a template for your MariaDBAdapter.

Testing Requirements

  • Unit tests for the new MariaDBAdapter class.
  • Integration tests (if possible, with a local or containerized MariaDB instance).
  • Documentation examples.

Questions & Support

  • Ask questions in the comments below.
  • Join our Discord for real-time help.

Additional Context

Note on Dependencies: When choosing a database driver or any other external library, please ensure its license is permissive (e.g., MIT, Apache 2.0) to be compatible with this project's Apache 2.0 license.


We appreciate your interest in contributing to Intugle! 🙏

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions