MariaDB と MySQL の違いはなんですか?
MySQL と MariaDB はどちらもオープンソースのデータベーステクノロジーです。これらを使用して、行と列を含む表形式でデータを保存できます。MySQL は最も広く採用されているオープンソースデータベースです。また、多くの一般的なウェブサイト、アプリケーション、商用製品の主要なリレーショナルデータベースでもあります。MariaDB は MySQL の修正版です。MariaDB は、MySQL が Oracle に買収された後、ライセンスや配布上の懸念から MySQL の元の開発チームによって作成されました。買収以来、MySQL と MariaDB は異なった進化を遂げてきました。ただし、MariaDB は MySQL のデータとテーブル定義ファイルを採用し、同じクライアントプロトコル、クライアントAPI、ポート、ソケットも使用します。これは、MySQL ユーザーが手間をかけずに MariaDB に切り替えることができるようにすることを目的としています。
MariaDB と MySQL にはどのような類似点がありますか?
MySQL は 1995 年にリリースされたリレーショナルデータベース管理システムです。2009 年、デベロッパーは MySQL 5.1.38 のコード派生として MariaDB をリリースしました。
MariaDB は MySQL から派生しているため、2 つのリレーショナルデータベース管理システムには多くの類似点があります。たとえば、MariaDB は MySQL の構造、命名規則、データ定義ファイルを保持しています。さらに、すべての MySQL コネクタ、接続、およびポートをサポートします。MySQL クライアントパッケージは MariaDB で変更しなくても動作します。
次に、さらなる類似点をご紹介します。
ACID 準拠
データベーストランザクションの信頼性を保証する 4 つの基本原則は、不可分性、整合性、分離性、耐久性 (ACID) です。MySQL と MariaDB はどちらもこれらの原則に準拠しています。ACID に準拠することで、どちらのデータベースもデータの正確性と完全性を維持します。
SQL の互換性
MySQL と MariaDB は、データをテーブルに整理するリレーショナルデータベースです。MariaDB と MySQL はどちらも SQL を使用してデータの管理とクエリを行います。これらのシステム全体で同じコマンドの多くを使用できます。
オープンソースソフトウェア
オープンソースのリレーショナルデータベース管理システムである MySQL と MariaDB は、どちらもデベロッパーのコミュニティから生まれた共同開発物です。それらのソースコードは一般に公開されています。
MySQL データベースには、一般公衆利用許諾契約 (GPL) に基づいてリリースされた完全オープンソース版が 1 つあります。また、追加の機能とサポートを備えた有料のエンタープライズ版も 1 つあります。MariaDB は GitHub 上で完全にオープンソースになっています。
セキュリティ
MySQL と MariaDB は同様の基本セキュリティ機能を提供します。暗号化、アクセス制御メカニズム、ユーザー認証と承認、SSL/TLS サポートを提供します。また、きめ細かなアクセス制御が可能なため、ユーザーごとに異なる権限レベルを与えることができます。
主な相違点: MariaDB とMySQL
MySQL から派生して以来、MariaDB はその機能を拡張し続けてきました。これらの変更の中には、中核となる機能、能力、およびパフォーマンスの違いにつながっているものもあります。
MySQL と MariaDB の大きな違いは次のとおりです。
JSON データの取り扱い
MariaDB と MySQL は JSON データの取得と保存をサポートしています。ただし、JSON レポートの保存方法は異なります。MariaDB は JSON レポートを文字列で保存し、MySQL はそれらをバイナリオブジェクトとして保存します。
また、MySQL と MariaDB は両方ともすべての JSON 関数をサポートしているわけではありません。MariaDB は JSON_QUERY と JSON_EXISTS をサポートしていますが、MySQL はサポートしていません。同様に、MySQL はネイティブの JSON データ型 JSON_TABLE をサポートしていますが、MariaDB ではサポートされていません。
ただし、MariaDB はバージョン 10.2 以降、JSON データ型のみをサポートしています。MariaDB が使用する JSON データ型は LONGTEXT のエイリアスです。
機能
開発経路が異なったことで、MariaDB と MySQL はわずかに異なる機能を提供するようになりました。
たとえば MySQL には、1 つの列に複数のデータ値を定義し、関数を使用して列を変更できる動的列が用意されています。動的列を使用すると、データをマスキングして機密情報を保護できます。
対照的に、MariaDB はデータベースビューの非表示列をサポートしています。ユーザーが SELECT ステートメントを実行したり、INSERT ステートメントで値の入力を求めたりしても、非表示列は表示されません。
ユーザ認証
MySQL には validate_password コンポーネントがあり、これを使用してパスワードのセキュリティを強化できます。
MariaDB にはデフォルトではこのプラグインはありませんが、3 つの検証プラグインが用意されています。これらのパスワード検証プラグインを使用すると、パスワードの保護を強化できます。以前に使用されていた SHA-1 認証に代わって、バージョン 10.4 では、MariaDB は ed25519 認証プラグインを導入しました。これにより、ユーザーを認証し、パスワードを安全に保存できます。
暗号化
MySQL と MariaDB はどちらも、保管中および転送中のデータを暗号化します。
MySQL では、管理ユーザーが REDO ログと UNDO ログを設定して暗号化できますが、一時的なテーブルスペースやバイナリログは暗号化しません。
一方、MariaDB はバイナリログ暗号化と一時テーブル暗号化をサポートしています。
スレッドプーリング
スレッドプーリングを使用すると、新しい接続を既存のスレッドと組み合わせることにより、データベースのリソースを最適化できます。スレッドプールの容量を増やすことは、何千人ものユーザーに並行してサービスを提供したいアプリケーションにとって不可欠です。
MariaDB のスレッドプールプラグインには、コミュニティ版の一部であるスレッドプールプラグインにスレッドプーリングが含まれています。MariaDB は、200,000 を超える接続を一度に管理する機能を提供します。
MySQL のエンタープライズ版にはスレッドプールプラグインがあります。ただし、MariaDB ほど多くの接続を一度に処理することはできません。
使用すべき場面の比較、MariaDB とMySQL
MariaDB は、MySQL に比べてスケーラブルで、クエリも高速です。これにより、大規模なデータを管理するのに適しています。また、MariaDB には、シーケンスストレージエンジンや仮想列など、MySQL にはない機能が他にもあります。1 つのテーブルで複数のエンジンを使用することもできます。
しかし、MySQL は MariaDB よりもずっと長い歴史があります。MySQL が提供するエンタープライズサポートを好む組織もあります。
次に、両方のデータベースを選択する際の考慮事項をいくつか示します。
ストレージエンジン
データベース管理システムでは、ストレージエンジンはデータベース内のデータを取得、更新、および保存するのに役立つコンポーネントです。使用するストレージエンジンが判断に影響する可能性があります。
MySQL と MariaDB の両方で複数のストレージエンジンを使用できますが、MySQL の選択肢は限られています。MySQL のストレージエンジンには、InnoDB、CSV、Federated、MyISAM、Mergeなどがあります。
MariaDB は XtraDB、Aria、InnoDB、MariaDB ColumnStore、Memory、Cassandra、Connect など、MySQL ではサポートされていない一部のストレージエンジンをサポートしています。
ライセンス
MariaDB と MySQL には両方とも一般公衆利用許諾契約書 (GPL) バージョンがあります。MariaDB は完全に GPL の認可を受けていますが、MySQL にはパブリックとプライベートの 2 つのライセンスがあります。
MySQL エンタープライズ版のプライベートライセンスでは、スレッドプーリングなどのクエリ速度を向上させる追加機能が利用できるようになります。GPL 下でソースコードを配布せずに MySQL ソフトウェアを配布したいと考えている企業は、MySQL エンタープライズ版を好むかもしれません。
Oracle データベースの互換性
Oracle データベースの互換性とは、Oracle データベースが MariaDB または MySQL データベースで構築されたアプリケーションと連携できることです。
組織ですでに Oracle データベース製品を使用している場合は、MySQL をお勧めします。Oracle データベースには、MySQL 固有の SQL 構文専用の互換モードが用意されています。ただし、MySQL は Oracle が開発したアプリケーション指向言語である PL/SQL をサポートしていません。
バージョン 10.3 以降、MariaDB は PL/SQL をサポートしています。MariaDB には、Oracle データベースアプリケーションを変更せずに実行するための Oracle 構文互換モードも用意されています。
スピードとパフォーマンス
長年、MySQL はいくつかのユースケースで MariaDB を凌駕していました。たとえば、MySQL 8.0 は、MariaDB の 10.3 バージョンよりも 1 秒あたりのクエリ数を多く処理できます。しかし、MariaDB は近年多くの進化を遂げてきました。
現在のところ、クエリの実行とレプリケーションタスクの点で MariaDB の方が高速です。パフォーマンスが重要なワークロードには MariaDB の方が適している可能性があります。
MySQL から MariaDB に切り替えることはできますか?
はい、最小限の労力で MySQL から MariaDB に移行できます。MariaDB は MySQL との下位互換性があるように設計されています。つまり、MySQL 用に作成されたアプリケーションとスクリプトは、大きな変更を加えることなく MariaDB で動作するはずです。
MariaDB 5.5 まで、MariaDB サーバーは MySQL のバージョン番号スキーマに従い、同じメジャーバージョンの MySQL とのドロップイン互換性を目指していました。2012 年には、MySQL では利用できない機能の数が増えたことを反映して、MariaDB サーバーのバージョン番号が分岐しました。MariaDB は 10.0 をリリースし、MySQL は 5.6 をリリースしました。
MariaDB サーバーは MySQL との高い互換性を今でも保持しています。古い MySQL バージョンから最新の MariaDB バージョンへのアップグレードは、一括アップグレードでサポートされています。
MySQL から MariaDB への切り替えは、標準的なインストール手順に従います。mysql_upgrade ツールを実行して、MySQL データベースの権限とイベントテーブルを MariaDB と同等のもので更新します。
相違点の要約: MySQL とMariaDB
MySQL |
MariaDB |
|
JSON |
MySQL は JSON レポートをバイナリオブジェクトとして保存します。 |
MariaDB は JSON レポートを文字列で保存します。MariaDB の JSON データ型は LONGTEXT のエイリアスです。 |
Oracle データベースの互換性 |
MySQL は高い互換性を備えていますが、PL/SQL はサポートしていません。 |
MariaDB は高い互換性を備えており、バージョン 10.3 以降の PL/SQL をサポートしています。 |
スピードとパフォーマンス |
MySQL は、レプリケーションとクエリの点で MariaDB よりもわずかに低速です。 |
MariaDB は、レプリケーションとクエリの点で MySQL よりもわずかに高速です。 |
機能 |
MySQL は、超読み取り専用関数、動的カラム、およびデータマスキングをサポートしています。 |
MariaDB は不可視列と一時的なテーブルスペースをサポートしています。 |
認証 |
MySQL には validate_password コンポーネントがあります。 |
MariaDB には 3 つのパスワード検証プラグインがあります。 |
暗号化 |
MySQL データベースは InnoDB と AES を使用して保管中のデータを暗号化します。 |
MariaDB は、一時ログ暗号化とバイナリログ暗号化をサポートしています。 |
ストレージエンジン |
MySQL のストレージエンジンは MariaDB よりも少なくなっています。 |
MariaDB には MySQL よりも多くのストレージエンジンが搭載されており、1 つのテーブルで複数のエンジンを使用できます。 |
ライセンス |
MySQL には、MySQL エンタープライズエディションと GPL バージョンの 2 つのバージョンがあります。 |
MariaDB は完全に GPL の下にあります。 |
スレッドプーリング |
MySQL のエンタープライズエディションにはスレッドプーリングがあります。 |
MariaDB は一度に 20 万件以上の接続を管理できます。これは MySQL よりも多い数です。 |
AWS は MySQL と MariaDB の要件をどのようにサポートできますか?
Amazon Relational Database Service (Amazon RDS) は、クラウドでデータベースを容易に設定、運用、スケ―リングできるようにできる、フルマネージドサービスの集合体です。
よく使用される 7 つのエンジンから選択してください。そのうちの 2 つは MySQL と MariaDB 専用です。Amazon RDS for Maria DB は MariaDB サーバーのバージョン 10.3、10.4、10.5、および 10.6 をサポートしています。Amazon RDS for MySQL は、MySQL Community Edition のバージョン 5.7 および 8.0 がサポートされています。
Amazon SNS を使用することで得られるメリットは次のとおりです。
- コスト効率が良く、サイズ変更が可能なハードウェア容量により、スケーラブルな MariaDB および MySQL クラウドデータベースを数分でデプロイ可能
- 既存のコード、アプリケーション、ツールを変更せずに使用
- 50 以上の CPU、メモリ、ファイルシステム、およびディスク I/O メトリクスにアクセスして、高度なデータベース監視を実現
- 可用性と耐久性の向上により、1 つのデータベースインスタンスの容量制約を超えて柔軟にスケールアウト可能
今すぐアカウントを作成して、AWS で MySQL と MariaDB の使用を開始しましょう。