Familias de columnas

Una familia de columnas es un grupo de columnas de una tabla que se almacenan como un único par clave-valor en el almacén clave-valor subyacente. Las familias de columnas reducen el número de claves almacenadas en el almacén de clave-valor, lo que mejora el rendimiento durante las operaciones INSERT, UPDATE y DELETE.

Esta página explica cómo CockroachDB organiza las columnas en familias, así como los casos en los que es posible que desee anular manualmente el comportamiento predeterminado.

Los índices secundarios respetan las definiciones de la familia de columnas aplicadas a las tablas. Al definir un índice secundario, CockroachDB divide los pares clave-valor del índice secundario en familias de columnas, de acuerdo con la familia y las configuraciones de columna almacenadas.

Comportamiento predeterminado

Cuando se crea una tabla, todas las columnas se almacenan como una sola familia de columnas.

Este enfoque predeterminado garantiza un almacenamiento y un rendimiento de clave-valor eficientes en la mayoría de los casos. Sin embargo, cuando las columnas que se actualizan con frecuencia se agrupan con columnas que se actualizan con poca frecuencia, las columnas que se actualizan con poca frecuencia se reescriben en cada actualización. Especialmente cuando las columnas rara vez actualizadas son grandes, es más eficiente dividirlas en una familia distinta.

Anulación manual

Asignar familias de columnas en la creación de tablas

Para asignar manualmente una familia de columnas en la creación de tablas, utilice la palabra clave FAMILY.

Por ejemplo, digamos que queremos crear una tabla para almacenar un blob inmutable de datos (data BYTES) con una marca de tiempo de último acceso (last_accessed TIMESTAMP). Como sabemos que el blob de datos nunca se actualizará, usamos la palabra clave FAMILY para dividirlo en una familia de columnas separada:

icono / botones / copia
> CREATE TABLE test ( id INT PRIMARY KEY, last_accessed TIMESTAMP, data BYTES, FAMILY f1 (id, last_accessed), FAMILY f2 (data));
icono / botones / copiar
> SHOW CREATE test;

Asignar familias de columnas al agregar columnas

Al usar la instrucción ALTER TABLE .. ADD COLUMN para agregar una columna a una tabla, puede asignar la columna a una familia de columnas nueva o existente.

  • Utilice la palabra clave CREATE FAMILY para asignar una nueva columna a una nueva familia. Por ejemplo, lo siguiente agregaría una columna data2 BYTES a la tabla test de arriba y la asignaría a una nueva familia de columnas:
icono / botones / copiar
 > ALTER TABLE test ADD COLUMN data2 BYTES CREATE FAMILY f3;
  • Utilice la palabra clave FAMILY para asignar una nueva columna a una familia existente. Por ejemplo, lo siguiente agregaría una columna name STRING a la tabla test de arriba y la asignaría a la familia f1:
icono / botones / copiar
 > ALTER TABLE test ADD COLUMN name STRING FAMILY f1;
  • Utilice la palabra clave CREATE IF NOT EXISTS FAMILY para asignar una nueva columna a una familia existente o, si la familia no existe, a una nueva familia. Por ejemplo, lo siguiente asignaría la nueva columna a la familia f1 existente; si esa familia no existiera, crearía una nueva familia y le asignaría la columna:
icono / botones / copiar
 > ALTER TABLE test ADD COLUMN name STRING CREATE IF NOT EXISTS FAMILY f1;
  • Si se agrega una columna a una tabla y no se especifica la familia, se agregará a la primera familia de columnas. Por ejemplo, lo siguiente añadiría la nueva columna a la familia f1, ya que es la primera familia de columnas:
icono botones//copia
 > ALTER TABLE test ADD COLUMN last_name STRING;

Ver también

  • CREATE TABLE
  • ADD COLUMN
  • Otras Instrucciones SQL

esta página Fue útil?

No

Deja una respuesta

Tu dirección de correo electrónico no será publicada.