この記事の内容は、MongoDB から始まるデータベースの知識についての簡単な説明です。必要な方は参考にしていただければ幸いです。
今日のテーマは、MongoDB のデータベースについてです。日常のプロジェクトでは、データベースとして mysql を使用することが多いですが、問題が発生すると、「これを置き換えてみてはどうでしょうか」という話をよく聞きます。 MongoDB を試してみましょう」という響きなので、初心者向けにデータベースについて話しましょう。
最も簡単な言葉で言うと、データベースはデータを保存する場所です。倉庫
統計データから、最も人気のある DBMS は「リレーショナル」であることがわかります。上位 5 位以内 4 位を占め、データは上位 10 位まで拡大され、リレーショナル データベースも 7 位を占めています。
なぜほとんどのプログラマーは MySQL を使用することを好むのでしょうか?
を見てみましょう。
リレーショナル データベースと MySQL の欠点は何ですか?#最初の列に起因する I/O の増加が発生します。データ構造
速度: データ構造の問題により、データの分析にある程度の時間がかかります。また、部分文字列一致クエリのみです。テーブル内のデータが徐々に大きくなると、たとえインデックスがあっても、同様のクエリのマッチングが非常に遅くなります。同時に、テーブル構造のスキーマを変更するには、DDL (データ定義言語) を実行する必要があり、変更中にテーブルがロックされるため、不便です。
MongoDB | ||
---|---|---|
1995- 2018 (mysql 8.0) | 2009 | |
リレーショナル | 非リレーショナル | |
弱い、データベース スキーマを使用前に定義する必要がある | # MySQL と比較してかなりの柔軟性 - 不要なスキーマを定義 | |
これは可能ですが、より困難です。MySQL データベースを垂直方向に拡張でき、より多くのリソースを単一サーバーに追加できます。 | ##MySQL Scalable よりも効率的です。 MongoDB は水平方向にスケーラブルであり、サーバーを追加してデータベースを拡張できます。 | |
Yes | No - 開発者および管理者 会計事務所および銀行や、明確なスキーマを持つ構造化データを必要とするその他の企業。リアルタイム データ、IoT、コンテンツ管理、モバイル アプリ、ソーシャル ネットワーク、ビッグ データ/ネットワーク分析指向のシステムおよびそのようなシステムを備えた、多かれ少なかれ固定要件を持つ企業 (twitter を除く) | に最適です。明確にする必要はない スキーマや構造化データが常に変化するビジネスに最適 |
柔軟性 まず、柔軟性について説明します。たとえば、モールには多くの商品があり、これらの商品はすべて、テレビの画面サイズや画面解像度など、独自の属性を持っています。エアコンには冷却タイプや室外機の騒音などの属性があり、それらを製品テーブルに組み込むのは非常に難しく、プログラマがデータ テーブルを設計するための追加の作業が追加されます。また、MongoDB にはスキーマ (スキーマ、データ モデル) がありません。 ) 非常にシンプルに見えます。 MongoDB の柔軟性は、非構造化データおよび半構造化データにも反映されています。 MongoDB は全文インデックス作成を提供し、地理位置情報のクエリとインデックス作成もサポートします。たとえば、ユーザーは半径 5 キロメートル以内に公衆トイレがある場所を知りたいとします。これは「地理的範囲クエリ」です。次に、近くにある自転車を探します。 Mobike は MongoDB を使用して、このような「距離並べ替えクエリ」を実行します。 スケーラビリティデータは 1 台のマシンに配置できないため、複数のマシンに配置するにはシャーディングが必要です。シャーディングは長年にわたり MongoDB のネイティブ機能であり、他の MongoDB 機能と効率的に統合されています。 たとえば、シャード クラスター内の複雑な集計クエリは、シャード キー (シャード キー) に基づいて実行用に複数のノードに自動的に割り当てられ、コンピューティング タスクは同様にデータ ノードにプッシュ ダウンされます。最後に、すべてのノードの結果を 1 つのノードに集約します。シャーディングでは、ノード間でデータを自動的に移行して、データ量のバランスをとることもできます。同時に、MongoDB のレプリケーション (レプリカ セット) テクノロジーと組み合わせることで、データ損失を効果的に回避できます (テスト中に、mongo がレプリカ セットのすべてのマシン アドレスを自動的に検出することが判明しました。Mongo が停止すると、接続されているサーバーはエラーレポートは生成されません) MongoDB でのシャードクラスター構造分散の使用:
MongoDB の欠点
MongoDB を選択する時期くだらないことを言った後で、最も重要なことは、いつ MongoDB を使用するかを選択するかです
#RDBMS (リレーショナル データベース) 最初に言及するのは、mysql データベースが属するリレーショナル データベースです。リレーショナル データベースの機能:
NoSql、また、これは MongoDB のデータベース タイプであり、2009 年にサンフランシスコで開催された Meetup に由来し、そこで NoSql テクノロジの説明が登場しました:#オープン ソース、分散型、非リレーショナル データベース#非リレーショナル データベースの特徴: #行や列の概念はなく、データの保存には json クラスが使用されます
NewSQL は、オンライン トランザクション処理に NoSQL システムと同じスケーラブルなパフォーマンスを提供しようとする最新のリレーショナル データベース管理システムのクラスです ( OLTP) は、従来のデータベース システムの ACID 保証を維持しながら、読み取り/書き込みワークロードを実現します。 NewSql は、従来の RDBMS と NoSql テクノロジを組み合わせた製品であると言えます。したがって、典型的な NewSql テクノロジは次のようになります。分散型として理解される 分散トランザクションをサポートすることは、リレーショナル データベースの基本的な前提条件です。 NoSQL と NewSQL は、テクノロジー スタックにおいて多くの重複がありますが、リレーショナル モデルをサポートするかどうか、および複雑なトランザクションをどの程度サポートするかには明らかな違いがあります。あまり詳しくないので、ここでは多くを語りません。 ここでは、データベースの種類を簡単に紹介します。結局のところ、テクノロジーは日々進歩しており、たとえば MySQL にも対応しています。 nosql の機能:
MongoDB の欠点を紹介するときに、なぜトランザクションについて言及しないのか疑問に思う人もいるかもしれません。これは、MongoDB 4.0 バージョンにあるためです。 2018 年の夏、MongoDB はトランザクション機能を導入し、トランザクション操作に mongo シェルを使用するなど、マルチドキュメント ACID 機能をサポートしました。
特定のストレス テストデータは後で追加されます |
以上がMongoDB から始まるデータベース知識の簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。