DEV Community

gumi TECH for gumi TECH Blog

Posted on

Elixir: 新たなMySQLドライバMyXQLの開発を開始

Plataformatec社はElixir Forumで、新たなMySQLドライバ「MyXQL」を開発中だと発表しました。Ectoと統合して、デフォルトのMySQLドライバとすることを目指すそうです。

現在、MySQLとやりとりするためのおもなドライバはMariaexです。Mariaexとの連携は2014年12月から始まりました。コミュニティにとって、きわめて重要なソフトウェアです。Mariaexにより、MySQLデータベースに依存する多くの会社が、EctoやPhoenixなどのライブラリをとおしてElixirをプロダクションに利用できました。

MariaexとElixirのこれまで

Mariaexが世に出てから、つぎのようなできごとがありました。

  • MySQLのv5.7やv8.0といった新しいバージョンには、新たな認証モードやプロトコル変更、あるいは新しいデータ型などが加えられました。Mariaexのプロジェクトは、これらバージョンによって異なるすべての機能に対応しなければなりません。
  • Mariaexの開発が始まったのは、Elixir v1.0の直後です。その経緯から、Kernel.SpecialFormswithなど最近のElixirの機能を必ずしも活かせていません。Elixir v1.3は新たなcalendar型を採り入れました。これは、Mariaexが備えるdate/type型と競合します。
  • Mariaexの開始時、Ectoはv0.3.0でした。その後、Ecto v1.0がリリースされ、さらにEcto v2.0が出ています。Ecto v1.0の頃は、Ectoが接続プールやトランザクションなど多くの扱いを担っていました。しかし、Ecto v2.0では、DBConnectionという共通プロジェクをとおして、ドライバに重心を移しています。この新しいアプローチにより、Ectoの外側で、ドライバをより効率的に活用できるようになるのです(「James Fish「DBConnection - Ecto's SQL Sandbox」参照)。メリットの一方で、この移行により既存のドライバのコードに手が加わえられることになります。

これらの要因その他があいまって、Mariaexリポジトリが複雑になり、メンテナンスも難しくなってきました(未解決のイシューが40、プルリクエストは9)。Mariaexのコードベースをどう改善するか検討した末、新たにMyXQLを開発するという結論に至ったとのことです。これまでのしがらみらをなくし、一から始めることが最善のアプローチだという理由です。

MyXQLが目指すもの

MyXQLの開発はWojtek Mach氏が主導します。MyXQLが目指すものはつぎのとおりです。

  • MyXQLはElixir v1.4とMySQL v5.7.9以上を必要とします。最近のMySQLに加えられた多くの機能やデータ型をサポートし、それと同じElixirの機能にも対応できるでしょう。
    • Elixir v1.4.0は2017年1月のリリースです。
    • MySQL v5.7.9は、2015年10月にリリースされた5.7ブランチから最初に一般リリースされました。
  • PostgrexやMariaexドライバの開発経験から得た知識を活用します。MyXQLにはPostgrexの組織とコード構成を反映し、Mariaexから得た経験を活かします。この計画には、両プロジェクトのパーツが必要に応じて再利用されるでしょう。

MyXQLの開発

MyXQLはEcto v3.0のリリースには間に合わないことにご注意ください。今のところ、開発には引き続きMariaexを使わなければなりません。すでに、MariaexをEcto 3.0に対応させるプルリクエストも行われました。MyXQLがリリースされたときは、開発にMariaexとどちらでも選べるようになります。大多数のユーザーはMyXQLに円滑に移行できるでしょう。それでも、ふたつのツールが選べる期間は確保されます。最終的に、MariaexのサポートはEctoから除かれます(より正確にはEcto.SQLから削除)。

現在コードは開発中です。MySQLに大きく依存している開発者は、MySQLリポジトリをご覧いただければ、進行状況がわかり、議論にも参加できます。

Top comments (0)