2010-04-01 8 views
4

J'essaie de comprendre, comment Voldermort peut-il être utilisé? Dites, j'ai ce scénario:Utilisation correcte de Voldemort comme paire valeur/clé?

Depuis, Voldemort est une paire clé-valeur. J'ai besoin d'aller chercher une valeur (disons du texte) sur la base de 3 paramètres.

Alors, quelle sera la clé dans ce cas? Je ne peux pas utiliser 3 clés pour 1 valeur correcte, mais cette valeur devrait être recherchée sur la base de ces 3 paramètres.

Ai-je un sens?

Merci

EDIT1

par exemple: un système de blog. Un utilisateur publie un blog: Données de l'utilisateur stockées: Nom, âge et sexe Le contenu du blog (texte) est stocké.

Maintenant, je dois utiliser Voldemort ici, si un utilisateur recherche de l'avant pour tous les messages du blog de Sexe: Masculin

Ensuite, mon code devrait interroger voldemort et retourner tout le « contenu du blog (texte) "qui ont le sexe comme mâle.

Ainsi, selon ma compréhension:

Key = Name, Age and Sex 
Value = Text 

J'utilise Java.

Répondre

5

réponse Edité pour répondre à l'exemple ajouté à la question:

La chose à comprendre au sujet de Voldemort est qu'il est un très simple magasin clé-valeur. Pour autant que je sache, le seulement chose que vous pouvez faire est de stocker une valeur sous une clé, puis récupérez ces valeurs par clé. Donc, pour votre cas d'exemple, si vous voulez vraiment utiliser Voldemort, vous avez quelques options. Par exemple, vous avez dit que vous stockez des données pour les utilisateurs. Par exemple, Donc, vous pourriez avoir quelque chose comme ceci:

Key = user-Chad 
Value = Name:Chad Birch, Age:26, Sex:Male 

Maintenant, si je veux poster un nouveau billet de blog, vous devez également stocker que sous une clé. Donc, vous pourriez faire quelque chose comme ceci:

Key = blog-Chad1 
Value = Here is my very first blog post. 

Maintenant, votre problème est que vous devez trouver un moyen de rechercher tous les messages de blog faites par les utilisateurs avec le sexe: Homme, mais il n'y a aucun moyen d'obtenir ces données directement. À ce stade, vous devez soit:

  1. Sortez tous les utilisateurs, vérifiez s'ils sont des hommes, et s'ils le sont, sortez leurs articles de blog.
  2. Commencez à stocker d'autres éléments dans d'autres paires de valeurs-clés afin que vous puissiez les rechercher.

Pour mettre en œuvre # 2, vous pouvez ajouter une autre paire comme ceci:

Key = search-Sex:Male 
Value = Chad1 Chad2 Steve1 ... 

Alors, quand quelqu'un fait une recherche de Sexe: Homme, vous tirez la valeur pour cela, le diviser, puis allez chercher tous ces articles de blog.

Est-ce que cela a du sens? L'utilisation d'un magasin k-v est assez différente d'une base de données, car vous perdez toutes ces capacités relationnelles.

+0

La solution que vous avez suggérée est une solution de contournement ou une manière correcte d'utiliser Voldemort (paire clé-valeur) – zengr

+0

C'était une solution géniale, alors dites-moi, si j'utilise votre méthode suggérée, je suis en train de tordre le but réel de Voldemort et l'utilise inutilement ou est-ce correct? – zengr

+0

Eh bien, vous ne pouvez pas vraiment "détourner le but" de celui-ci. Tout ce que fait Voldemort est de prendre des valeurs et de les stocker sous des clés. Ça ne se soucie pas de ce qu'ils sont. Ce que vous devez savoir, c'est où trouver un équilibre entre stocker plus de paires de kv pour faire des recherches plus rapidement (ce qui vous oblige à faire un tas de changements chaque fois que quelqu'un publie quelque chose) ou stocker moins mais avoir besoin de faire des recherches répétées pour obtenir l'information tu veux. –

1

Je ne pense pas que vous pouvez faire cela directement avec un magasin de valeurs-clés, mais une façon de contourner le problème consiste à stocker l'utilisateur à plusieurs endroits. Par exemple, vous disposez du mappage de valeurs-clés d'un utilisateur sur une liste de publications de blog. Vous avez également un mappage d'un âge à une liste d'utilisateurs. Aussi un genre à une liste d'utilisateurs. Maintenant, si vous souhaitez effectuer une recherche par âge ou par sexe, vous devez extraire la liste correspondante des utilisateurs, puis extraire tous les messages de leur blog. La raison pour laquelle un magasin de valeurs-clés comme Voldemort peut fonctionner est en partie dû au fait que le stockage et les requêtes sont suffisamment bon marché pour que vous puissiez en faire d'autres. Le problème, cependant, avec le schéma ci-dessus est que si vous utilisez Voldemort de manière distribuée, il vaut mieux avoir beaucoup de clés qui correspondent à de courtes listes de données (donc vous pouvez distribuer en fonction de la clé) Quelque chose comme le mappage du genre à l'utilisateur violerait (seulement quelques clés avec potentiellement de très grandes listes de données pour chacun).