Replication Project plan

From Askmonty.org

Jump to: navigation, search

This is the project plan for the replication project.

The purpose of this plan is to set some internal goals and deadlines for the employees of Monty Program AB, and to influence the project to try and follow this plan. It is also to communicate these to the members of the community involved in this project.

A core audience for this project plan is the Monty Program project steering group and the Finnish government agency Tekes. This plan should not be seen as a plan for the project that must be followed by everyone interested in the project. This is an open source project, and it's possible to participate in ways that are not described in this plan. If you are interested in participating in this project, we recommend

for accurate up-to-date information. However, due to the internal funding of the project, we at Monty Program AB will try to follow this plan.

Any comments on this plan can be sent to the MariaDB developer list (see the project communication below for details).

The plan was written by Bo Thorsen from Monty Program AB.

Contents

Project Overview

The goal of this project is to create a new replication plugin API for MariaDB that is generic and complete enough to service most of the imaginable styles of replication (statement vs row based, asynchronous vs synchronous...).

The project is partially funded by the Finnish government (Tekes). This sets a deadline of January 2011 for the final report.

Project Motivation

The motivation for the project is a) demand or feature requests from 3rd party replication developers like Galera and Tungsten and b) demand from significant Web 2.0 companies that use large installations of replicated MySQL servers.

The current replication system in MySQL has been doing quite well over time. It's fairly simple to set up. However, feedback from users running large "cloud" environments of MySQL says that it is not as easy to "live with", ie failover, choosing a new master, etc need to become easier.

For 3rd party replication vendors the main deliverable will be to implement a well defined API that satisfies their needs. (For instance Galera currently modifies MySQL.)

Participants

Kristian Nielsen from Monty Program AB is working on requirements gathering and will describe the basic model used for the implementation. He will do most of the implementation on the MariaDB side.

Sergei Golubchik from Monty Program AB will focus on architectural issues in MariaDB.

Robert Hodges from Continuent (Tungsten) and Alex Yurchenko and Seppo Jaakola from Codership (Galera) represent 3rd party replication vendors. They will provide input to the specification of the API and implement a replication plugin that uses the API. The work on these implementations are not part of this project plan.

Other MariaDB community members have also provided input to the specification on the mailing list (see below) and we look forward to more such input in the future.

Rasmus Johansson is project coordinator internally in Monty Program.

Project Communication

All discussions about this project is made on the MariaDB developers list hosted on Launchpad.

You can subscribe to the mailing list here: https://launchpad.net/~maria-developers.

The archive for the mailing list is here: https://lists.launchpad.net/maria-developers/

You can also join the #maria channel on freenode IRC to chat with the other MariaDB people.

Project Plan

Project Goals

These are the goals we are working with.

  1. Have a working system before January 2011.
  2. Design and implement a new replication API that enables a 3rd party replication plugin to provide a replication service for MariaDB in a clean fashion.
  3. Refactor the old statement based replication, row based replication and binlog so that they become plugins and use the new API. This change should however be transparent to users, ie these need to be available by default and possible to manage with the old commands and variables.
  4. (OPTIONAL) Implement one or two replication engines for the new system. (This is optional, because it is not a Monty Program task.)
  5. Make the system vendor neutral.
  6. Avoid building a fat design-by-commitee solution.
  7. Involve the community in every part of the project.


Project Reporting

Progress of project, or lack of it, should be sent to the devel list and cc'd to Project Manager.

There is no individual or company that project participants should report, but it is necessary for the group to know about the plans and progress of other project people.

Project Deliverables

Here is a list of project parts that should be built during this project. They are given in the order they should be delivered.

  1. System requirements
  2. Design document (worklog(s)) for the replication system (not for the plugins)
  3. Implemention of the API
  4. Refactoring of the old MySQL 5.1 replication code (possibly also the semi-synchronous replication from 5.5)


The first deliverable is a wiki page that describes the requirements for the system. Kristian Nielsen from Monty Program will contact people that have shown an interest in the replication systems from MySQL or MariaDB.

The design document will describe the API and the way it's used by a replication plugin. It will describe the underlying model, features of the API and how plugins should work with it.

Project Timeplan

These are suggested dates for the schedule of the project. None of them are completely set in stone, but we have to strive to meet them.

The January 2011 deadline must be met, and we will cut features instead of going over this deadline. (Note: There are some procedures to extend the project deadline, this is subject to whether there is still unused budget or not.) Later development can add the cut features again.

  • May 15th: System requirements document
  • June 15th: Design document draft 1
  • August 1st: Design document final version
  • November 1st: Decide on final feature list for version 1
  • December 1st: Complete implementation done
  • January 15th: MariaDB official release (alpha/beta) with the system

This plan has four months for the development phase, which might be a bit short. However, it's possible that some of the development could start earlier than this, as the design discussions move along.

As development begins, we will probably create a set of milestones. But this won't be done before the design document has been finished.

Responsibilities

The system requirements phase is done by Kristian Nielsen from Monty Program. He will contact the people and companies we know are interested in this project and ask for comments, thoughts, wishes and ideas. Other people will be welcome to participate in the discussion on the MariaDB developer mailing list.

The design document will be written by Kristian Nielsen and Sergei Golubchik from Monty Program. All desicions in it will be done on the mailing list.

Implementation on the MariaDB side will be done mostly by Kristian Nielsen, with help from other Monty Program employees.

If necessary, the list of features to be cut from the first version will be decided on the mailing list and documented by the Monty Program people.

The MariaDB release will be done by the MariaDB captains.

WBS and Dependencies

We do not for now see the need for creating a work breakdown structure or a full dependency graph. But when we discover dependent parts of the system, these should be documented here.

Personal tools