2010-11-25 12 views
3

Je suis nouveau à Cassandra. Je ne comprends pas comment mettre à jour une colonne particulière dans Cassandra liée à un utilisateur particulier.Comment mettre à jour une colonne dans Cassandra

Par exemple, je souhaite mettre à jour l'emplacement d'un utilisateur dans une famille de colonnes utilisateur.

+2

ces informations sont insuffisantes. Qu'avez-vous lu, qu'avez-vous essayé, quelle est votre structure ... etc? – Bozho

+0

Salut Bozho, par exemple je veux mettre à jour l'emplacement de l'utilisateur dans columnfamily utilisateur ... comment puis-je faire cela ... – saggy

+0

@saggy s'il vous plaît modifier votre question, mettez votre commentaire dedans et essayer de fournir toutes les informations nécessaires pour répondre. Dans la forme actuelle, la question n'est pas responsable. –

Répondre

1

Si vous suivez l'API thrift, il n'y a pas de différence entre la mise à jour et l'insertion. C'est le même appel d'API.

1

Il n'y a pas de différence entre insertion/mise à jour dans cassandra (comme dit Pranab). Maintenant, pour vous donner l'exemple d'un utilisateur ... Je suppose que vous avez une ligne par utilisateur, et des colonnes pour des choses telles que le nom, l'adresse e-mail, l'emplacement.

Si vous avez deux inserts

[pseudo-code]

insert('user-123', {'name': 'bob', 'email': '[email protected]'}) 
insert('user-123', {'location': 'nowheresville'} 

[/ pseudo-code]

vous vous retrouverez avec une ligne de l'utilisateur qui ressemble à ceci:

row-key: 'user-123' 
row-value: {'name': 'bob', 'email': '[email protected]', 
      'location': 'nowheresville'} 

Cela devrait répondre à votre question, mais une autre note de lignes/colonnes dans cassandra. Comme il n'y a pas de verrous sur la ligne, vous devriez faire attention à ne pas séparer vos données comme ça. Si deux personnes ont enregistré 'user-123' en même temps, pense, il est possible d'avoir une ligne moitié moins grande que ce que vous vouliez et moitié moins que ce que l'autre inséreuse de données voulait. Pour cette raison, il est généralement préférable de sauvegarder toutes les données de l'utilisateur dans une seule cellule (série).

une autre structure pour ces données pourrait être:

row-key: 'nowheresville' 
row-value: {'bob-123': serialized-bob-data} 
serialized-bob-data: {'name': 'bob', 'email': '[email protected]'}