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

MongoDBを使用したスケーリング:シャーディングインフラストラクチャのセットアップ

MongoDBを使用したスケーリング:シャーディングインフラストラクチャのセットアップ

最近のブログ投稿で、MongoDBをスケーリングする必要がある場合について説明しました。この投稿では、MongoDBをスケーリングする方法に焦点を当てています。

MongoDBバージョン3.0では、デフォルトのストレージエンジンとしてWiredTigerが導入されました。それ以来、MongoDBは、スケーラビリティに関して2つのアプローチを提供できるようになりました。 Mongoは、水平方向だけでなく垂直方向にも拡張できるようになりました。どちらのアプローチも詳細を確認する必要があります。

MongoDBを使用したスケーリング:シャーディングインフラストラクチャのセットアップ

垂直方向のスケーリング

垂直方向にスケーリングすると、CPUの数や種類、RAMやディスク容量などのコンピューティングリソースが増加します。このことを念頭に置いて、WiredTigerを使用して垂直方向にスケーリングする場合、ボトルネックの原因となっているリソースを特定する必要があります(CPU / RAM /ディスクスペースまたはそれらの組み合わせ)。

WiredTigerRAMに関する注意
割り当てられたRAMが1GB未満の場合、WiredTigerは通常デフォルトで256MBまたは使用可能なRAMの50パーセントになります。その結果、より多くのRAMが割り当てられている場合は、WiredTigerキャッシュのサイズを変更する必要があります。

水平方向のスケーリング

スケーリングは、通常はサーバーを追加することにより、ネットワーク全体にコンピューティングリソースを水平方向に分散します。追加された複数のノードにデータを分散するために、MongoDBはシャーディングと呼ばれるデータベースアーキテクチャを利用します。これは、キー範囲を使用して、複数のデータベースインスタンスに分散されるデータを分割します。

シャーディングインフラストラクチャのセットアップ

シャーディング構成のセットアップに関連する物理コンポーネントには、次のアイテムが必要です。

  • モンゴス クエリルーターとして機能します。
  • 構成サーバー シャーディングメタデータを保持します。
  • データノード 実際のデータを保持します。

物理コンポーネントの詳細については、MongoDBの概要をご覧ください。

シャードキーの定義

物理的なシャーディングインフラストラクチャをセットアップした後、シャーディングの論理的な側面に焦点を当てます。シャードキーは、MongoDBがデータを分割するために使用するコレクション内のさまざまなフィールドを表します。便利なことに、Mongoではこれらのキーを定義できます。

シャードキーの実装に関連するフィールドを特定するには:

  1. シャードするコレクションを特定します。 200 MBを超え、データを均等に分散できるコレクションは、シャーディングの適切な候補です。
  2. 適切なシャードキーを生成または考案します。シャードキーを作成するときは、次の推奨事項と質問を考慮してください。
  • アプリケーションがデータベースと対話する方法についての洞察を得る。
  • アプリケーションの読み取りまたは書き込みが多いかどうか、またはアプリケーションのバランスが均等であるかどうかを検討してください。
  • データベースに対する最も重要なアクティビティは何ですか?たとえば、アプリケーションがデータベースに大量のデータを書き込む場合がありますが、最も重要なアクティビティには、100ミリ秒未満でデータを返すクエリが含まれる場合があります。
  • データ増加の予想される週次および月次のパターンは何ですか?
  • クエリが遅いなど、問題や問題のある領域に対処する必要がありますか?
  • アプリケーションは、1日、1週間、1か月、または1年の特定の時間帯に混雑していますか?いつも忙しいですか?

これらの問題を調査した後、より詳細な分析を開始できます。次のブログ投稿では、適切なシャードキーを見つける方法について説明します。


  1. MongoDBのスペース使用量を理解する

    MongoDBを初めて使用する方にとって、MongoDBのスペース使用量は非常に混乱しているように思われるかもしれません。この記事では、MongoDBがスペースを割り当てる方法と、ObjectRocketダッシュボードのスペース使用量情報を解釈して、インスタンスを圧縮する必要がある場合や、インスタンスで使用可能なスペースを増やすためにシャードを追加する必要がある場合を判断する方法について説明します。 まず、単一の5GBシャードで構成される新しいMediumインスタンスから始めましょう。このインスタンスに「ocean」という名前のデータベースのテストデータを入力します。テストデータを追加し、い

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

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