sql >> データベース >  >> NoSQL >> MongoDB

MSSQLServerの代わりにMongoDBを使用することの長所と短所

    私自身、NoSQLデータベースの初心者です。ですから、私は潜在的な反対票を犠牲にしてこれに答えていますが、それは私にとって素晴らしい学習体験になるでしょう。

    • MongoDBがそのようなデータを保持するのに適しているかどうかを判断するには、最終的に時間範囲に対してクエリが実行されます(たとえば、指定された時間の間に特定のカメラのすべての画像を取得します)。私の場合のドキュメントベースのスキーマ設計に関する提案はありますか?

    MongoDBはドキュメント指向のデータベースであり、のクエリに優れています。 集合体(あなたはそれをドキュメントと呼びます)。すでに各カメラのデータを独自のテーブルに保存しているため、MongoDBには個別のコレクションがあります。 カメラごとに作成されます。 方法は次のとおりです 日付範囲のクエリを実行します。

    • サーバー(CPU、RAM、ディスク)の仕様はどうあるべきですか?何か提案はありますか?

    すべてのNoSQLデータベースは、スケールアウト用に構築されています コモディティハードウェア。しかし、あなたが質問したところで、あなたはスケールアップによってパフォーマンスを改善することを考えているかもしれません。 。妥当なマシンから始めることができ、負荷が増加するにつれて、サーバーを追加し続けることができます(スケールアウト)。ハイエンドサーバーを計画して購入する必要はありません。

    • このシナリオのシャーディング/レプリケーションを検討する必要がありますか(同期レプリカセットへの書き込みのパフォーマンスを考慮しながら)?

    MongoDB データベース全体をロックします 単一の書き込みの場合(ただし、他の操作の場合は降伏します)、書き込みよりも読み取りの数が多いシステムを対象としています。したがって、これはシステムの状態によって異なります。シャーディングには複数の方法があり、ドメイン固有である必要があります。一般的な答えは不可能です。ただし、地理やブランチなどによるシャーディングなど、いくつかの例を示すことができます。

    CAP定理のわかりやすい英語の紹介 もお読みください。

    シャーディングに関するコメントへの回答で更新

    彼らのドキュメント によると 、次の場合は、シャードクラスターのデプロイを検討する必要があります。

    だから最後のポイントに基づいてはい。自動シャーディング機能は、書き込みをスケーリングするために構築されています。その場合、シャードごとに書き込みロックがあります 、データベースごとではありません 。しかし、私の答えは理論的な答えです。 10gen.comグループから相談することをお勧めします。



    1. AmazonEC2でのMongodbへのアクセスに関する問題

    2. mongodbドット表記の変数

    3. ノード-マングース3.6-入力されたフィールドでクエリを並べ替える

    4. MongoDBクエリ結果の順序(数値範囲クエリ)