0

NoSQL 初心者

8 年間の Web 開発で、私は常にリレーショナル データベースを使用してきました。最近、ユーザーが独自のフォト ギャラリーを作成できるシンプルなマルチユーザー Web アプリに MongoDB を使い始めました。

私のドメイン

私のドメインは非常にシンプルで、「ユーザー」>「サイト」>「写真セット」>「写真」があります。

これらの文書をどのように保管するかを決定する方法について、私は苦労してきました。アプリケーションでは、「写真」の小さなコレクションだけが必要な場合もあれば、「セット」だけが必要な場合もありますが、常に「ユーザー」、場合によっては「サイト」に関する情報が必要です。

薄い対深い

現在、私は外部キーの独自の実装を使用して、複数の薄いドキュメントを保存しています。もちろん問題は、1 つのページをレンダリングするために Mongo を複数回呼び出す必要がある場合があることです。

質問

もちろん、これらの非効率性やキャッシュなどを回避する方法があると確信していますが、NoSQLer はこれらの問題にどのようにアプローチしますか。

  • このように文書を関連付けるのは普通ですか?
  • 潜在的に巨大で深いドキュメントを保存する方が良いでしょうか?
  • 私は間違っていますか?実際には、異なるビュー用に複数のドキュメントを保存する必要がありますか?
  • 異なるビュー用に複数のドキュメントを保存している場合、更新をどのように管理しますか?
  • Mongoの「埋め込み」機能を使用するのが答えですか? それがこの問題を最も解決する方法ですか?
4

1 に答える 1

1

NoSQLデータベース、特にMongoDBを使用するときに考えます。

データをどのように操作しますか?

  • 動的クエリ
  • 二次インデックス
  • 原子の更新
  • MapReduce

アクセスパターン(コレクションごと)はどうですか?

  • 読み取り/書き込み比率
  • 更新の種類
  • クエリの種類
  • データのライフサイクル

基本知識:

  • ドキュメントの書き込みはアトミックです
  • 最大ドキュメントサイズは16Megです(GridFSを使用すると、より大きなファイルも保存できます)

気をつけて:

  • 不注意な索引付け
  • 大きくて深くネストされたドキュメント

これがスキーマ設計についての古い話です:スキーマ設計の基本

于 2012-10-29T16:17:41.440 に答える