MySQL、30歳の誕生日! でも、データベース界の王様はもう交代?
今月、MySQLが誕生から30年を迎えました! かつてはウェブ開発の基盤だったMySQLですが、今でも非常に人気があります。しかし、30年という節目を迎えた今、皮肉なことにMySQLは自らの衰退の種をまいてしまったのかもしれません。特に、Postgres(ポスグレ)と比較すると、その傾向が顕著です。MySQLの管理者であるOracle(オラクル)は、MySQLを「世界で最も愛されているデータベース」と主張するかもしれませんが、開発者の感情調査や人気ランキングを見る限り、それはもはや事実とは言えません。
でも、MySQLの重要性を否定するつもりは全くありません。MySQLは、かつて、そして今も、ウェブにとって非常に重要なインフラです。しかし、多くの開発者にとって、MySQLはもはや「とりあえずコレ!」というデータベースではなくなってしまいました。一体何が起きたのでしょうか?
MySQLがウェブ時代を築いた立役者だった頃
MySQLは長年、インターネットの頼れるデータベースでした。高価な商用システムに対する、軽量でオープンソースの代替手段として誕生したMySQLは、ウェブ上での開発を容易にしました。LAMP(Linux、Apache、MySQL、PHP)スタック(ウェブサイトやウェブアプリケーションを構築するための、ソフトウェアの組み合わせのこと)の隆盛を支え、シンプルで高速、そして無料でした。しかし時が経つにつれ、MySQLを支配的にしたものが、逆にその成長を制約するようになりました。シンプルさを重視したことで、学習は容易になったものの、進化が難しくなったのです。また、初期のデザインが緩やかだったため、急速に普及したものの、現代の複雑なアプリケーションには不向きになってしまいました。圧倒的な地位にあったため、PostgreSQL(同じくデータベースの一種)ほど革新に意欲的ではなかったのです。PostgreSQLは、着実にMySQLとの差を縮め、新しい機能を追加してきました。
MySQLのルーツは、初期のオープンソース運動にあります。1995年、スウェーデンの開発者であるミカエル・”Monty”・ウィデニウス(MySQLの開発者)が、社内プロジェクトとしてMySQLを作成し、その後すぐに一般公開しました。2000年までに、MySQLは完全にオープンソース化(GPLライセンス)され、その人気は爆発的に高まりました。LAMPスタックのデータベースコンポーネントとして、MySQLはウェブ開発者にとって魅力的な組み合わせを提供しました。無料、インストールが簡単、「とりあえず動く」レベルでダイナミックなウェブサイトを構築できたのです。高価なプロプライエタリ(企業が独占的に所有する)データベースが主流だった時代に、MySQLの登場はまさにタイミングが良かったと言えるでしょう。2000年代のウェブスタートアップ(創業したばかりのIT企業)であるFacebook、YouTube、Twitter、Flickrなどは、ユーザーデータやコンテンツを保存するためにMySQLを採用しました。MySQLはすぐにウェブサイト構築の代名詞となったのです。
初期のMySQLは、いくつかのトレードオフ(何かを得る代わりに何かを失うこと)にもかかわらず、支持を得ました。初期のMySQLには、完全なSQL(データベースを操作するための言語)準拠や、デフォルトのエンジンでのトランザクション(一連の処理をまとめて行う仕組み)など、特定の「エンタープライズ(企業向け)」機能が欠けていましたが、このシンプルさが多くのユーザーにとって機能でした。MySQLは、読み取りや単純なクエリ(データベースへの問い合わせ)において非常に高速で、初心者でも管理しやすかったのです。開発者は、最小限の手間でMySQLデータベースを実行することができました。当時のOracleやPostgreSQLのような重いシステムとは対照的でした。「簡単さにはなかなか勝てない」というのは、まさにその通りだと思います。
2000年代半ばまでに、MySQLはあらゆる場所に存在し、ますます機能が豊富になっていきました。データベースは成熟し(トランザクション(データの追加や変更などの処理)のためのより堅牢なストレージエンジンであるInnoDBを追加)、ウェブの爆発的な普及に乗っかり続けました。新しいデータベースが登場しても、MySQLは中小企業向けアプリケーションから大規模なウェブインフラまで、何百万ものデプロイメント(システムを実際に使えるようにすること)でデフォルトの選択肢であり続けました。2025年現在、MySQLは依然として、インストール数で見ると、世界で最も広く展開されているオープンソース(またはプロプライエタリ)データベースである可能性が高いでしょう。非常に多くのアプリケーションがMySQLをバックエンドストアとして作成され、その多くが現在も活発に使用されています。この意味で、今日のMySQLはIBMのDB2(IBMが開発・販売しているデータベース管理システム)に少し似ています。つまり、トレンドではなくなったとしても、巨大なインストールベースを持つ主力データベースなのです。
勢力図の変化:MongoDBやPostgreSQLの台頭
過去10年間で、MySQLのオープンソースデータベースにおけるかつての圧倒的な優位性は、比較的新しい競争相手(MongoDB、Redis、Elasticsearch)と、古くからの競争相手(Postgres)の両方から強い逆風にさらされてきました。MongoDBの立場から見ると、多くの開発者がより柔軟にウェブやその他のアプリケーションを構築するためにMongoDBに目を向けています。しかし、MySQLの衰退の功績(または責任)を負うことができるのは、Postgresでしょう。この理由は、技術的なものと文化的なものの両方があります。Postgresは、MySQLがこれまで持っていなかった機能を提供します。その中には次のようなものがあります。
- より豊富なSQL機能と標準準拠:PostgreSQLは、長年にわたりSQL標準と高度な機能を優先してきました。複雑なクエリ、ウィンドウ関数、共通テーブル式、フルテキスト検索、堅牢なACID(Atomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、Durability(永続性))トランザクションをサポートしています。Postgresは、ルールを曲げることなく、複雑なエンタープライズグレードのワークロード(仕事量)を処理できます。
- 拡張性と柔軟性:Postgresは非常に拡張可能です。新しいデータ型、インデックス型を定義したり、さまざまな言語でカスタム拡張機能やストアドプロシージャ(データベースに対する一連の処理をまとめたもの)を作成したりすることもできます。GIS/地理空間データ(PostGIS)、時系列拡張機能、暗号およびAIユースケース向けのpgcryptoおよびpgvector拡張機能など、Postgresはニーズに合わせて変化できます。これらの拡張性により、Postgresは常に最先端であり続けることができました。Postgresの拡張性は、MySQLのより限定的なプラグインモデルと比較して、依然として優れています。
- オープンソース、オープンな文化:MySQLとPostgresはどちらもオープンソースですが、PostgreSQLのライセンスとガバナンス(組織の管理・運営)はより寛容です。Postgresは真にコミュニティ主導のプロジェクトであり、コアグローバルチームによって開発され、単一の所有者なしに多くの企業によってサポートされています。対照的に、MySQLはGPL(オープンソースライセンスの一種)を使用しており、長年Oracleが所有しています。Oracleの管理は諸刃の剣でした。一方では、Oracleは間違いなくMySQLの開発に投資してきました。現在のMySQL 8.xシリーズは、2000年代のMySQLとは大きく異なります。Oracleのエンジニアリングリソースのおかげで、レプリケーション(データの複製)、セキュリティ、GIS、JSONサポートなどが改善され、はるかに堅牢で機能豊富なデータベースになっています。しかし、MySQLエンジニアリングに対するその同じ厳格な管理が、MySQLコミュニティのダイナミクス(力関係)を変化させ、その勢いを鈍らせたと言えるでしょう。
つまり、PostgreSQLは、MySQLよりも「将来性のある」価値を提供すると多くの人を納得させたのです。
MySQLは生き残る
しかし、すべての課題にもかかわらず、MySQLは今後も長く存在し続けるでしょう。代替手段が登場しても、多くの開発者や組織がMySQLに固執するのには十分な理由があります。まず第一に、MySQLは大規模な環境での信頼性の実績があります。膨大なワークロードを処理できることが証明されています。FacebookやTwitterのような企業は、MySQLを使いこなせなくなったわけではなく、カスタムツールや慎重なエンジニアリングを通じてMySQLを自分たちの意のままに扱ったのです。MySQLが数十億人のユーザーを持つソーシャルネットワーク(SNS)のデータニーズに対応できるのであれば、あなたのeコマースサイトや社内アプリケーションも問題なく処理できるでしょう。その実績は非常に重要です。
第二に、MySQLは依然としてシンプルで、多くの開発者にとって使い慣れたものです。チュートリアルやブートキャンプ(短期間で集中的に学習する講座)で普及しており、初心者向けのツールと統合されているため、新しい開発者が最初に学ぶリレーショナルデータベースであることがよくあります。MySQLのドキュメント(仕様書や説明書)は豊富で、エラーメッセージや動作はよく知られています。多くの場合、開発者はPostgreSQLの高度な機能を必要とせず、MySQLの軽量なフットプリント(占有するリソースの少なさ)と、(SQL構文に対する寛容さ)が、開発をより速く感じさせることがあります。「MySQLの方が簡単」という古い認識は、PostgreSQLが使いやすさを向上させた現在でも残っています。この親しみやすさが慣性を生み出します。組織はすでにMySQL DBA(データベース管理者)、MySQLバックアップスクリプト、MySQLモニタリングを導入しています。切り替えは難しいのです。
ある種の生態系ロックイン(特定の技術やサービスに依存してしまう状態)もあります。何百もの人気のあるウェブアプリケーションやプラットフォーム(基盤)がMySQL(またはそのドロップイン(簡単に置き換えられる)な従兄弟であるMariaDB)上に構築されています。たとえば、世界中のウェブサイトの大部分を支えているWordPressは、データベースレイヤーとしてMySQL/MariaDBを使用しています。他の多くのコンテンツ管理システム、eコマースプラットフォーム、およびアプライアンス(特定の機能に特化した機器)は、MySQLに依存しています。この深く根付いたベースは、人々がこれらのツールを設定するときに、MySQLがデフォルトで引き続き展開されることを意味します。クラウドプロバイダー(クラウドサービスを提供している企業)でさえ、PostgreSQLを熱心に提供していますが、需要に対応するために、完全に管理されたMySQLサービス(多くの場合、Amazon AuroraなどのMySQL互換サービス)も提供しています。つまり、MySQLはウェブのインフラストラクチャに深く組み込まれており、それは一夜にして覆されるものではありません。
オープンソースの勝利
しかし、MySQLが存続する理由は、同時にその将来のロイヤリティ(忠誠心)を脅かすものでもあります。MySQLの広範なレガシー(過去の遺産)使用は、MySQLが引き続き関連性を持つことを意味しますが、新しいプロジェクトでは、PostgreSQL、MongoDB、Redisなど、他のものが選択される可能性が高まっています。MySQLのリスクは、新しい世代の開発者がMySQLに同じ愛着を持たない可能性があることです。テクノロジーコミュニティでは勢いが重要です。PostgreSQLにはそれがあり、MySQLには少し少ないです。
さらに、MySQLが新しいトレンド(流行)に追いつかなければ、忠実なユーザーでさえ代替手段を検討する可能性があります。たとえば、開発者がAIアプリケーションの埋め込みとベクトル検索に関心を持ち始めたとき、Postgresはpgvectorで対応し、MongoDBはAtlas Vector Searchを追加しました。MySQLにはごく最近まで同等のものがありませんでした。MySQLの継続的な進化はロイヤリティを維持するために不可欠であり、それは再び、OracleとMySQLコミュニティが今後数年間でプロジェクトの方向性をどのようにナビゲート(舵取り)するかに結びついています。
MySQLが30歳を迎えるにあたり、このオープンソースデータベースの素晴らしい遺産を祝福する必要があります。これほどまでにコンピューティングの時代に大きな影響を与えたソフトウェアプロジェクトはほとんどありません。MySQLは、ダイナミックなウェブサイトやアプリケーションを構築するために開発者の世代全体を支援し、スタートアップやオープンソースプロジェクトのエントリー障壁を下げました。MySQLは、オープンソースインフラストラクチャがプロプライエタリソリューション(企業が独占的に所有するソフトウェアや技術)と競合し、さらにはそれを上回ることができることを示し、データベース業界の経済学を再構築しました。そのため、MySQLは常に評価されるに値します。
MySQLの栄光の日々は過ぎ去ったかもしれませんが、その物語はまだ終わっていません。MySQLが刺激し、現在も刺激し続けている30年間の競争と革新のおかげで、データベースの世界はより良くなっています。
MySQLが30周年を迎えるとは、時の流れを感じますね。私がプログラミングを始めた頃は、MySQLがウェブ開発の標準でした。今では選択肢が増えましたが、MySQLが残した功績は色褪せないと思います。これからも、時代に合わせて進化していくMySQLに期待したいです!
この記事は、以下の元記事をもとに筆者の視点でまとめたものです:
MySQL at 30: Still important but no longer king