ホームページ  >  記事  >  データベース  >  MongoDB から始まるデータベース知識の簡単な説明

MongoDB から始まるデータベース知識の簡単な説明

不言
不言転載
2019-01-07 10:14:053601ブラウズ

この記事の内容は、MongoDB から始まるデータベースの知識についての簡単な説明です。必要な方は参考にしていただければ幸いです。

今日のテーマは、MongoDB のデータベースについてです。日常のプロジェクトでは、データベースとして mysql を使用することが多いですが、問題が発生すると、「これを置き換えてみてはどうでしょうか」という話をよく聞きます。 MongoDB を試してみましょう」という響きなので、初心者向けにデータベースについて話しましょう。

データベースとは

最も簡単な言葉で言うと、データベースはデータを保存する場所です。倉庫

データベース (データベース) の基本概念

  • #データベースは、特定のデータ構造に従ってデータを編成、保存、管理する倉庫です

  • ##私たちが作成したプログラムはすべてメモリ内で実行されます。プログラムが終了したり、コンピューターが壊れたりすると、プログラム内のすべてのデータが失われるため、データのセキュリティを確保するために、一部のプログラム データをキーボードに保持する必要があります。
  • 大容量データの永続化にはデータベースが一般的です。1. ファイル 2. データベース
  • データの保存にデータベースを使用する理由

    データベースは構造化されています
  • データベースは、データ処理 (追加、削除、変更、クエリ) を迅速かつ便利にするさまざまなインターフェイスを提供できます
  • さまざまな言語 (PHP、jsp、.net など) が完全なインターフェイスを提供
  • データベースの人気 (出典: https:/) /db-engines.com /en/ranking)

MongoDB から始まるデータベース知識の簡単な説明統計データから、最も人気のある DBMS は「リレーショナル」であることがわかります。上位 5 位以内 4 位を占め、データは上位 10 位まで拡大され、リレーショナル データベースも 7 位を占めています。

なぜほとんどのプログラマーは MySQL を使用することを好むのでしょうか?

    オープンソース、企業のみがライセンスを購入する必要があります
  • 広く使用されています: Linux、Windows などのほとんどのプラットフォームで広く使用できます、Ubuntu、Mac OS
  • ##PHP に適しており (PHP は世界最高です)、JAVA、PERL、C、C などの他のプログラミング言語でも使用できます。

  • 小規模および大規模アプリケーションに適しています

  • リレーショナル データベースが非常に優れているのに、なぜ MongoDB がトップ 5 に含まれているのでしょうか。

    を見てみましょう。

    リレーショナル データベースと MySQL の欠点は何ですか?
  • スケーラビリティ: 特定のレコードにさらにデータを追加するには、複数のテーブル、列、行へのスケーリングが必要になる場合があります。また、データは行ごとに保存されるため、たとえそれが 1 行ごとに行われたとしても列の 1 つである操作では、リレーショナル データベースもデータの行全体をストレージ デバイスからメモリに読み取るため、
  • #最初の列に起因する I/O の増加が発生します。データ構造

速度: データ構造の問題により、データの分析にある程度の時間がかかります。また、部分文字列一致クエリのみです。テーブル内のデータが徐々に大きくなると、たとえインデックスがあっても、同様のクエリのマッチングが非常に遅くなります。同時に、テーブル構造のスキーマを変更するには、DDL (データ定義言語) を実行する必要があり、変更中にテーブルがロックされるため、不便です。

    MongoDB の魅力は何ですか?
  • 柔軟性: ドキュメント構造は、開発者がそれぞれのプログラミング言語でコーディングする方法とより一貫性があり、明確でキーと値のペアで構造化されているため、いつでも簡単に追加できます。時間とデータ/ドキュメントの編集
  • フィールド、式、範囲クエリ、JavaScript 関数などのさまざまなクエリをサポートします。
  • 所要時間の短縮 : MySQL データベース内の複数のテーブルに格納されている関連データは、MongoDB 内の同じドキュメントに格納されているため、
  • #厳密なスキーマはありません。ドキュメントは、ドキュメント構造を定義する前に作成できます

MongoDB の機能により、大量のデータの処理に適しています
  • まず 2 つを比較してから、詳しく説明します
  • #MySQLMongoDB#バージョン1995- 2018 (mysql 8.0)2009 構造リレーショナル非リレーショナル柔軟性弱い、データベース スキーマを使用前に定義する必要がある# MySQL と比較してかなりの柔軟性 - 不要なスキーマを定義 スケーラビリティこれは可能ですが、より困難です。MySQL データベースを垂直方向に拡張でき、より多くのリソースを単一サーバーに追加できます。DB 管理者が必要です

    ##MySQL Scalable よりも効率的です。 MongoDB は水平方向にスケーラブルであり、サーバーを追加してデータベースを拡張できます。
    Yes No - 開発者および管理者 会計事務所および銀行や、明確なスキーマを持つ構造化データを必要とするその他の企業。リアルタイム データ、IoT、コンテンツ管理、モバイル アプリ、ソーシャル ネットワーク、ビッグ データ/ネットワーク分析指向のシステムおよびそのようなシステムを備えた、多かれ少なかれ固定要件を持つ企業 (twitter を除く) に最適です。明確にする必要はない スキーマや構造化データが常に変化するビジネスに最適

    柔軟性

    まず、柔軟性について説明します。たとえば、モールには多くの商品があり、これらの商品はすべて、テレビの画面サイズや画面解像度など、独自の属性を持っています。エアコンには冷却タイプや室外機の騒音などの属性があり、それらを製品テーブルに組み込むのは非常に難しく、プログラマがデータ テーブルを設計するための追加の作業が追加されます。また、MongoDB にはスキーマ (スキーマ、データ モデル) がありません。 ) 非常にシンプルに見えます。

    MongoDB の柔軟性は、非構造化データおよび半構造化データにも反映されています。 MongoDB は全文インデックス作成を提供し、地理位置情報のクエリとインデックス作成もサポートします。たとえば、ユーザーは半径 5 キロメートル以内に公衆トイレがある場所を知りたいとします。これは「地理的範囲クエリ」です。次に、近くにある自転車を探します。 Mobike は MongoDB を使用して、このような「距離並べ替えクエリ」を実行します。

    スケーラビリティ

    データは 1 台のマシンに配置できないため、複数のマシンに配置するにはシャーディングが必要です。シャーディングは長年にわたり MongoDB のネイティブ機能であり、他の MongoDB 機能と効率的に統合されています。

    たとえば、シャード クラスター内の複雑な集計クエリは、シャード キー (シャード キー) に基づいて実行用に複数のノードに自動的に割り当てられ、コンピューティング タスクは同様にデータ ノードにプッシュ ダウンされます。最後に、すべてのノードの結果を 1 つのノードに集約します。シャーディングでは、ノード間でデータを自動的に移行して、データ量のバランスをとることもできます。同時に、MongoDB のレプリケーション (レプリカ セット) テクノロジーと組み合わせることで、データ損失を効果的に回避できます (テスト中に、mongo がレプリカ セットのすべてのマシン アドレスを自動的に検出することが判明しました。Mongo が停止すると、接続されているサーバーはエラーレポートは生成されません)

    MongoDB でのシャードクラスター構造分散の使用:

    MongoDB から始まるデータベース知識の簡単な説明

    MongoDB の欠点

    • ご存知のとおり、MongoDB は多くのサーバー メモリを消費します

    • MongoDB は安全性が若干劣ります

    • 自由すぎるため、フレキシブル ファイル ストレージ形式に起因するデータ エラー (...)

    • 単一ドキュメントのサイズは 16 に制限されています

    • #配列の場合タイプ データ操作が十分に豊富ではない

    MongoDB を選択する時期

    くだらないことを言った後で、最も重要なことは、いつ MongoDB を使用するかを選択するかです

    • ログシステムでは、システムの運用中に生成されるログ情報は一般に種類が多く、範囲も広く、内容も比較的乱雑です。これらの乱雑なログは、MongoDB を通じて収集および管理できます。

    • MongoDB は、地理的位置、2 次元空間インデックスをサポートし、経度と緯度を保存できるため、2 つのポイントを迅速に収集できます。距離計算やその他の位置情報

    • データ規模が急速に増大中(提供される注目情報など)

    • 必要高可用性環境を確保するため

    • #ファイル ストレージ要件

    • ゲーム開発、ユーザー情報、機器、ポイントなどのその他のシナリオ。さらに、物流システム、社会システム、さらにはモノのインターネットシステム

    データベースの種類

    ここまで述べてきましたが、なぜmysql と MongoDB を一緒に比較して選ぶのは、データベースの開発から現在に至るまで、大きく 3 つのタイプに分かれているためです。

    #RDBMS (リレーショナル データベース)

    最初に言及するのは、mysql データベースが属するリレーショナル データベースです。

    リレーショナル データベースの機能:

      たとえば、MySql、SQL サーバー Oracle など。
    • 機能は次のように表現されます。テーブルの関連付けを確立する
    • 基本的に SQL 言語を使用してデータベースを管理する
    • Nosql (非リレーショナル データベース)

    NoSql、また、これは MongoDB のデータベース タイプであり、2009 年にサンフランシスコで開催された Meetup に由来し、そこで NoSql テクノロジの説明が登場しました:

    #オープン ソース、分散型、非リレーショナル データベース

    #非リレーショナル データベースの特徴:

    #行や列の概念はなく、データの保存には json クラスが使用されます

    • コレクションは「表」に相当し、ドキュメントは「行」に相当します

    • 標準化と非標準化の摩擦。

    • 標準化はイノベーションを制限し、非標準の単語は統一できない

    • NoSql は、最初に提案されたとき、非リレーショナルとして解釈されました。 No-SQL も No-SQL の意味ですが、近年の急速な発展により、SQL は徐々に幅広い分野に適用されるようになり、SQL は RDBMS の独占的な機能ではなくなり、NoSql テクノロジーにも SQL 機能が導入されました。 Not-Only-SQL の概念が登場

      ほとんどの NoSql テクノロジは、ACID セマンティクスと複雑な関連クエリのサポートを弱め、よりシンプルまたはより専門的なデータ モデルを採用し、読み取りパスと書き込みパスを最適化します。したがって、より高い読み取りおよび書き込みパフォーマンスと交換できます
    NewSql

    wiki の定義によると

    NewSQL は、オンライン トランザクション処理に NoSQL システムと同じスケーラブルなパフォーマンスを提供しようとする最新のリレーショナル データベース管理システムのクラスです ( OLTP) は、従来のデータベース システムの ACID 保証を維持しながら、読み取り/書き込みワークロードを実現します。

    NewSql は、従来の RDBMS と NoSql テクノロジを組み合わせた製品であると言えます。したがって、典型的な NewSql テクノロジは次のようになります。分散型として理解される 分散トランザクションをサポートすることは、リレーショナル データベースの基本的な前提条件です。 NoSQL と NewSQL は、テクノロジー スタックにおいて多くの重複がありますが、リレーショナル モデルをサポートするかどうか、および複雑なトランザクションをどの程度サポートするかには明らかな違いがあります。あまり詳しくないので、ここでは多くを語りません。

    ここでは、データベースの種類を簡単に紹介します。結局のところ、テクノロジーは日々進歩しており、たとえば MySQL にも対応しています。 nosql の機能:

    MongoDB から始まるデータベース知識の簡単な説明

    MongoDB の欠点を紹介するときに、なぜトランザクションについて言及しないのか疑問に思う人もいるかもしれません。これは、MongoDB 4.0 バージョンにあるためです。 2018 年の夏、MongoDB はトランザクション機能を導入し、トランザクション操作に mongo シェルを使用するなど、マルチドキュメント ACID 機能をサポートしました。

    MongoDB から始まるデータベース知識の簡単な説明

    特定のストレス テストデータは後で追加されます

以上がMongoDB から始まるデータベース知識の簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。