私自身、NoSQLデータベースの初心者です。ですから、私は潜在的な反対票を犠牲にしてこれに答えていますが、それは私にとって素晴らしい学習体験になるでしょう。
- MongoDBがそのようなデータを保持するのに適しているかどうかを判断するには、最終的に時間範囲に対してクエリが実行されます(たとえば、指定された時間の間に特定のカメラのすべての画像を取得します)。私の場合のドキュメントベースのスキーマ設計に関する提案はありますか?
MongoDBはドキュメント指向のデータベースであり、内のクエリに優れています。 集合体(あなたはそれをドキュメントと呼びます)。すでに各カメラのデータを独自のテーブルに保存しているため、MongoDBには個別のコレクションがあります。 カメラごとに作成されます。 方法は次のとおりです 日付範囲のクエリを実行します。
- サーバー(CPU、RAM、ディスク)の仕様はどうあるべきですか?何か提案はありますか?
すべてのNoSQLデータベースは、スケールアウト用に構築されています コモディティハードウェア。しかし、あなたが質問したところで、あなたはスケールアップによってパフォーマンスを改善することを考えているかもしれません。 。妥当なマシンから始めることができ、負荷が増加するにつれて、サーバーを追加し続けることができます(スケールアウト)。ハイエンドサーバーを計画して購入する必要はありません。
- このシナリオのシャーディング/レプリケーションを検討する必要がありますか(同期レプリカセットへの書き込みのパフォーマンスを考慮しながら)?
MongoDB データベース全体をロックします 単一の書き込みの場合(ただし、他の操作の場合は降伏します)、書き込みよりも読み取りの数が多いシステムを対象としています。したがって、これはシステムの状態によって異なります。シャーディングには複数の方法があり、ドメイン固有である必要があります。一般的な答えは不可能です。ただし、地理やブランチなどによるシャーディングなど、いくつかの例を示すことができます。
CAP定理のわかりやすい英語の紹介 もお読みください。
シャーディングに関するコメントへの回答で更新
彼らの
だから最後のポイントに基づいてはい。自動シャーディング機能は、書き込みをスケーリングするために構築されています。その場合、シャードごとに書き込みロックがあります 、データベースごとではありません 。しかし、私の答えは理論的な答えです。 10gen.comグループから相談することをお勧めします。