1
votes

Comment Cassandra stocke les données de la colonne sur le disque?

Disons que j'insère trois lignes dans cassandra dans l'ordre ci-dessous une par une

ID, prénom, nom, nom du site Web 1: fname1, lname1, site1 2: fname2, lname2, site2 3: fname3, lname3, site3

Le magasin de colonnes stocke les colonnes ensemble, comme ceci:

1: fnom1,2: fnom2,3: fnom3 1: lname1,2: lname2,3: lname3 1: site1,2: site2,3: site3

Cela signifie-t-il que lorsque j'insère la première ligne, c'est-à-dire 1: fname1, lname1, site1 , chaque colonne sera dans un bloc de disque séparé pour les trois colonnes afin que pendant la colonne firstname doit être lu dans une requête. toutes les données de colonne associées sont sur un seul bloc?

Cela ne ralentira-t-il pas l'écriture car Cassandra doit stocker les données dans 3 blocs au lieu d'un pour s'assurer que les données des colonnes sont liées ensemble?


3 Réponses :


1
votes

Cassandra n'est pas un magasin de colonnes classique. Il stocke toutes les données insérées / mises à jour ensemble, organisées d'abord par clé de partition, puis à l'intérieur de la partition en regroupant les colonnes / clés primaires. Les données peuvent être dans différents SSTables lorsque vous les mettez à jour à différents moments, mais le processus de compactage essaiera éventuellement de les fusionner.

Si vous êtes intéressé, vous pouvez utiliser sstabledump contre des fichiers de données et voir comment les données sont stockées. Il existe également un très bon article de blog de The Last Pickle sur le moteur de stockage dans Cassandra 3.0 (il est différent des versions précédentes).


3 commentaires

Cassandra n'est pas un magasin de colonnes classique Ne stocke-t-il pas les données par colonne comme indiqué par Bart à quora.com/... ? Alors quelle est la différence entre la cassandra et la base de données documentaire? Pourquoi s'appelle-t-il DB basé sur des colonnes?


J'ai obtenu ma réponse de stackoverflow.com/questions/13010225/... . Merci


la confusion vient généralement de Cassandra appelée magasin à colonnes larges, comme Big Table, HBase, etc. ( db-engines.com/en/article/Wide+Column+Stores ) - mais c'était surtout avant l'heure de la CQL



1
votes

Cassandra n'est pas une base de données orientée colonnes , c'est un magasin partition-row , cela signifie que les données de votre exemple seront stockées comme ceci:

 "YourTable" : {
   row1 : { "ID":1, "firstname":"fname1", "lastname":"lname1", "websitename":"site1", "timestamp":1582988571},
   row2 : { "ID":2, "firstname":"fname2", "lastname":"lname2", "websitename":"site2", "timestamp":1582989563}
   row3 : { "ID":3, "firstname":"fname3", "lastname":"lname3", "websitename":"site3", "timestamp":1582989572}
   ...
 }

Les données sont regroupées et recherchées en fonction de la clé primaire (qui est la clé de partition et peut inclure une ou plusieurs clés de clustering).

Quelques points à considérer: p>

  • Cassandra est un magasin d'ajout uniquement, cela signifie que lorsque vous essayez de mettre à jour ou de supprimer un enregistrement, il crée en interne un nouvel enregistrement avec la nouvelle valeur et un horodatage différent; pour l'opération de suppression, il ajoutera une méta-données appelée "tombstone" qui identifie les enregistrements qui seront supprimés
  • L'ajout ou la suppression de nœuds au cluster déclenchera un réarrangement de la distribution des jetons, cela signifie que l'instance ou le serveur sur lequel un enregistrement peut être localisé ou maintenu peut changer


0 commentaires

0
votes

Cassandra est essentiellement une base de données de famille de colonnes ou une base de données partitionnée par lignes avec des informations de colonne non basées sur des colonnes / colonnes / bases de données orientées colonnes. Lors de l'insertion / extraction, nous devons mentionner les informations de la colonne de partition (aka clé de ligne, aka clé primaire). Nous pouvons ajouter n'importe quelle colonne à tout moment.

Les magasins de la famille de colonnes, comme Cassandra, sont parfaits si vous avez des écritures à haut débit et que vous voulez être en mesure de mettre à l'échelle linéairement horizontalement.

Le terme «famille de colonnes» provient du moteur de stockage d'origine qui était un magasin de clés / valeurs, où la valeur était une «famille» de tuples de colonne / valeur. Il n'y avait pas de limite stricte sur le nombre de colonnes que chaque clé pouvait avoir.


0 commentaires