0

モデル/エンティティを設定するときに、RDBMSの考え方から抜け出そうとしています。私はパフォーマンスに焦点を当てているので、これを正しくやりたいと思っています。モデル化する必要がある3つの異なるものがあります。

イベント-日付に発生し、人を招待し、投稿を関連付けます

人-文字列IDを持ち、名前を持っています

投稿-人はイベントに投稿します。投稿者と投稿者のイベントとの関係を維持する必要があります。

私の最初の考えは次のようなものに行くことでした

class Event
    @PrimaryKey
    Long id;
    List<Key> personList;
    List<Key> postList;
    String name;

class Post
    @PrimaryKey
    Key id;
    String details;
    Key personWhoPosted;

class Person
    @PrimaryKey
    Key id;
    String fbId;
    String name;

アプリのメインクエリは、特定の人物に関連付けられているすべてのイベントを読み込みます。

このアプローチを完全に実装しましたが、データベースがベータテスターからの適度な量のデータでいっぱいになり始めるとすぐに、非常に多くのクエリとGETが発生するため、メインリストをロードするアクションが遅くなります。イベントごとに、投稿に対して別のクエリ/取得のセットを作成する必要がありました。投稿ごとに、関連する人物に対して他のクエリや取得をたくさん行う必要がありました。

私はこのビデオをメインリファレンスとして使用しています: http ://www.youtube.com/watch?v = AgaL6NGpkB8&list = WLB3249928DA0FA4AF&feature = mh_lolz

これらの関係を設定するための最良の方法は何ですか?1つのクエリと一連の並列取得への初期負荷を最小限に抑えるために、すべてをイベ​​ントにフラット化することを検討しています。

4

1 に答える 1

1

完全に更新されたモデルをここに投稿せずに、「正しくする」ために使用した2つの推進要因は、正しいキータイプを使用することと、リストプロパティを使用してインデックスをデータにモデル化することでした。これについて私が見つけた2つの素晴らしい参考資料は次のとおりです。

エンティティキーのタイプの明確化: https ://developers.google.com/appengine/docs/java/datastore/jdo/creatinggettinganddeletingdata#Keys

データを取得するための効率的でパフォーマンスの高い方法としてプロパティを一覧表示します:http: //novyden.blogspot.com/2011/02/efficient-keyword-search-with-relation.html

于 2012-06-24T13:28:10.677 に答える