sql >> データベース >  >> RDS >> Mysql

MySQLとMariaDB:知っておくべきこと

    MySQLデータベースとMariaDBデータベースの両方に、議論の余地のない共通点があります。これらは、世界規模でデータベース管理システムに次ぐ最も種類の多いものです。 MySQLとMariaDBの停戦の必要性を理解するには、少し時間を遡る必要があります。

    MariaDBが登場する前は、データベース管理システムの世界を支配していたのはMySQLだけでした。その人気は長い間揺るぎないままでした。多くの人が信頼できるDBMSとして好むのは、関連する基本プログラミング言語であるC++によるものでもあります。

    その後、2008年にSunMicrosystemsによるMySQLを収容するスウェーデンの会社であるMySQLABの買収が行われました。最後に、2010年に、オラクル社はサンマイクロシステムズを強化して買収しました。それ以来、OracleはMySQLの所有、管理、および保守を続けています。

    ただし、オラクルがこのデータベース管理システムを買収した際、その主要な開発者とエンジニアは、Oracle Database Server(商用データベース)がMySQLとの利害の衝突を引き起こしていると感じました。このイベントにより、MySQLコードのフォークとしてMariaDBが作成されました。

    これら2つのデータベース管理システムの人気は、ユーザーの好みの点で引き続き高いようです。ただし、ランクに関しては、開発者コミュニティはMySQLをMariaDBよりもわずかに高いプラッターに配置しています。

    MySQLとMariaDB

    この記事では、これら2つのデータベース管理システムを比較的区別するいくつかの主要な機能に焦点を当てます。

    MySQLとは何ですか?

    このリレーショナルデータベース管理システムの主な目的は、ユーザーのデータベースに保存されているデータを整理することです。その使用法は、ApacheWebサーバーとPHPプログラミング言語で発生しやすいです。これは、WindowsおよびLinuxオペレーティングシステムのディストリビューションで人気があります。データベースのクエリに関して、MySQLはSQL言語を利用します。

    MariaDBとは何ですか?

    このDBMSは、MySQLコードベースのフォークとして存在します。リレーショナルデータベース管理システムです。エンタープライズタスクとスモールタスクの両方が、そのデータ処理機能の恩恵を受けています。多数の強力な組み込み機能に加えて、セキュリティ、パフォーマンス、および使いやすさの改善に関するMySQLバージョンの改善と見なすことができます。

    MySQLとMariaDBの機能の概要

    MySQLとMariaDBはどちらも、それぞれのユーザーコミュニティに独自の機能セットを提供します。

    MySQLの機能

    その重要な機能は次のとおりです。

    • 高可用性
    • 柔軟性とスケーラビリティ
    • 高性能
    • ウェブとデータにおけるウェアハウスの強み
    • 堅牢なトランザクションのサポート

    MariaDBの機能

    その重要な機能は次のとおりです。

    • 下位互換性のサポート
    • Perconaサーバー、MySQLサーバーのフォークでもあります。
    • オープンソースソフトウェア
    • 新しいストレージエンジンのサポート(FederatedX、XtraDB、Maria、PBXT)
    • これは、MySQLコミュニティバージョンの直接フォークです。

    MySQLとMariaDBのパフォーマンスの比較

    MariaDBは、それに関連するいくつかの最適化により、MySQLよりも優れたパフォーマンススコープを反映しています。これは、MySQLの代替リレーショナルデータベース管理システムとしての開発の背後にある主要なビジョンです。

    データベースビュー

    通常のデータベースは通常のテーブルに関連付けられています。 「ビュー」は、仮想データベーステーブルとして表すことができます。通常のデータベーステーブルをクエリするのと同じ方法で、これらの仮想データベーステーブルをクエリするのと同じ方法です。したがって、ビューをクエリする方法によって、関連するデータベース管理システムのパフォーマンスの最適化が大きく決まります。

    MySQLでビューをクエリすると、そのビューに関連付けられているすべてのテーブルをバンドルするクエリ結果が生成されます。このクエリは、不要な追加のビュー結果を生成します。 MariaDBの最適化は、このような不要な結果の手荷物を処理します。データベースクエリは、それに関連付けられたテーブルのみを検索し、余分なものは何ももたらしません。

    ColumnStore

    この機能は、MariaDBに関連する強力なパフォーマンスの即興です。分散データアーキテクチャ属性により、MariaDBでのスケーリングが可能になります。その結果、さまざまなサーバーを備えたデータベースクラスターは直線的に拡張され、ペタバイト単位のデータの保存が容易になります。

    フラッシュストレージのパフォーマンスの向上

    MariaDBのMyRocksストレージエンジンは、RocksDBデータベースの追加を担当します。このデータベースの主な設計目的は、高レベルのデータ圧縮を提供することにより、フラッシュストレージのパフォーマンスを向上させることです。

    セグメント化されたキーキャッシュ

    このパフォーマンス機能は、MariaDBのパフォーマンスの向上にも関与しています。通常のキャッシュ操作には、キャッシュされたエントリをロックするためのさまざまなスレッド間の競合が含まれます。これらの関連するロックの集合的なアイデンティティはミューテックスです。これらのロックを使用するには、これらのミューテックスを古くする必要があります。したがって、複数のスレッドが1つのミューテックスをめぐって競合することがよくあります。

    勝者スレッドは1つだけです。ソート後のミューテックスを取得できない他のスレッドは、勝者のスレッドが最初にそれを使用するのを順番に待つ必要があります。ミューテックスが解放されると、別のスレッド競合が発生します。スケジュールされた操作を実行するためにミューテックスを保護するこの競合アプローチでは、実行が遅延します。その結果、データベースのパフォーマンスも低下します。

    セグメント化されたキーキャッシュの場合、スレッド操作は別のアプローチを取ります。ページ全体がロックおよびキーの下にあるわけではありません。代わりに、ページの影響を受ける部分は、特定のターゲットセグメントに関連付けられている部分だけです。この概念により、複数のスレッドが操作を並行して実行することでタスクを実行できます。その結果、アプリケーションの並列処理の結果として、データベースのパフォーマンスが向上します。

    仮想列

    この興味深い機能は、MariaDBデータベースサポートの管理下にもあります。仮想列の機能は、MariaDBがデータベースレベルの計算を実行するのに役立ちます。この機能は、複数のアプリケーションが1つの列にアクセスする必要がある場合に役立ちます。データベースは、タスクをデータベースユーザーに任せるのではなく、個々のアプリ関連の計算を処理します。残念ながら、MySQLはこの機能を採用できるほど幸運ではありません。

    クエリの並列実行

    MariaDB 10.0以降、複数のクエリを同時にまたは並行して実行できるようになりました。この機能の機能的なアプローチは、興味深いアプローチを採用しています。マスターは、実行がスケジュールされているすべてのクエリをホストし、一部をスレーブに複製します。これらのクエリを同時に実行する機会が生まれ、並列実行が可能になります。 MariaDBがこの並列処理クエリ実行機能を採用していることで、MySQLよりも貴重な利点が得られます。

    スレッドプール

    この機能は、MariaDBのドメインにおけるもう1つの興味深い概念でもあります。その実装の前に、要求されたデータベース接続は各接続をスレッドに関連付けました。したがって、データベース接続を成功させるための基本アーキテクチャは、「接続ごとに1つのスレッド」アプローチでした。

    スレッドプールは状況を変えました。新しい接続は、データベースクエリを実行する前に、開いているスレッドのプールから選択します。これにより、新しい接続要求が必要になるたびに新しいスレッドを開く必要がなくなります。この機能により、クエリ結果が高速化されます。 MySQL Enterprise Editionはこの機能をホストしていますが、CommunityEditionについて同じことを述べることはできません。

    ストレージエンジン

    MySQLのストレージエンジンは強力であるだけでなく、すぐに使用できます。残念ながら、MySQLについて同じことを述べることはできません。このような強力なエンジンの例には、AriaやXtraDBが含まれます。 MySQLは、これらのストレージエンジンの一部に対応するのに十分な拡張性がありますが、データベースユーザーは、手動インストールによってそれらを実装する技術を持っている必要があります。この要件により、新しいデータベースユーザーには不向きになります。

    互換性

    MariaDBは、MySQLでサポートされているアプリケーションにシームレスに存在し、それを上回っています。お気づきかもしれませんが、MySQLの各バージョンリリースは、一般的な互換性を示す方法として、同様のバージョン番号を持つMariaDBのネメシスバージョンに関連付けられています。つまり、MariaDBは、「MySQLで何ができるか、私はもっとうまくできる」と言っています。

    このアプローチのもう1つの利点は、データベースユーザーがアプリケーションコードベースを変更する技術を必要としないため、MySQLからMariaDBへの切り替えがシームレスになることです。

    オープンソースとプロプライエタリデータベース

    Oracleという名前は、MySQLを世界中の多くの企業や組織にちなんで巨大なプロジェクトにしています。ただし、この名声には長所と短所があります。大きな欠点の1つは、大規模または大規模な組織での機能のリリースです。さらに、このプロセスは多くの時間を消費する傾向があります。

    一方、MariaDBのオープンソースの性質は、外部からの貢献、拡張機能、および新機能のリリースを受け入れることを妨げません。その結果、MySQLとMariaDBのどちらを使用するかわからない多くのユーザーにとって、これは大きな決定要因になります。

    MariaDBとMySQLの主な違い

    • MariaDBのストレージエンジン数は、MySQLと比較して多くなっています。 MariaDBには12があり、MySQLのドキュメントにあるものよりはるかに多いです。
    • 実行可能な接続プールに関して、MariaDBには200000以上のサポートされている接続があります。 MySQLでサポートされている接続プールの数値は小さくなっています。
    • これら2つのデータベースのパフォーマンスメトリックを理解するには、それらのレプリケーション速度を確認する必要があります。 MariaDBはMySQLよりもはるかに高速に複製します。
    • MySQL Community EditionがRDBMSコミュニティに公開されているため、このデータベースアプリケーションのEnterprise Editionを定義する独自のコードが存在するため、完全にオープンソースにはなりません。一方、MariaDBは完全にオープンソースです。
    • MySQLの動的列およびデータマスキングのサポートは、MariaDBよりも優れています。
    • パフォーマンスの速度に関しては、MariaDBがMySQLよりも速度の点で優れていることを一般化できます。

    MariaDBとMySQLの主な違い

    • これら2つのデータベース管理システムソフトウェアに対するサーバーオペレーティングシステムのサポートに関して、OS XはMariaDBのリストにはないが、MySQLにはある唯一のものです。
    • MySQLには、KILL、WITH、JSONステートメントなどのMariaDBの新機能と拡張機能がありません。
    • MySQLのエンタープライズエディションで提供されるすべての機能について、MariaDBは代替のオープンソースプラグインに快適さを見出しています。
    • MariaDBは、クローズドソースの優先コードを通じて独自のコンテンツを保護します。 MySQLのEnterpriseEditionは、コンテンツを保護するために独自のコードも使用しています。
    • MariaDBはデータマスキングをサポートしていません。このサポートはMySQLで明らかです。
    • MySQLは動的列をサポートしていますが、MariaDBはサポートしていません。
    • MariaDBはSQLyogを介してデータベースの監視を実行しますが、MySQLはMySQLWorkbenchを介して同じ目的を達成します。
    • MariaDBは、MariaDBMaxScaleを介したルーティングを処理します。 MySQLはMySQLルーターを介して同じことを行います。
    • MariaDB ColumnStoreは、MariaDBの分析を処理します。この機能はMySQLにはありません。
    • セカンダリデータベースモデルは、MariaDBのドキュメントストアとグラフDBMSによって提供されます。 MySQLはドキュメントストアにのみ帰属します。
    • MariaDBのGithubスターは2.8K上昇していますが、MySQLは4KGithubスターでリードしています。
    • MariaDBの最近記録されたフォークは868でしたが、MySQLは1.6Kのフォークでリードしています。

    MySQLとMariaDBの長所と短所

    MySQLとMariaDBのどちらを選択するかについてさらに明確にする必要がある場合は、次の見出しの簡単なポイントを参照してください。

    MySQLを使用する理由

    2つの要素が、リレーショナルデータベース管理システムとしてのMySQLの有用性を正確に強調して要約しています。

    • SQLサーバーのように単一のストレージエンジンをサポートするシステムとは異なり、複数のストレージエンジンのサポートは継続的です。
    • 上記の複数のストレージエンジンのサポートにより、MySQLは高性能のリレーショナルデータベース管理システムになります。ただし、その完璧なパフォーマンスの主な要因は、RDBMSの設計の単純さです。

    MariaDBを使用する理由

    • BSD、GPL、およびLGPLライセンスの下で動作します。
    • 標準のクエリ言語としてのSQLのサポートは有効です。
    • 多数の高性能ストレージエンジンがパッケージ化されています。これらのストレージエンジンはスケーラブルであり、代替のリレーショナルデータベース管理システムとうまく統合できます。
    • GaleraClusterテクノロジーの進歩に伴います。
    • Web開発者にとって、MariaDBはPHPプログラミング言語の人気とうまく同期します。

    MySQLの欠点

    • このRDBMSのスケーリングは簡単な作業ではありません。
    • 所有者であるOracleからの制限により、MySQLコミュニティに完全に拡張することはできません。
    • その設計とパフォーマンスの指標は、大規模なデータの処理には適していません。
    • クライアントのアプリケーションからはぼやけているため、表示されません。
    • データベースサーバーは、トリガーによって簡単に高負荷がかかる可能性があります。

    MariaDBの欠点

    • MariaDBはまだデータベースコミュニティの新人であるため、多くのユーザーはまだその完全な実装と使用法に懐疑的です。
    • 無料のデータベースエンジンのホストであるMariaDBの自由は、ユーザーサポートに代償が伴うことを意味します。

    最後のメモ

    MariaDBに関連する有名な企業には、Grooveshark、Accenture、Docplanner、Nriseなどがあります。 MySQLについては、Dropbox、Uber Technologies、Netflix、Airbnbがあります。これら2つのリレーショナルデータベース管理システム間の歴史は、ユーザーコミュニティに最適なバージョンを作成するように促しています。

    MariaDBの優れたパフォーマンスと壮大な機能により、RDBMSコミュニティで評価される力になっていることは間違いありません。また、その便利な機能のいくつかはMySQLで実行可能です。最後に、MariaDBの機能が豊富な性質により、MariaDBは優れたプライマリバックエンドデータベースになっています。

    すでにOracleライセンスを使用している場合でも、MySQLで安全です。ただし、MariaDBは、リレーショナルデータベース管理システムの視野を模索し始めているユーザーや企業に推奨されます。値札なしで探索するためのより多くのオプションがあります。 MySQLを完全に理解している場合は、MariaDBに切り替えると、強く考慮する必要のある差別化要因を簡単に解明できます。理想的なリレーショナルデータベース管理システムを選択してください。


    1. MySQLとPDO

    2. MySQLで主キーのインデックスが自動的に作成されますか?

    3. MyCLI –オートコンプリートと構文強調表示を備えたMySQL /MariaDBクライアント

    4. EXECUTEFORMATの使用方法...postgres関数での使用