2012-07-12 1 views
1

Je suis à la recherche d'un bon moyen de stocker les commentaires en cassandra. Quelqu'un peut-il me fournir un bon modèle de données Cassandra pour stocker des commentaires?Cassandra schema pour les commentaires

Le modèle de données devrait me permettre de récupérer un certain nombre de ces commentaires avec phpcassa.

C'était mon idée:

Comments = { 
    CommentId1:{ 
     CommentAuthor, 
     Content, 
     Timestamp 
    }, 
    CommentId2:{ 
     CommentAuthor, 
     Content, 
     Timestamp 
    } 
    ... 
} 

CommentsLine = { 
    EntryId1:{ 
     CommentId1: timestamp, 
     CommentId2: timestamp, 
     CommentId3: timestamp, 
     ... 
    } 
    ... 
} 

Mais je ne suis pas sûr que ce soit la meilleure façon. Merci pour ton aide.

Répondre

2

Votre solution semble être cool mais peut-être qu'il est préférable de la stocker dans les commentaires FCLigne la clé avec un horodatage comme celui que vous pouvez commander vos commentaires.

CommentsLine = { 
    EntryId1:{ 
     timestamp: CommentId1 , 
     timestamp: CommentId2 , 
     timestamp: CommentId3 , 
     ... 
    } 
    ... 
} 
+0

Dans ma solution si vous voulez des commentaires triés Vous pouvez l'obtenir à partir du tableau de messages par une simple tranche sur une colonne de stockage {Publié Timestamp} -> {{Commentaire auteur ID utilisateur} et d'autres méta-données JSON} – MaX

+0

Oui peut-être. Je ne connais pas votre schéma mais dans cet exemple, il est préférable d'utiliser des colonnes dans une rowkey pour garder vos commentaires triés. – sahid

+0

@sahid Ok, mais comment puis-je obtenir seulement les 5 premiers résultats puis un autre 5 résultats ecc ...? – siannone

1

J'ai résolu ce problème une fois. Voici comment j'ai résolu ce problème. Un ColumnFamily commentaires séparés où chaque ligne est un ID de commentaire (mon ID étaient de la forme {ID de poste parent} - {Identifiant auteur ID auteur} - {Horodatage commentaire posté}), puis avoir une colonne contenant Auteur, commentaire, posté date etc.

Vous pouvez avoir votre propre format et les séparer dans une famille de colonnes individuelles permet de s'assurer qu'ils sont distribués. Une fois le lien créé, vous devez lier chaque commentaire à son parent en gardant un nom de colonne commentaires qui peuvent avoir {Affiché l'horodatage} -> {{Commentaire auteur ID utilisateur} et d'autres métadonnées comme JSON} (C'était totalement spécifique à mon scénario, vous devriez penser quelque chose que vous aimez).

Lorsque quelqu'un commente que vous pouvez générer est posté micro temps de PHP et en conséquence insérer dans Cassandra. Ce format garantit que Cassandra distribue les commentaires dans les anneaux et que la ligne dans la publication reste minimale et ne contient que les informations requises. Pour recharger les commentaires, vous devez sélectionner des colonnes, puis effectuer un appel MultiGet dans la famille de colonnes Commentaires.