データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

MongoDBを使用した大規模なスケーリングの概要

元々は2018年6月4日にObjectRocket.com/blogで公開されました

スケーリングを定義できます 魚からうろこを取り除くように。ただし、データベースの場合、スケーリング ストレージ、ディスク、RAM、CPU、コンピューティングサイクル、ネットワーク、またはその他のリソースに関する追加のニーズを満たすために拡張する機能を指します。

MongoDBを使用した大規模なスケーリングの概要

スケーリングする時期をどのようにして知ることができますか?

今日では、アプリがウイルスに感染し始めて使用が開始されたときなど、データの急速な増加とアプリケーションの急速な採用率が見られるのが一般的です。これが発生すると、初期環境が急速に大きくなります。この増加は、物理データストレージのニーズ、パフォーマンスの低下、およびより多くのリソースを必要とする劣化が原因で発生する可能性があります。 CPU、RAM、ネットワーキング、またはこれらすべての領域の組み合わせを考えてみてください。成長を積極的に計画することも、小さなパフォーマンスの低下が見られ始めたときに拡張することを選択することもできます。

プロアクティブにスケーリング

積極的にスケーリングを計画する場合、少なくとも2つの一般的なパターンが発生する可能性があります。

  • マーケティングの大きな推進力があり、顧客数やデータ量が大幅に増加します。
  • アプリケーションやビジネスは周期的である傾向があり(クリスマスの購入、新年の抱負など)、大量のデータのキャプチャと保持につながるアクティビティの増加が見られます。

投稿を読む:MongoDBインスタンスをスケーリングする適切なタイミングを判断する方法。

リアクティブにスケーリング

ボトルネックにぶつかり、成長を続けると予想される場合は、スケーリングについて考える必要があります。

トラブルの兆候には、次のような懸念事項が含まれます。

  • エンドユーザーのクエリ時間の増加
  • ログイン時間の増加
  • リクエストとサーバーがフリーズする
  • 開発者からのデータベースの苦情
  • サーバーの応答時間が遅い
  • ホストの負荷の増加
  • メモリ不足エラー
  • 意図しない選挙
  • ログのエラー

これらの兆候が見え始めたら、需要に対応し、顧客を失っていないことを確認するためにスケーリングを開始します。

垂直にスケーリングできます (上)または水平に (アウト)

MongoDBを使用した大規模なスケーリングの概要 垂直方向のスケーリング

これはことわざのビッグアイアンです 方法:大量のリソース(CPUコア、高速CPU速度、大量のRAM、ストレージ)を備えた1台の大きなマシン垂直スケーリングの主な利点には、アーキテクチャの複雑さが軽減され、維持するホストが少なくなることが含まれます。これは、メンテナンスを担当する人がいない場合に役立ちます。

現在、垂直方向にスケーリングするいくつかの方法が利用可能です。これらのオプションには、より優れたコモディティハードウェア、より安価なディスクとストレージ、より優れたストレージオプション、より安価なメモリ、より優れたソフトウェア、ネットワークが含まれるため、フェイルオーバーと割り込みをより適切に処理できます。

スケールアップは多くのアプリケーションやニーズに理想的であり、レプリカセットをお勧めします 次のセクションで説明します。より大きなレプリカセットを使用する場合に留意すべきことの1つは、垂直方向にスケーリングするための隠れたコストが発生する可能性があることです。環境が急速に成長し続ける場合は、オプションではなくなった時点に到達するまで、常に大型のマシンに移動するか、追加のリソースを用意する必要があります。また、単一の大規模なホストでは、水平方向にスケーリングされた環境と比較して、アップグレードサイクルの効率が低下することも考慮する必要があります。成長が続く中、スケールアップを継続するか、水平方向にスケールすることでメリットが得られるかを判断する必要があります。

水平方向のスケーリング

シャーディングは水平スケーリングです。シャーディングは複数のノードにデータを保存し、ホスト間で負荷とプロセスを分散します。レプリケーションは、必要に応じてノードを追加する機能を備えたプライマリレプリカモデルを使用して処理されます。

ロードバランサーは、ノード上のディスク全体にデータのチャンクを分散します。

これにより、1台のマシンに書き込みまたは読み取りを行う代わりに、読み取りおよび書き込み操作をマシンのグループ全体に分散させることにより、読み取りおよび書き込み容量が増加します。幸い、過去数回のリリースでバランサー機能が大幅に改善されました。水平方向のスケーリングでは、MongoDB®の組み込みのシャーディング機能を利用し、より安価なコモディティハードウェアを使用することでメリットが得られます。

水平方向に拡張する場合は、物理ホストまたは仮想ホストを使用してリソースを追加します。

  • 物理的–多くの低コストのコモディティハードウェア
  • 仮想–VMまたはクラウドを使用してCPUコアまたはノードを追加します
  • ネットワーキング–ロードバランサーの追加、mongoS®プロセスの追加など

改善された負荷分散テクノロジー(ハードウェアとソフトウェア)を使用して、ロードバランサーを使用してトラフィックを必要な場所にシャトルします。

MongoDBでレプリカセットを使用してスケーリングを実装するにはどうすればよいですか?

MongoDBは、1つのプライマリを持つ単一の大きなレプリカセットを使用して、水平方向にスケールアウトできます。 および2つのセカンダリ アップ状態またはダウン状態のハートビート通信があります。レプリケーションは、運用ロジスティクスを通じてセカンダリで行われます。

水平スケーリング:レプリカセットまたはシャーディング?

シャーディングとのトレードオフは、全体的な複雑さの増加です。ただし、シャーディングは、メンテナンスを簡素化することによってもメリットがあります。ローリングアップグレードが可能になり、シャードとノード間で同時にインデックスビルドなどの特定の操作を実行できます。以下は、より大きなレプリカセットとシャードクラスターの比較です。

レプリカセット シャーディング
シンプル 必要な専門知識
幅広いデータセットにまたがる大量の読み取り(ギャザーを分散させたくない) 大量の書き込みと更新(結果を得るために正確なシャードに直接移動したい)
大量のデータ、低いアクティビティ率 大量のデータ、大量のアクティビティ
もっと通常が必要 ディスクなどのリソース ディスク、RAM、CPU、書き込みスコープなど、すべてのリソースがさらに必要

ObjectRocketからマネージドMongoDBを選択する理由

RackspaceObjectRocketは専門知識を意味します 。私たちは、最初から大規模にMongoDBを管理してきました。より大きなレプリカセットのサポートを提供し、より大きなシャーディングされたMongoDBclustersのサポートを提供した最初のプロバイダーの1つでした。当社のエンジニアとDBAは経験があり、非常に複雑な障害、つまり他のプロバイダーでは一般的に前例のない障害を克服してきました。

マーケティングテクノロジー分野(モバイル分析、メディア、電子メールキャンペーン、モバイル広告詐欺検出、デジタルメディア)の最大の顧客の一部は、他の誰も見たり修正したりする方法を知らないバグに遭遇することがよくあります。さまざまな顧客からの数十億のメッセージとドキュメント、数千の大小のキャンペーン-私たちのプラットフォームはそれらすべてをホストします。

私たちが提供するサービスは次のとおりです。

  • インフラストラクチャ
  • ストレージ
  • IOPS
  • ネットワーク
  • 最高のハンズオンサポート、ハンズダウン。正しい応答24×7。

プランと価格を表示します。

セカンダリをプロビジョニングせずに、完全に堅牢なセットアップを提供するクラウドソリューションを提供することを目指しています 仮想ボリューム上。したがって、選挙が行われ、プライマリが発生した場合に発生する可能性のあるパフォーマンスの問題を回避します。 セカンダリ用にのみプロビジョニングされた堅牢性の低いホストになります。スケーリングは以上です。 MongoDBインスタンスをスケーリングするタイミング、シャーディングのヒント、最適なシャードキーの選択などについて学ぶことを忘れないでください。

RackspaceDBAサービスの詳細をご覧ください。

コメントや質問をするには、[フィードバック]タブを使用します。 セールスチャットをクリックすることもできます 今すぐチャットして会話を始めましょう。


  1. MongoDBインスタンスをスケーリングするタイミング

    以前のブログ投稿で、MongoDBを使用した大規模なスケーリングの概要を説明しました。スケーリングは本質的に反応的である傾向があり、アプリケーションのパフォーマンスの低下や、さらに悪いことに、アプリケーション全体のダウンタイムなどの問題を引き起こします。これらの問題は、最終的にはビジネスに影響を与えるネガティブなカスタマーエクスペリエンスにつながります。では、収益に影響を与えないように、Mongoデータベースをスケーリングするのに適切な時期をどのようにして知ることができますか? アプリに適したしきい値を見つける アプリケーションの使用量の増加とトラフィックの急増をアプリケーションが確実に乗り

  2. RoboMongoとObjectRocketを使用したMongoDBの視覚化

    MongoDB Inc.は、MongoDBのリリース2.6で多くの優れた新しいエンタープライズ機能を導入しましたが、データベースを管理するためのデスクトップアプリケーションがまだありません。クロスプラットフォームでオープンソースのMongoDB管理ツールであるRobomongoの紹介。次の手順で、RoboMongoをObjectRocketMongoDBインスタンスと統合するのがいかに簡単であるかがわかります。 始めましょう!まず、ObjectRocketコントロールパネルからいくつかの詳細を書き留める必要があります: データベース接続文字列(SSL接続と非SSL接続ではポートが異なること