私は、ユーザーが自分の興味を入力してもらいたいと考えています。これは、システムに既にある場合とない場合があります。同様の興味を持つユーザーを簡単に見つけられるように、それらをスキーマレス データベース (具体的には GAE ストレージ) に保存します。
私がやろうとしていることの同様の例は、LinkedIn のスキル フォームです。
これが SQL データストアでどのように行われるかはよく知っていますが、スキーマレス データストアの知識を広げようとしています。どんな助けでも大歓迎です。
私は、ユーザーが自分の興味を入力してもらいたいと考えています。これは、システムに既にある場合とない場合があります。同様の興味を持つユーザーを簡単に見つけられるように、それらをスキーマレス データベース (具体的には GAE ストレージ) に保存します。
私がやろうとしていることの同様の例は、LinkedIn のスキル フォームです。
これが SQL データストアでどのように行われるかはよく知っていますが、スキーマレス データストアの知識を広げようとしています。どんな助けでも大歓迎です。
ユーザーが新しい関心を入力すると、この関心を持つエンティティが既に存在するかどうかを確認します。はいの場合は、このエンティティの ID をユーザーの関心リストに追加します。いいえの場合は、最初にこの関心のために新しいエンティティを保存してから、このエンティティの 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」はインデックス化されているため、クエリを実行して特定の関心を持つすべてのユーザーを見つけることができます。