0

私は、ユーザーが自分の興味を入力してもらいたいと考えています。これは、システムに既にある場合とない場合があります。同様の興味を持つユーザーを簡単に見つけられるように、それらをスキーマレス データベース (具体的には GAE ストレージ) に保存します。

私がやろうとしていることの同様の例は、LinkedIn のスキル フォームです。

これが SQL データストアでどのように行われるかはよく知っていますが、スキーマレス データストアの知識を広げようとしています。どんな助けでも大歓迎です。

4

1 に答える 1

0
  1. 種類が「Interest」のエンティティを作成します。データストアがこれらのエンティティの ID を自動的に生成するようにします。これにより、ユーザー エンティティからエンティティを参照するときに必要なスペースが少なくなります。このエンティティは、単一のプロパティ (「interest」や「text」など) を持つことができます。

ユーザーが新しい関心を入力すると、この関心を持つエンティティが既に存在するかどうかを確認します。はいの場合は、このエンティティの ID をユーザーの関心リストに追加します。いいえの場合は、最初にこの関心のために新しいエンティティを保存してから、このエンティティの ID を使用します。

  1. 種類が「ユーザー」のエンティティを作成します。このエンティティには、「興味」というプロパティがあります。このプロパティに関心のある ID のコレクションを保存できます。

たとえば、Java で低レベルの Datastore API を使用すると、次のようになります。

public void saveUser(User user) {
    Entity userEntity = user.getId() == null ? new Entity("User") : new Entity("User", user.getId());
    if (user.getInterests() != null) {
        // user.getInterests() returns a collection, e.g. an ArrayList<Long>
        userEntity.setProperty("interests", user.getInterests());
    }
    datastore.put(userEntity);
}

public User getUser(Entity entity) {
    User user = new User();
    user.setId(entity.getKey().getId());
    user.setInterests(entity.getProperty("interests"));
    return user;
}

プロパティ「interests」はインデックス化されているため、クエリを実行して特定の関心を持つすべてのユーザーを見つけることができます。

于 2014-11-29T22:03:15.453 に答える