2011-01-20 6 views
0

J'ai peu de problèmes avec les autorisations dans ma future application sociale.Requête BigTable avec l'opérateur IN pour obtenir toutes les clés du groupe d'utilisateurs

La plate-forme ne sera pas del (Google BigTable).

Dans mon application, chaque utilisateur a des groupes (par exemple: amis, collaborateurs, famille ...). Dans le groupe a quelques amis (comme dans Facebook). Et peut publier du contenu (nouvelles, texte court, ...) uniquement pour ce groupe. Si j'ai un utilisateur dans mon groupe, c'est mon ami. Comme dans Facebook, mais plus de groupes.

Mon idée est, que chaque utilisateur peut voir (sur lui-même "feed") tout le dernier contenu de tous les amis dans une page (comme Facebook Nouvelles Top). Mais j'ai des problèmes avec la création de requête simple.

Par exemple:

SELECT * FROM News WHERE group_key IN [list_of_groups_where_i_am] 

Cela fonctionne bien, mais il y a des sous-requêtes et la limite de la liste est de 30 points. L'autre moyen est la mise en cache forte du contenu.

Quelqu'un a-t-il une idée? Ou n'importe quel matériel d'étude, exemple ...

Répondre

1

Avec une telle exigence vous pouvez optimiser pour lire ou écrire, mais habituellement pas les deux. Vous avez la version optimisée en écriture - il suffit d'écrire un enregistrement avec la bonne clé de groupe mais avoir une requête complexe pour obtenir du contenu pour tous les groupes.

La version optimisée en lecture consisterait à écrire le contenu (ou seulement son identifiant) dans un flux pour chaque utilisateur, ce qui rend la requête de lecture très simple.

Questions connexes