2012-06-01 4 views
3

Supposons que nous ayons CF avec les informations utilisateur:conception de schémas Apache Cassandra avec JSON

{ 
    123 => { first_name => Nick, last_name => Schiff, age => 23, city = NY } 
} 

Supposons aussi que nous ne cherchons pas par les noms de colonnes, nous utilisons les informations juste pour afficher les données. Les noms de colonnes ne sont pas non plus mis à jour individuellement. (Par exemple le changement de prenom)

Peut être dans ce cas une seule JSON est encodée meilleure idée:

{ 
    123 => { data = [json], city = NY } 
} 

et en laissant « ville », parce que laisser dire que nous allons le mettre à jour souvent.

Les avantages de JSON sont:

  1. dénormalisation facile - vous suffit de copier une colonne - par exemple "Les données".
  2. vous n'avez pas besoin de connaître les noms des colonnes, vous n'avez donc pas besoin de découper() avant de les supprimer.
  3. émule colonne super sans clés composites - c'est un peu comme (1)

Les contre je peux voir:

  1. aucune validation de JSON valeurs
  2. cassandra ne connaissent pas les valeurs stockées .

Est-ce que quelqu'un travaille comme ça? Y a-t-il quelque chose qui me manque ici?

Répondre

2

Cela peut être une stratégie raisonnable en fonction de votre modèle d'utilisation. Le plus grand inconvénient de stocker des données dans un format blob est la façon dont vous gérez les mises à jour simultanées. Supposons que vous ayez 2 processus, l'un essayant de mettre à jour le champ first_name, l'autre essayant de mettre à jour le champ age. Chaque processus devra lire la ligne pour obtenir le blob actuel puis mettre à jour le champ qui doit changer et l'écrire à Cassandra. Lorsque toutes vos données sont stockées dans un objet blob, le second auteur annulera essentiellement les changements du premier.

Si elles étaient stockées dans des colonnes séparées, il n'y aurait pas de conflit de mise à jour. Mais peut-être que vos enregistrements sont immuables, auquel cas ce problème de mise à jour simultanée ne poserait aucun problème.

+0

Oui, correct, je ne l'ai pas mentionné, mais les données JSON (blob) ne sont pas modifiées, du moins pas indépendamment. Vous pouvez soit changer tout ou rien (personne n'a besoin de changer le prénom seulement). – Nick

Questions connexes