1

アプリケーション データ モデルを設計していますが、親インデックスを使用するか単純なインデックスを使用するかについて疑問があります。

Site{
  @Id Long id;
}

Booking{
  @Id Long id;
  @Index/Parent Key<Site> site;
  @Index Date date;
}

私の 2 つのエンティティはBookingsSitesです。関係は、Siteに多くのBookingsがあるということです。getBookingBySiteAndDate (Key site,Date date) とgetBookingsByDate (Date date)の 2 つの方法で予約を取得したい

すべての予約を取得するには予約のサイトが必要なので、Parentを使用する場合、2 番目のクエリは効率的ではありません。このサイトは削除された可能性があります。

(日付、サイト) にカスタム インデックスが必要であり、コストがかかるため、Indexを使用する場合、最初のクエリは効率的ではありません。予約にはエンティティ グループがなく、1w/s の制限があるため、作成に一貫性がありません。

あなたのアドバイスは何ですか?

4

2 に答える 2

1

親は使いません。親について私が見た唯一の価値は、トランザクション グループを作成する必要があるかどうかです。あなたの例では、サイトの ID を予約テーブルに保存し、getBookingBySiteAndDate クエリのインデックスを作成します。とても速いです。インデックスは自動的に作成されます。余分な作業は必要ありません。

于 2012-06-14T15:13:16.357 に答える
0

私は Objectify メーリング リストを再確認しましたが、getBookingsByDate を親と共に使用し、サイト ID なしで使用することに制限はありません。

彼らが私に勧めた解決策は、 @Parent を使用することです。これは、より高速で、Site-Date に二重のインデックスが必要ないためです。

于 2012-06-28T15:38:42.873 に答える