90 年代初頭から 2000 年代に生きていた人なら、 LAMP Web 開発スタックについてはすでによく知っている可能性があります。つまり、これは、 L inux、 A pache、 M ySQL、および P HP/Python/Perl を表します。ほとんどの Web プロジェクトは、特定のスタックのみを使用して構築されていました。
アクセスしやすく、保守も比較的簡単で、非常に小規模なマシンで LAMP プロジェクトを管理できるため、導入コストはほとんどかかりませんでした (そして今もそうです)。
しかし、時代は変わり、私たちは皆、それを目撃してきました。 PHP はかつて、Web 開発とソフトウェア開発の両方においてゴールド スタンダードでした。そしてここ数年、PHP がその魅力を失っただけでなく、考えられるほぼすべてのプロジェクトで JavaScript の使用が大幅に増加しました。
SO の年次開発者調査から取得した このグラフは、PHP が Python、Java、そして最も重要な JavaScript などの言語にどれだけ遅れをとっているかを示しています。
ただし、この記事の焦点はプログラミング言語ではなく、代わりに、最新のデータベース システムの状態とその違いについて見ていきます。上のグラフが示すように、SQL は依然として好調であり、プロの開発者の 52% 以上が日常のワークフローで SQL を使用しています。
プログラミング言語が変化し進化するのと同じように、データベース システムも変化します。前述の調査をさらに詳しく調べると、他のデータベース システムの成長を示す次のグラフが得られます。
特に、この記事で最も注目する 2 つのシステムは、 MongoDB と MariaDB です。どちらも使用と人気が着実に増加しているため、なぜこれが起こっているのかを検討する価値があります。
さらに、これらのシステムのいずれかに、ワークフローで SQL を使用する場合に比べて大きな利点があるかどうかを確認することも重要です。 SQL は熟練した信頼性の高いテクノロジーですが、 大規模プロジェクトの場合には欠点がある場合があります 。
詳しく見てみましょう。
MySQL: 人気があり、アクセスしやすく、信頼性が高い。
MySQL は 、世界で最も広く知られているデータベース管理システムです。これは Oracle ( 徐々にエンジンを取得 ) によって保守されており、最新の正式バージョンは 8.0 です。 MySQL は現在開発が進められており、オープンソース プロジェクトのままです。
現代の目的を目的としたいくつかの異なるデータベース システムが増加しているにもかかわらず、MySQL は最も進化したテクノロジー企業の間でも依然として人気があります。 Netflix、Twitter、Slack、 その他の大手ブランドは、 何らかの形で MySQL に依存している何百万もの企業のうちのほんの一部にすぎません。
地球上で最も人気のあるブログ プラットフォームである WordPress でさえ、データベース システムとして MySQL を熱心に使用し続けています。ただし、 Automattic が JavaScript とその機能を通じて WordPress の未来を形作るための大きな計画を立てた ため、これはすぐに変わるかもしれません。
では、MySQL の顕著な機能は何でしょうか?
- クライアントとサーバーの通信。 MySQL は、クライアントとサーバー間のバックツーバック通信のための簡単な手段を提供します。これにより、さまざまなサーバー、ネットワーク、クラウド システムを通じて MySQL アプリケーションを簡単に拡張できるようになります。
- 柔軟性。 MySQL は、開発者が非常に柔軟な方法でデータを管理できる機能を備えています。これは主に SELECT 構文によって実現され、最大のデータセットでも管理できる大きな可能性を提供します。
- パフォーマンス。 従来、「MySQL とパフォーマンス」という言葉は結びつきませんでしたが、システムの最新バージョンは パフォーマンスに非常に優れていることが証明されています 。
- サポート。 MySQL は他のほとんどのデータベース システムよりも長く存在しているため、はるかに多くのサポート ニーズにアクセスできます。これには、 実際のドキュメント 、 Q&A サイト 、そしてもちろん オンライン チュートリアルが 含まれます。
これらすべてにより、MySQL はほぼあらゆる種類のプロジェクトにとって確実な選択肢となります。しかし、もちろん、いくつかの欠点もあります。その 1 つは、MySQL がデータをテーブル、行、列に保存することです。つまり、データベースのサイズが大きくなるにつれて、そのデータにアクセスし、解析し、利用するためのリソースの要件も大きくなります。
経験豊富な開発者はこのことをよく理解しています。そのため、より合理化されたデータベース システムに依存する開発者やブランドが増加しています。
全体として、MySQL は、新しい Web プロジェクトやソフトウェア プロジェクトの出発点として適しています。データベースの一般的な動作方法を学習するのに役立ち、作業に必要なリソースが豊富にあります。
MariaDB: パフォーマンスを念頭に置いています。
MariaDB には、 その誕生の背後にある興味深い物語が あります。具体的には、MariaDB は MySQL のフォークであり、MySQL の初期開発者の一部によってサポートされています。 Oracle (企業) が MySQL を買収することに懸念があったため、MariaDB が 2009 年に誕生しました。それ以来、プロジェクトは進化と成長を続け、前のグラフに示されているように、現在では プロの開発者の約 17% によって使用され ています。 。
MariaDB がオリジナルの MySQL のフォークであることの素晴らしい点の 1 つは、 あるデータベース システムから別のデータベース システムに簡単に (そして安全に) 移行できること です。ほとんどのコマンドライン構文はほぼ同じままです。
では、より人気のある MySQL システムではなく MariaDB を選択することにどのような意味があるのかと疑問に思われるかもしれません。データベースに関して MariaDB がどのようにデータ管理エクスペリエンスを向上させることができるかを示すいくつかの核となるポイントを見てみましょう。
- ストレージ エンジン 。 MariaDB には 12 個のストレージ エンジン (Cassandra、TokuDB など) が付属しており、さまざまな種類のデータをより効果的に保存できます。これは、上記の種類のデータへのアクセスがサーバーのパフォーマンスにあまり依存しなくなることも意味します。
- キャッシュ/インデックス作成の高速化 。 「Memory」と呼ばれる独自のストレージ エンジンは、MySQL よりも INSERT コマンドが最大 25% 高速です。データベースに保存する情報の量が増加するにつれて、これは重要性を増します。
- プラグイン システム 。 MariaDB は、ソース コードから MariaDB サーバーを再構築することなく、コア ソフトウェアに追加できるソフトウェア コンポーネントであるプラグインの使用をサポートしています。したがって、プラグインは起動時にロードすることも、サーバーの実行中に中断することなくロードおよびアンロードすることもできます。
コア エンジンは、Windows、Linux、 さらには OSX を 含むすべての主要なオペレーティング システムと互換性があります。
ここ数年にわたり、 Wikipedia 、 Google 、および 多数の世界クラスの銀行 などの企業はすべて、データベース システムの主な選択肢として MariaDB を採用しています。これは、MariaDB の堅牢性だけでなく、大規模ブランドがこのプロジェクトに対して抱いている信頼も示しています。
MariaDB をインストールし、実稼働用に構成する方法を確認してください。
MongoDB: 高可用性のデータ構造化。
MongoDB は、 その悪名高いドキュメントベースのデータベース システムにより人気が高まり続けています。つまり、MongoDB では、 insertMany() 関数を使用して、高速でデータベースに新しいデータを挿入できます。一方、MySQL では、これを 1 つずつ行う必要があります。違いを理解するのにグラフは必要ありません。
ただし、必要な場合のために、ここに Onyancha Brian Henry によって提供されたグラフがあります。
ここで見ているのは、MySQL (赤) と MongoDB (緑) がデータベース内にデータを挿入するのにかかる時間です。 手元にあるデータは、100 万件の挿入のベンチマークを使用して計算されました。
最も一般的には、大量の混合データを扱うことになることがすでにわかっている開発者は、最も柔軟性が高い MongoDB を選択します。当該データを管理するため。 スキームに束縛されずに 、データとその型をすぐに保存したり、後で使用したりすることができます。
- スケーラビリティ。 複数のサーバー間でデータを転送したいですか? MongoDB は、さらに高速なパフォーマンスを補うため、この動作を奨励します。さらに、すべてのデータは JSON 形式で保存されます。
- モバイル開発。 新しい種類の技術スタックは MERN (MongoDB、Express、React、Node) と呼ばれ、高品質のモバイル アプリの開発を目的としています。モバイル アプリケーションは非常に速いペースで膨大な量のデータを生成する傾向があるため、この目的では MongoDB がデフォルトの選択肢となるのは当然です。
- ダイナミックな構造。 問題は予見なしに発生する可能性があります。 MongoDB の場合、内部データ構造に関する問題に対処する必要なく、データベースを動的に移動または転送するための非常に高い柔軟性が得られます。
プロの開発者の 26% 以上がすでに MongoDB を毎日使用しているの には理由があります。これは、最新のアプリケーションおよびソフトウェアを対象とした強力なドキュメントベースのデータベース システムです。
結論
自分に合ったデータベース システムを見つけるのは、いつも少し大変なことです。特定のシステムを 1 週間使って作業した結果、意図したとおりに動作しないことが判明する場合もあります。また、特定のシステムが期待を裏切る理由は他にもたくさんあります。
とはいえ、MySQL は常に安全な選択です。もう何十年も続いています。しかし、これまでの開発経験があり、プロジェクトに対してより大きな計画がある場合、現在市場に投入されている新しいデータベース システムは間違いなく検討する価値があります。
最近データベースを移行した場合は、コメントでお知らせください。物語の別の側面を聞くのはいつも良いことです。最後に、この記事が各システムをより詳しく調べるための十分な基礎をカバーしていることを願っています。