MariaDB vs MySQL: 徹底比較

## MySQLとMariaDB: ５つの重要な違い

- MySQLはMariaDBよりもはるかに古いDBです。MariaDBはMySQLプロジェクトで比較的最近の派生したものです。
- MySQLは GPLまたはプロプライエタリ・ライセンスで利用できます。MariaDBは完全にGPLです。
- MySQLはOracleが所有し、配布しています。MariaDBは完全にオープンソースです。
- MySQLは他のシステムから独立しています。MariaDBは、MySQLの現在のバージョンをトラックし、ミラーリングします。
- MariaDBはMySQLより高速であることが多いです。

MariaDBとMySQLは同一プロジェクトの派生ですが、同じというわけではありません。このガイドでは、MySQL と MariaDBの違いについて学び、[どちらの方がニーズに適しているか](https://www.integrate.io/jp/blog/which-database-ja/)
を知ることができます。 
## MariaDB vs. MySQL: 両者の違いは？
オープンインターネット上のウェブサイトの[約79%](https://w3techs.com/technologies/details/pl-php?utm_source=xp&utm_medium=blog&utm_campaign=content)は、LAMPスタックの3本柱であるLinux、Apache、PHPを使用しています。

LAMPの「M」は、OracleのMySQLか、コミュニティで開発されたMariaDBのどちらかを指します。これら2つの人気のあるRDBMSは、同じプロジェクトの派生であり、アーキテクチャが非常に似ています。

**MySQLとは?**
90年代半ばのドットコム・ブームの前には、2つの独自システムがデータベースの世界を支配していました。Oracle DatabaseとMicrosoft SQL Serverです。1995年、スウェーデンの小さなソフトウェア会社が、すべてを変える新製品、MySQLをリリースしました。

MySQLは小さくて軽く、UNIXやLinux環境でも動作しました。しかし、MySQLの成功を支えたのは、革新的なデュアルライセンスモデルでした。MySQLは[Gnu Public License(GPL)](https://www.gnu.org/licenses/gpl-3.0.en.html?utm_source=xp&utm_medium=blog&utm_campaign=content)の条件で無料で利用できましたが、商用開発にはプロプライエタリなエンタープライズライセンスを必要としました。  

21世紀になると、Web 2.0が台頭し、そのほとんどがLAMPスタックを利用しており、MySQLは必要なデータ管理サービスを提供していました。MySQLは、WordPress、Joomla、Drupalなどのオープンソースのコンテンツ管理システムのデフォルトRDBMSとなりました。 

2010年、オラクルはMySQLを買収し、デュアルライセンスモデルを継続しています。 

MySQLの人気のある機能は以下の通りです。

- **マルチプラットフォーム**：MySQLはWindowsとMac OSX で動作し、いくつかのLinuxディストリビューションではデフォルトのコンポーネントとなっています。
- **多言語対応**：MySQLは PHP を使用していますが、Java、C++、Python、Ruby もサポートしています。 MySQLはPHPとの関連性が高いですが、Java、C++、Python、Ruby、Perl、Haskel、Tcl、Eiffelもサポートしています。  
- **柔軟なストレージエンジン**：MySQL はデフォルトで InnoDB ストレージエンジンを使用していますが、開発者はプラグインのストレージエンジンを使用して柔軟性を高めることができます。 
- **マルチバージョン同時実行制御 (MVCC) および ACID 準拠**：これらの機能はInnoDBのストレージエンジンの一部であり、他のエンジンでは利用できない場合があります。 
- **高速なパフォーマンス**：MySQLは競合のRDBMSよりも軽量です。これは、同時に一部の機能がないことを意味しますが、特に大量の読み取り専用トランザクションを処理する場合には、パフォーマンスが大幅に向上することを意味します。
- **クラウド対応**：MySQLはほぼどこにでも展開できるため、クラウドベースのアプリケーションやサービスに最適です。 

Amazon、Twitter、Netflix、Uber、Pinterest、Slack、Airbnbなど、[世界でも有数の大企業](https://stackshare.io/mysql?utm_source=xp&utm_medium=blog&utm_campaign=content)が MySql を利用しています。 

**MariaDBとは?**
MySQLは、主要プレイヤーであるMicrosoftとOracleの主要なライバルとなりました。そのため、2010年にOracleがMySQLを買収したときには、オープンソースRDBMSの道は閉ざされたかのように見えました。 

MySQLの創設者たちは、すぐにMariaDBという派生プロジェクトに取りかかりました。目標は新しいデータベースシステムを作ることではなく、OracleがMySQLを廃止したり、完全にプロプライエタリな製品にしたりした場合に、同等の代替品として機能するようなものを作ることでした。 

結局、オラクルはそのようなことはしませんでした。MySQLのオープンソース版は今日まで続いています。しかし、MariaDBは、そのライセンスモデルとコミュニティのサポートにつながるオーディエンスを見つけました。 

MariaDBの主な特徴は以下の通りです。

- **MySQLとの完全な互換性**：MariaDBは、MySQLとのコードマージを毎月実施し、継続的な互換性を確保しています。
- **MySQLの代替プラグイン**： MariaDBのデータファイルは、類似のファイル名、パス、データおよびテーブル定義ファイルなど、MySQLの関連バージョンと一般的に互換性があります。 
- **完全なGPLライセンス**：GPLの条項による商用開発にはいくつかの制限がありますが、MariaDBはパブリックライセンスで完全にカバーされています。
- **広範なコミュニティサポート**：MariaDBには、活発な開発者コミュニティがあり、サポートを提供し、将来のバージョン開発に取り組んでいます。 

[Wikipedia](https://diff.wikimedia.org/2013/04/22/wikipedia-adopts-mariadb/?utm_source=xp&utm_medium=blog&utm_campaign=content)、[Google](https://www.theregister.com/2013/09/12/google_mariadb_mysql_migration/?utm_source=xp&utm_medium=blog&utm_campaign=content)、[Harvard](https://www.wappalyzer.com/technologies/databases/mariadb/)など、著名なMySQLユーザーがMariaDBに乗り換えた例がいくつかあります。
## MariaDB vs. MySQL: 主要な技術的な違い
表面的なレベルでは、この2つのRDBMSの間には目立った違いはほとんどありません。MariaDBは依然としてMySQLのドロップイン代替となることを目指しているので、この2つの間には大きな類似性があります。 

しかし、だからといって両者が同じというわけではありません。両者の間には違いが現れており、そのいくつかはデータベースの選択時に大きな違いをもたらすかもしれません。ここでは、最も顕著な違いのいくつかを紹介します。

**1) デプロイメント**
MariaDBは、Ubuntu、Debian、CentOSを含む多くのLinux環境で動作します。また、Windowsのネイティブサポートもあり、[Homebrew](https://mariadb.com/kb/en/)を使用することでMac OSXでも動作させることができます。 

MySQLは、LinuxやWindowsだけでなく、OSX、Solaris、FreeBSDなど、より幅広い環境で動作します。 

**2) データタイプ**
MySQLには、ネイティブのJSONデータ型が含まれています。これにより、JSON (JavaScript Object Notification) データを文字列に変換するのではなく、既存の形式で保存することができます。これにより、2つの大きなメリットがあります。第一に、MySQL は JSON 型のデータをパースすることができ、無効なドキュメントはエラーを生成します。第二に、この形式で保存された JSONへの迅速なアクセスが可能となります。 

MariaDBは、このデータ型を追加しないことを選択しました。MariaDBにはJSONデータ型がありますが、これはLONGTEXT型としてデータを格納します。このデータ型が有効なJSONを保持しているかどうかを確認するために、このデータ型に対して有効性チェックを行うことができます。

**3) ドキュメントストア** 
Xプロトコルの一部として、MySQLはいくつかのドキュメントストレージ機能を提供できるようになりました。この機能は[MongoDB](https://www.integrate.io/integrations/mongodb/)に似ていますが、構文やプロトコルが異なるため、MongoDBとの直接の互換性はありません。それでも、MySQLにある程度のNoSQL機能が組み込まれたということです。 

MariaDBはXプロトコルを実装しておらず、ドキュメントストレージのネイティブサポートもありません。しかし、[CONNECTエンジン](https://mariadb.com/kb/en/)により、MariaDBは他のデータストアと接続してクエリを実行することができ、利用可能なデータソースの幅が広がります。 

**4) コマンドライン・アクセス**
これらの RDBMS はどちらも非常に類似したコマンドラインエディタを備えています。しかし、主にMySQLにXプロトコルが実装されたことが原因で、両者はもはや直接の互換性はありません。MySQLエディタでは、JavaScriptとPythonでスクリプトを書くことができ、さらにドキュメントストアとやり取りすることができます。 

MariaDBユーザーは、基本的なデータベース操作を可能にするシンプルなシェルであるMariaDBコマンドラインエディタで作業する必要があります。 

**5) クエリ最適化**
ビューは仮想テーブルの一種であり、データベース内の物理テーブルからデータを取得します。ビューに対してクエリを実行すると、ビューはこれらの物理テーブルからデータを取得する必要があります。 

MariaDBは、関連するテーブルのみをクエリするように、これらのビューを最適化します。MySQLにはこのような最適化はありませんので、不必要にテーブルにクエリを実行してしまうことがあり、処理のオーバーヘッドが増えることがあります。

**6) スレッドのプーリンング**
いくつかのデータベースアーキテクチャでは、接続するたびに新しいスレッドを作成する必要があります。スレッドプーリングはこれをより動的に処理する方法で、現在開いているスレッドのプールを使用することができます。小さなクエリを実行する必要がある場合は、開いているスレッドのいずれかを使用することができます。 

スレッドプーリングはMariaDBの標準機能です。MySQLにも存在しますが、今のところエンタープライズ版のみです。 

**7) カラム型ストレージ**
MariaDBにはColumnStoreというストレージエンジンが搭載されており、これを利用して[カラム型ストレージ](https://www.integrate.io/glossary/what-are-columnar-databases/)を作成することができます。基本的な用語では、これは通常のデータベースを横に反転させたもので、垂直方向ではなく水平方向に拡張します。 

この構造は、多数の物理ボリュームに分散した大規模なデータセットを扱う場合に非常に便利です。書き込み処理では行がグループ化される傾向があります。つまり単一の列を取得したい場合には、システムがボリューム間をジャンプし続ける必要があります。ColumnStore は配置を反転させて、カラムデータを 1 つの場所に保持します。この機能は MySQL にはありません。 

**8) セグメント化されたキーキャッシュ**
セグメント化されたキーキャッシュは、MariaDBの機能であり、MySQLよりも優れた性能を発揮することがあります。どちらのRDBMSもキャッシュを使用しており、プロセスがキャッシュへのアクセスを競い合うことがよくあります。1つのプロセスがキャッシュを使用している場合、他のすべてのプロセスは完全にロックアウトされます。 

MariaDBでは、これらのロックを64セグメントに分割することで、一部のプロセスを並行して動作させることができます。これにより、プロセスのオーバーヘッドを低減しながら、全体的な効率を向上させることができます。 

**9) システム変数**
MySQLとMariaDBが分岐するにつれ、独自のシステム変数のリストが増えてきました。これらの中には、一方のプラットフォームにしか存在しない機能に関連するものもあります。例えば、MariaDBには、MySQLには存在しないエンジンに関連するいくつかの変数があります。 

MySQLには、スーパーユーザを読み取り専用アクセスに設定できるSUPER_READ_ONLYや、ステートメントのバッチ処理を可能にするTRANSACTION_ALLOW_BATCHINGなどの変数があります。MariaDB Foundationでは、[互換性のないシステム変数の完全なリストをナレッジベース](https://mariadb.com/kb/en/)
で管理しています。 

**10) テンポラリーデータテーブル**
テンポラリテーブルは、過去のデータのビューです。例えば、データベースに問い合わせをして、昨年のこの日の値を表示したい場合があります。これは、分析、リカバリ、レポート、データ調査などに便利です。  

この機能はMySQLにはありませんが、MariaDB 10.5で提供されています。MariaDBの実装では、SQL:2011標準で説明されているものよりもはるかにシンプルな構文を使用しています。

## MariaDB vs. MySQL: エンタープライズにとってどちらのRDBMSがベストか？
これらの技術的な違いの中には、MariaDB vs. MySQLについて考えるときに、あなたの判断を左右するものがあるかもしれません。しかし、ほとんどのビジネスにとって最も重要な要素はコストです。つまり、ライセンスとサポートの2つ面で見ていくことになります。 

MariaDBもMySQLのコミュニティ版も、以下のような多くの目的において無料で使用できます。

- ウェブサイトのパワーアップ
- 内部データの保存
- GNUの下で配布するアプリケーションを構築する

どちらかで商用アプリケーションの構築を開始したい場合は、MySQLのエンタープライズライセンスを検討する必要があります。 

MySQLのエンタープライズ版にはいくつかのプレミアム機能が含まれており、その多くはMariaDBのコミュニティ版で自由に利用できます。 

どちらのプラットフォームも2つのレベルのサービスを提供しています。1つ目は、開発者コミュニティと連携してアドバイスやサポートを受けることができます。MariaDBは真のオープンソースプロジェクトであるため、より活発なコミュニティを持っていますが、MySQLの人気の秘訣はオンラインでアドバイスを提供できる人がたくさんいることです。 

どちらのデータベースシステムも、エンタープライズユーザーにはプレミアムサポートを提供しています。MySQLの場合は、Oracleから直接サポートを受けることができます。MariaDBユーザーの場合は、最新バージョンを構築した人からのサポートを受けることになります。 

いずれのオプションを選択しても、LAMP スタックの高速で信頼性の高い支柱を確保することができます。そこから、顧客をあっと言わせるようなスケーラブルなサービスを構築することができます。 

## MariaDB vs. MySQL: データ統合
これらのプラットフォームはいずれも、アナリティクス、ビジネスインテリジェンス、リポジトリ、その他のデータアプリケーションとスムーズに統合します。必要なのは、最高のExtract、Transform、Loadテクノロジーを搭載した信頼性の高いデータパイプラインです。 

Integrate.ioは、信頼性の高いノーコードの統合でデータを最大限に活用するのに適したプラットフォームです。当社のソリューションが貴社のデータ統合の課題をどのように解決できるか詳しく知りたい方は、[こちら](https://try.integrate.io/jp-demo/)からオンライン相談にお申し込みください。