2

私は初めてRavendbを試し、トレーニングアプリのモデルを構築しようとしています。これは私がどのように配置するかわからないクラスの簡単な例です。

User{
string:Name
string:Email
//+ 20 or so more properties

}

CalendarEntry{
DateTime:TimeStamp
decimal:Weight
decimal:Waist
List<Meal> Meals
List<WorkoutSession> WorkoutSessions
//+ more properties

}

メンバーは、体重、ウエスト、毎日のエクササイズセッション、カロリーによる食物摂取などでトレーニングカレンダーを更新します。したがって、カレンダーエントリのリストは毎日増えていきます。

したがって、問題は、ユーザーオブジェクトにカレンダーエントリのリストを含める必要があるのか​​、それともユーザーへの参照IDを持つ独自のエンティティコレクションとして使用するのかということです。

私の主な関心事は、Ravendbの最大ドキュメントサイズ(1つありますか?)です。これは、リストが毎日大きくなり、カレンダーエントリがネストされたコレクションである場合、ユーザードキュメントが1年ほどで重くなりすぎる可能性があるためです。

アドバイスをいただければ幸いです

//キム

4

1 に答える 1

2

Ravenのドキュメントサイズの制限については知りませんが、2番目のアプローチの方が良いように聞こえます...カレンダーエントリオブジェクトは、それ自体でかなりのサイズに見えるため、コレクションの場合、パフォーマンスがさらに低下する可能性があります。カレンダーエントリの数は、ユーザーごとに大きくなります。

しかし、あなたが本当に尋ねる必要がある質問は、データがどのように消費されるかということです。ユーザーに関係なく、すべてのカレンダーエントリについてデータベースにクエリを実行する可能性がありますか?または、おそらく特定の期間に?答えが「はい」の場合は、カレンダーエントリを独自のコレクションに保存して、それらのインデックスを最適化できるようにすることをお勧めします。

ドキュメント間の「外部キー」の管理は、レイヴンではかなり簡単にできるので、これを実行するのはそれほど難しくありません。このページでは、ドキュメントの関係を処理する方法について詳しく説明します:http: //ravendb.net/docs/client-api/querying/handling-document-relationships

于 2012-10-23T12:55:35.583 に答える