MySQL vs MongoDB: データベースの比較

MySQL vs MongoDB: データベースの比較

  • オーケストレーション
6分で読めます 更新日 Oct 28, 2020

ポイント: MySQLとMongoDBは対照的なデータベースシステムであり、MySQLはリレーショナル形式の構造化データに焦点を当て、MongoDBは柔軟なNoSQLドキュメントモデルを利用しています。使用に影響を与える主な要因には、データ構造、スケーラビリティ、および特定のアプリケーションニーズが含まれます。

  • MySQLは構造化データとトランザクションに最適であり、MongoDBは非構造化データと水平スケーラビリティに優れています。
  • 選択はプロジェクトの要件とデータ管理戦略に依存します。

MySQLは最も人気のあるデータベースシステムの一つであり、ほとんどの人が最初に学ぶものです。そこで、私はMongoDBとMySQLを比較することにしました。この記事では、私がカバーする内容は

MySQLとは何ですか?

MySQLは、CおよびC++で書かれ、Oracle Corporationによって維持されているクロスプラットフォームのデータベースシステムです。これは、SQL(構造化クエリ言語)に基づくリレーショナルデータベースシステムです。MySQLは1995年に最初にリリースされ、長い道のりを経て、多くのユーザーベースを引き付けています。今では非常に安定した製品です。最新のバージョンである8.0は2020年4月にリリースされました。

MySQLの主な機能

MySQLでは、データを行と列で構成されたテーブルに保存します。つまり、データベースには事前定義されたスキーマがあります。以下はMySQLのさらなる主な機能です:

  • コミュニティ駆動のオープンソースデータベースシステムで、GitHubリポジトリがあります
  • Windows、MacOS、Linuxなどのすべての主要なオペレーティングシステムをサポート
  • 使いやすく、高速で、安全
  • クライアント/サーバーアーキテクチャに従っています
  • マルチバージョンの同時実行制御をサポート
  • マルチスレッドをサポートし、データベースをスケーラブルにします
  • 非常に柔軟で、多くの埋め込みアプリケーションをサポートしています

MongoDBの主な機能

MongoDBは、C++で書かれ、Mongo Inc.によって維持されているクロスプラットフォームのデータベースシステムです。MongoDBは2009年にリリースされ、ソフトウェアアプリケーションの最も現代的なデータ処理要求をターゲットにしています。この製品は、リリースごとに改善され、開発者が最大限に活用できるようになり、毎日より多くのユーザーを引き付けています。

MySQLとは異なり、MongoDBは、コレクションとドキュメントからなるドキュメント指向のNoSQLデータベースシステムです。MongoDBはスキーマレスデータベースシステムであり、同じコレクション内のドキュメントは異なる構造を持つことができます。以下はMongoDBのさらなる主な機能です:

  • オープンソースのデータベースシステムで、GitHubリポジトリがあります
  • Windows、Mac OS、Linuxと互換性があります
  • 正規表現検索を含むアドホッククエリをサポート
  • データの複数のコピーを作成するためにレプリカセットを使用
  • 自動選挙機能により、プライマリデータベースが失敗した場合に自動的に引き継ぐセカンダリデータベースを設定できます
  • シャーディングにより、水平スケーリングが可能で、大規模データベースに対するより良いソリューションとなります

MySQLまたはMongoDBを使用している企業

これらはMySQLまたはMongoDBを使用している知られた企業や組織のいくつかであり、両者の人気を示しています。(多くの企業が両方を使用していると私は思います。)

それぞれの欠点

MySQL MongoDB
Airbnb Sony NASA U.S. Navy Netflix YouTube CERN Twitter Pearson Nokia Adobe Google eBay EA Sports Cisco Verizon PayPal Pearson

MongoDBとMySQLのデータストレージ

MySQLは、テーブルと呼ばれる表形式の構造にデータを保存します。MongoDBにはテーブルの代わりにコレクションがあります。

以下はMySQLテーブルの行で、レコードと呼ばれます:

MySQLテーブルの行

名前 大学 年齢 住所
ジョン UCSC 23 766/A, ABC Street, DEF City

MongoDBでは、各レコードはJSONのようなドキュメントとして保存されます:

MongoDBコレクション内のドキュメント
MongoDBコレクション内のドキュメント

単一のコレクション内の異なるドキュメントは異なる構造を持つことができますが、MySQLテーブル内のすべてのレコードは同じ構造を持つ必要があります。

MongoDBとMySQLの一般的なクエリ

それでは、両方のデータベースでクエリがどのように使用されるかを見てみましょう。各データベースで、いくつかの基本的な操作を行う方法を見てみましょう:

  • データの選択
  • データの挿入
  • データの更新

MongoDBのクエリは、JavaScriptで書かれているため、開発者にとってはるかに親しみやすいことに気付くかもしれません。

MySQLでレコードを選択

    SELECT * FROM employee

MongoDBでドキュメントを選択

    db.employee.find()

MySQLでレコードを挿入

    INSERT INTO employee (emp_id, emp_name, role) VALUES ('emp001', 'Mike', 'Admin')

MongoDBでドキュメントを挿入

    db.employee.insert({
    emp_id: 'emp001',
    name: 'mike',
    role: 'admin'
})

MySQLでレコードを更新

    UPDATE employee SET role = 'manager' WHERE name = 'Mike'

MongoDBでドキュメントを更新

    db.employee.update(
{"name" : "mike"},
{$set: { "role" : "manager"}}
);

MySQLよりMongoDBを使用するタイミング

すでに2つのタイプのデータベースシステムがあることはわかっています:

  • リレーショナルデータベース
  • NoSQLデータベース

これらのデータベースタイプの違いは、設計方法、データの保存方法、およびサポートするデータタイプに根ざしています。最大の利益を得るために、常にプロジェクトの目標と要件に応じて最も適切なデータベースを選択してください。

今、MongoDBをMySQLより便利に使えるシナリオについて話しましょう。

  1. データの高可用性と迅速な回復が主な要件の場合、MongoDBはあなたのシステムにより適しています。
  2. 将来的にデータベースが重くなる場合、MongoDBは内蔵のシャーディング機能を通じて水平スケーリングを促進できます。
  3. データベーススキーマが固定されていない場合、MongoDBを使用することでスキーマ移行コストを削減できます。
  4. システム内のほとんどのサービスがクラウドベースの場合、MongoDBを使用する方が良いです。なぜなら、MongoDBもクラウドベースのサービスであるからです。

MongoDBをMySQLより選ぶもう一つの理由があります。これら2つのデータベースの一般的な区別は、MongoDBがMySQLよりも開発者フレンドリーであるということです。したがって、データベース管理者(DBA)を雇うことができない、または雇いたくない場合は、アプリケーションのためにMongoDBを使用したいかもしれません。

MySQLの一般的な問題は次のとおりです:

  • MySQLは、大規模なデータベースに関して効率的ではありません。
  • MySQLは、データベースをスケールする際にパフォーマンスの問題があります。
  • MySQLデータベースにはスキーマがあるため、SQLインジェクション攻撃に対して脆弱です。
  • MySQLデータベースには事前定義された構造があります。後で構造を変更することはコストがかかります。
  • 行と列を扱うことは、JSONドキュメントを扱うよりも複雑です。

MongoDBの一般的な欠点は次のとおりです:

  • MongoDBはリレーショナルデータベースのような結合をサポートしていません。つまり、データにアクセスする方法に基づいてデータベースのスキーマを頻繁に更新する必要があります。
  • MongoDBは、各値ペアのためのキーを保存するため、データの冗長性が高いメモリ使用率をもたらします。
  • ドキュメントサイズは16MBに制限されています。
  • MongoDBはACIDプロパティを厳密に守っていないため、複雑なトランザクションを扱うことが複雑です。
  • MongoDBにはストアドプロシージャや関数のための規定がないため、データベースレベルでビジネスロジックを適用することが困難です。

要約: MySQL vs MongoDB

データベースのパフォーマンスは、以下によって異なる場合があります:

  • データベースの負荷
  • クエリパターン
  • データ構造

たとえば、大量のトランザクションを処理するシステムを開発する場合、会計システムのように、MySQLを使用する必要があります。ただし、リアルタイム分析システムを構築する場合は、MongoDBの方が適しています。したがって、私は常に、ソフトウェアアプリケーションの種類に基づいてどのデータベース管理システムを使用するかを決定することをお勧めします。

追加リソース

関連する読み物については、これらのリソースを探ってください:

MongoDB ガイド

  1. MongoDB 概要: MongoDBの始め方
  2. UbuntuとMacにMongoDBをインストールする方法
  3. MongoDBでデータベースを作成する
  4. MongoDBシェルの基本コマンド
  5. MongoDB Compass: Mongo GUIの使用
  6. MongoDBの役割ベースのアクセス制御(RBAC)の説明
  7. MongoDBのプロジェクションとプロジェクションオペレーターの説明
  8. MongoDBの集約関数の説明
  9. MongoDBのソート: sort()メソッドと例
  10. MongoDBでPushとPullオペレーターを使用する
  11. MongoDB $unwindの使用方法
  12. 23の一般的なMongoDBクエリオペレーターとその使用方法
  13. MongoDBのGeoLocationクエリの例
  14. MongoDBトランザクションの紹介
  15. MongoDBのインデックス: 主要なインデックスタイプとその管理方法
  16. 知っておくべき主要なMongoDBコマンド
  17. MongoDBのレプリケーション: 完全な紹介
  18. MongoDBクラスターの設定方法
  19. MongoDBのシャーディング: 概念、例、およびチュートリアル
  20. MongoDB Atlas: 管理されたMongoDBの設定と使用
  21. MongoDBをDockerコンテナとして実行する方法
  22. MongoDBメモリ使用量、管理、および要件
  23. MongoDBバックアップのためのmongodumpの使用方法
  24. MongoDBバックアップの復元のためのmongorestoreの例
  25. PyMongoの使用方法
  26. MongoDBとNodeJSのためのMongooseの使用方法
  27. MongoDBチートシート
  28. MongoDB vs Cassandra: NoSQLデータベースの比較
  29. PostgreSQL vs MongoDB: データベースの比較
  30. MySQL vs MongoDB: データベースの比較
  31. MongoDB認定資格: 入門

これらの投稿は私自身のものであり、必ずしもBMCの立場や戦略、意見を代表するものではありません。

オーケストレーションの関連記事

BMCからのさらなる情報に興味がありますか?

ザ・ブリーフは、メインフレームとエンタープライズオーケストレーションに関する月刊メールです:研究、顧客ストーリー、製品ニュース、イベント。

このオファーに登録することで、あなたはBMCのプライバシーポリシーを読み、同意したことを確認します。

ザ・ブリーフに登録しました

ザ・ブリーフは、メインフレームとエンタープライズオーケストレーション—BMC AMIおよびControl-M—に関するアナリストの研究、顧客の展開、両者にわたるイベントを網羅しています。