2012-02-13 14 views
1

私は似たような質問の例を見ました。しかし、より具体的な質問をして理解を確認してください。App Engineの多対多対db.Keyのリストプロパティ

私の質問:db.KeyのListPropertyについては

  1. 、私は私が保存したいキーの最大数を予測することができれば、どのように多くの私ははのListPropertyに格納するため超えない必要がありますReferencedPropertyと比較してdb.Key? App Engineのページがこれを言う[一般質問]、それは非常に明確ではなかったために、

    別のより重要なのは、あなたがListPropertyに過度のキー リストを保存しないようにしたいということです

  2. たとえば、レストランのアクティビティフィードに従うことができるユーザーがいます。したがって、ユーザーは好きなリストに好きなだけ多くのレストランを追加できます。ユーザーモデルとレストランモデルがあります。だから、私はどのユーザーも30以上のレストランに従わないだろうと思いますか?理想的なソリューションとしてdb.KeyのListPropertyになりますか?

答えて

2

ここでの考慮事項は、やや曖昧です。ただし、(エンコードされた)エンティティ全体が1 MBを超えてはいけないという点を除いて、ハード制限はありません。 30鍵は全く問題ありません。 100はまだ大丈夫でしょう。 500〜1000で私は心配し始めます。あなたは10,000で、おそらく1 MBの制限を超えます。

もう1つの考慮点は、リストを一度に1つずつ(エンティティを読み書きするたびに)キーを追加するとO(N ** 2)の国になり、更新がクロールを開始するということです。本当にゆっくりと、おそらく100〜1000鍵の間のどこかにあります。

これらの考慮事項はすべてのListPropertiesで同じです - キーは特別ではありません(ちょうどあなたが与えた見積もりは、ListProperty(db.key)に焦点を当てた記事に由来しています)。

+0

私は上記のケースに基づいてdb.referencepropertyを使用することをお勧めしますか? – MrCooL

+1

TBHの場合、ReferencePropertyは誤って自動的にローディングする動作(データストアの往復を余儀なくされる)を引き起こしやすいので、あなたを遅らせる可能性がさらに高くなります。 –

関連する問題