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.SpecialForms
のwith
など最近の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)