7

したがって、正直なところ、トランザクションの整合性を実際には必要としないアプリがあります (多くの更新があり、どれも重要ではありません)。そのため、私は今のところ、単にエンティティ グループを脇に置くことを計画していました。しかし、私はまだそれを理解したいと思っています (リレーショナル バックグラウンドから来ています)。

私の見方では、私のアプリに対するすべてのクエリは、ユーザーごとに行われます。したがって、ドキュメントの推奨事項に従って、ユーザー エンティティより上位にグループ化する必要はありません。しかし、私は特定のユーザー エンティティを持つことを計画していませんでした。代わりに、エンティティ自体の UserProperty に依存していました。

私の見方では、(ユーザーごとに) トランザクションが必要な場合、データの階層の一部であるすべてのエンティティの親として、このエンティティがどれほど薄いかに関係なく、ある種のルート ユーザー エンティティが必要になります。つまり、基本的にプロパティはありません。

これは正しいです?

冗長で申し訳ありませんが、今夜は実際にスキーマレスが実際に意味することだけを実際にpingしました...

4

2 に答える 2

12

私の見方では、(ユーザーごとに)トランザクションが必要な場合、データの階層の一部であるすべてのエンティティの親として、このエンティティがどれほど薄いかに関係なく、ある種のルートユーザーエンティティが必要になりますつまり、基本的にプロパティはありません。

ルート ユーザー エンティティを作成して、そのエンティティ グループにすべてを投入するだけではありません。トランザクションが必要な理由を考えてください。ユーザー エンティティにプロパティがない場合、トランザクションで何を使用しますか?

あなたのデータについてはわかりませんが、これがブログ システムであり、ユーザー、投稿、およびコメントがあると仮定しましょう。Post モデルは number_of_comments を保持するため、それらをカウントする必要はありません。コメントを作成するときにトランザクションで number_of_comments プロパティを安全に更新できるようにする必要がある場合があります。

この場合、すべてのユーザーの投稿とコメントを 1 つのエンティティ グループに含めると、不要なオーバーヘッドになります。代わりに、コメントが属する投稿と同じエンティティ グループにコメントを投稿できます。投稿をユーザーと同じグループに入れる必要はありません。実際、これは悪い考えです。ユーザーの投稿に投稿されたコメントはすべて、同じエンティティ グループを書くために競合するからです。

今日、ブログでエンティティ グループに関する短い記事を書きました。役に立つかもしれません。

于 2010-01-06T21:26:32.010 に答える
3

あなたは本質的に正しいです。トランザクション機能が必要な場合は、それらをグループ化する必要があります。ただし、データストア内のエンティティという意味で、実際のルート エンティティを作成せずに複数のエンティティをグループ化することはできます。代わりに、一種の仮想ルート エンティティを作成します。この機能の重要な使用例の 1 つは、親オブジェクトを作成する前に子オブジェクトを作成できることです。

最初に親エンティティを作成しなくても、祖先パスを持つエンティティを作成できます。そのためには、種類とキー名を使用して祖先のキーを作成し、それを新しいエンティティの親として使用します。パスのルートが実際のエンティティを表しているかどうかに関係なく、同じルート祖先を持つエンティティはすべて同じエンティティ グループに属します。

その引用は、リンク先の同じドキュメントからのものです。

于 2009-10-30T21:05:25.687 に答える