Cómo administrar el contenido de la tienda de columnas de forma manual

En esta página, se describe cómo administrar el contenido del almacén de columnas del motor de columnas agregando y quitando columnas de forma manual.

Según tu carga de trabajo, puedes agregar columnas al almacén de columnas de forma manual o descartar algunas o todas las columnas de una tabla o una vista materializada desde el almacén de columnas. La evaluación de consultas usa automáticamente los datos almacenados en columnas para responder consultas.

Cuando elijas qué tablas, vistas materializadas y columnas agregar al almacén de columnas, ten en cuenta el tamaño del almacén de columnas y la forma de la carga de trabajo. Entre los buenos candidatos para la selección, se incluyen tablas o vistas grandes que se analizan con frecuencia. Dentro de estas tablas o vistas, identifica los índices grandes no únicos que usa la carga de trabajo de OLAP. Puedes agregar las columnas de estos índices al almacén de columnas y, posiblemente, descartar los índices, lo que elimina el costo de rendimiento asociado con su mantenimiento en la instancia principal.

Usa uno de los siguientes métodos para administrar el contenido de la tienda de columnas del motor de columnas:

Consulta Qué datos puedes agregar al almacén de columnas para obtener información sobre los tipos de datos y las fuentes de datos que puedes usar cuando agregas tablas, columnas y vistas materializadas al almacén de columnas.

Antes de comenzar

  • Debes tener uno de estos roles de IAM en el proyecto de Google Cloud que usas:
    • roles/alloydb.admin (el rol de IAM predefinido de administrador de AlloyDB)
    • roles/owner (el rol de IAM básico de propietario)
    • roles/editor (el rol de IAM básico de editor)

    Si no tienes ninguno de estos roles, comunícate con el administrador de tu organización para solicitar acceso.

Administra el contenido del almacén de columnas actualizando las marcas de la base de datos

Para administrar el contenido del almacén de columnas de forma manual, actualiza la marca de la base de datos google_columnar_engine.relations. La marca tiene un valor único que especifica todas las fuentes de datos de tu tienda de columnas. Durante el reinicio, las columnas especificadas en esta marca se propagan automáticamente en el almacén de columnas.

Puedes usar esta marca junto con la columnarización automática. Si el motor de columnas tiene memoria disponible después de propagar las columnas que especificas a través de la marca google_columnar_engine.relations, la columna automática agrega más columnas al almacén de columnas, según sea necesario.

Para obtener más información sobre cómo configurar las marcas de base de datos de una instancia con Google Cloud CLI o la consola de Google Cloud , consulta Configura las marcas de base de datos de una instancia.

Agrega columnas con marcas

Para agregar columnas al almacén de columnas, define la marca google_columnar_engine.relations de una instancia. Establece su valor en una lista de elementos separados por comas, en la que cada elemento especifique una lista de columnas para incluir de una tabla específica, en este formato:

DATABASE_NAME.SCHEMA_NAME.TABLE_NAME(COLUMN_LIST)

Reemplaza lo siguiente:

  • DATABASE_NAME: Es la base de datos que contiene las columnas que se agregarán al almacén de columnas.

  • SCHEMA_NAME: Es el esquema que identifica las tablas o las vistas materializadas que se agregarán al almacén de columnas, por ejemplo, public.

  • TABLE_NAME: Es la tabla o la vista materializada que contiene las columnas que se agregarán al almacén de columnas.

  • COLUMN_LIST: Es una lista separada por comas de las columnas que se agregarán al almacén de columnas.

Para agregar todas las columnas de una tabla o una vista materializada, omite la lista de columnas:

DATABASE_NAME.SCHEMA_NAME.TABLE_NAME

Para obtener más información sobre cómo configurar las marcas de base de datos en una instancia, consulta Configura las marcas de base de datos de una instancia.

Nota sobre la sintaxis de la línea de comandos

Si usas Google Cloud CLI para establecer la marca google_columnar_engine.relations, debes usar la sintaxis de delimitador alternativo para separar las marcas de base de datos que establezcas. Esto se debe a que la lista de columnas está separada por comas, por lo que debes usar un carácter que no sea una coma cuando especifiques marcas dentro del mismo argumento de línea de comandos.

En el siguiente ejemplo, se muestra cómo usar gcloud CLI para agregar dos columnas en el esquema public al almacén de columnas. En el ejemplo, se establece una marca independiente para habilitar el motor de columnas, ya que usar el comando gcloud alloydb instance update para establecer cualquier marca de base de datos también debe establecer todas las demás marcas de base de datos que deseas que tengan valores no predeterminados, incluso si ya están establecidas.

gcloud alloydb instances update INSTANCE_NAME \
    --database-flags=^:^\
google_columnar_engine.relations='DATABASE_NAME.public.TABLE_NAME(COLUMN_1,COLUMN_2)'\
:google_columnar_engine.enabled=on\
[:FLAG_3=VALUE_3 ...] \
    --region=REGION_ID \
    --cluster=CLUSTER_ID

Cómo descartar columnas con marcas

Para quitar columnas del almacén de columnas, establece un valor nuevo para la marca google_columnar_engine.relations que se describe en la sección anterior y deja fuera las columnas que deseas quitar.

Para descartar todas las columnas del almacén de columnas, anula la marca google_columnar_engine.relations de tu instancia.

Para obtener más información sobre cómo configurar marcas de base de datos en una instancia, consulta Configura las marcas de base de datos de una instancia.

Administra el contenido del almacén de columnas con funciones de SQL

Puedes administrar el contenido del almacén de columnas de forma manual con funciones de SQL.

Cómo agregar columnas con funciones de SQL

Ejecuta la función SQL google_columnar_engine_add para agregar columnas al almacén de columnas.

Este método agrega las columnas especificadas al almacén de columnas y administra las columnas solo en el nodo conectado. Las columnas nuevas no persisten en la tienda durante los reinicios de la instancia.

Este método no cambia la marca de base de datos google_columnar_engine.relations. La columnarización automática no considera las columnas que agrega esta función de SQL.

Cliente psql

SELECT google_columnar_engine_add(
    relation => 'TABLE_NAME',
    columns => 'COLUMN_LIST'
);
    Reemplaza lo siguiente:
  • "TABLE_NAME": Es una cadena que contiene el nombre de la tabla o la vista materializada. Si la tabla o la vista se encuentran en un esquema que no es public, especifica el nombre del esquema, un punto y el nombre de la tabla o la vista, por ejemplo, 'myschema.mytable'.
  • "COLUMN_LIST": Es una cadena que contiene una lista separada por comas y que distingue mayúsculas de minúsculas de los nombres de las columnas que deseas agregar. Si deseas agregar todas las columnas de la tabla o de la vista materializada al almacén de columnas, omite este parámetro.

Cómo eliminar columnas con funciones de SQL

Ejecuta la función SQL google_columnar_engine_drop de la siguiente manera:

Cliente psql

SELECT google_columnar_engine_drop(
    relation => 'TABLE_NAME',
    columns => 'COLUMN_LIST'
);
Reemplaza lo siguiente:
  • "TABLE_NAME": Es una cadena que contiene el nombre de la tabla o la vista materializada. Si la tabla o la vista se encuentran en un esquema que no es public, especifica el nombre del esquema, un punto y el nombre de la tabla o la vista, por ejemplo, 'myschema.mytable'.
  • "COLUMN_LIST": Es una cadena que contiene una lista separada por comas y que distingue mayúsculas de minúsculas de los nombres de las columnas que deseas agregar. Si deseas agregar todas las columnas de la tabla o de la vista materializada al almacén de columnas, omite este parámetro.

Puedes usar la función google_columnar_engine_drop para quitar las columnas que se agregaron editando la marca de base de datos google_columnar_engine.relations. Sin embargo, cuando lo hagas, esas columnas se volverán a agregar al almacén de columnas cuando se reinicie la instancia.