Familles de colonnes

Une famille de colonnes est un groupe de colonnes d’une table qui sont stockées sous la forme d’une seule paire clé-valeur dans le magasin clé-valeur sous-jacent. Les familles de colonnes réduisent le nombre de clés stockées dans le magasin clé-valeur, ce qui améliore les performances lors des opérations INSERT, UPDATE et DELETE.

Cette page explique comment CockroachDB organise les colonnes en familles ainsi que les cas dans lesquels vous pouvez vouloir remplacer manuellement le comportement par défaut.

Les index secondaires respectent les définitions des familles de colonnes appliquées aux tables. Lorsque vous définissez un index secondaire, CockroachDB divise les paires clé-valeur d’index secondaire en familles de colonnes, en fonction de la famille et des configurations de colonnes stockées.

Comportement par défaut

Lorsqu’une table est créée, toutes les colonnes sont stockées dans une seule famille de colonnes.

Cette approche par défaut garantit un stockage et des performances clés-valeurs efficaces dans la plupart des cas. Cependant, lorsque des colonnes fréquemment mises à jour sont regroupées avec des colonnes rarement mises à jour, les colonnes rarement mises à jour sont néanmoins réécrites à chaque mise à jour. Surtout lorsque les colonnes rarement mises à jour sont grandes, il est plus performant de les diviser en une famille distincte.

Remplacement manuel

Assigner des familles de colonnes lors de la création d’une table

Pour attribuer manuellement une famille de colonnes lors de la création d’une table, utilisez le mot-clé FAMILY.

Par exemple, disons que nous voulons créer une table pour stocker un blob immuable de données (data BYTES) avec un horodatage du dernier accès (last_accessed TIMESTAMP). Parce que nous savons que le blob de données ne sera jamais mis à jour, nous utilisons le mot-clé FAMILY pour le diviser en une famille de colonnes distincte:

icon/buttons/copy
> CREATE TABLE test ( id INT PRIMARY KEY, last_accessed TIMESTAMP, data BYTES, FAMILY f1 (id, last_accessed), FAMILY f2 (data));
icône / boutons / copier
> SHOW CREATE test;

Attribuer des familles de colonnes Lors de l’ajout de colonnes

Lorsque vous utilisez l’instruction ALTER TABLE .. ADD COLUMN pour ajouter une colonne à une table, vous pouvez affecter la colonne à une famille de colonnes nouvelle ou existante.

  • Utilisez le mot clé CREATE FAMILY pour affecter une nouvelle colonne à une nouvelle famille. Par exemple, ce qui suit ajouterait une colonne data2 BYTES à la table test ci-dessus et l’affecterait à une nouvelle famille de colonnes:
icône / boutons / copier
 > ALTER TABLE test ADD COLUMN data2 BYTES CREATE FAMILY f3;
  • Utilisez le mot clé FAMILY pour attribuer une nouvelle colonne à une famille existante. Par exemple, ce qui suit ajouterait une colonne name STRING à la table test ci-dessus et l’affecterait à la famille f1:
icône / boutons / copier
 > ALTER TABLE test ADD COLUMN name STRING FAMILY f1;
  • Utilisez le mot clé CREATE IF NOT EXISTS FAMILY pour attribuer une nouvelle colonne à une famille existante ou, si la famille n’existe pas, à une nouvelle famille. Par exemple, ce qui suit affecterait la nouvelle colonne à la famille f1 existante ; si cette famille n’existait pas, elle créerait une nouvelle famille et lui affecterait la colonne:
icône / boutons / copier
 > ALTER TABLE test ADD COLUMN name STRING CREATE IF NOT EXISTS FAMILY f1;
  • Si une colonne est ajoutée à une table et que la famille n’est pas spécifiée, elle sera ajoutée à la première famille de colonnes. Par exemple, ce qui suit ajouterait la nouvelle colonne à la famille f1, car il s’agit de la première famille de colonnes:
icône / boutons / copie
 > ALTER TABLE test ADD COLUMN last_name STRING;

Voir aussi

  • CREATE TABLE
  • ADD COLUMN
  • Autres Instructions SQL

Cette page vous a-t-elle été utile ?

Oui Non

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.