Esquema de información

El esquema de información es un esquema integrado que es común a todas las bases de datos de Cloud Spanner. Puedes ejecutar consultas de SQL en tablas en el INFORMATION_SCHEMA a fin de recuperar metadatos de esquema para una base de datos.

Por ejemplo, la siguiente consulta recupera los nombres de todas las tablas definidas por el usuario en una base de datos:

SELECT
  table_name
FROM
  information_schema.tables
WHERE
  table_catalog = '' and table_schema = ''

Uso

  • Los datos del INFORMATION_SCHEMA solo están disponibles a través de interfaces de SQL (por ejemplo, executeQuery y gcloud spanner databases execute-sql); los otros métodos de lectura única de Cloud Spanner no son compatibles con el INFORMATION_SCHEMA.
  • Las consultas en el INFORMATION_SCHEMA se pueden usar en una transacción de solo lectura, pero no en una transacción de lectura y escritura.
  • Las consultas en el INFORMATION_SCHEMA pueden usar límites de marcas de tiempo sólidos de inactividad limitada o de inactividad exacta.

Esquemas

La tabla INFORMATION_SCHEMA.SCHEMATA enumera los esquemas en la base de datos. En estos se incluyen el esquema de información y un esquema sin nombre (que denominaremos “esquema predeterminado”), que contiene las tablas que definas.

Nombre de la columna Tipo Descripción
CATALOG_NAME STRING Es el nombre del catálogo. Esta columna existe para la compatibilidad con las tablas de esquema de información estándar de SQL. Esta columna es siempre una string vacía.
SCHEMA_NAME STRING Es el nombre del esquema. Esta opción está vacía cuando se trata del esquema predeterminado y no lo está para los esquemas con nombre.

Tablas

La tabla INFORMATION_SCHEMA.TABLES enumera las tablas de un esquema.

Nombre de la columna Tipo Descripción
TABLE_CATALOG STRING Es el nombre del catálogo. Esta columna nunca es NULL, pero siempre es una string vacía.
TABLE_SCHEMA STRING Es el nombre del esquema. Esta columna nunca es NULL. El esquema predeterminado tiene una string vacía y los esquemas con nombre tienen una string no vacía.
TABLE_NAME STRING Es el nombre de la tabla.
PARENT_TABLE_NAME STRING Es el nombre de la tabla superior si esta tabla está intercalada o es NULL.
ON_DELETE_ACTION STRING Esta opción está configurada en CASCADE o en NO ACTION para las tablas intercaladas, y en NULL en el caso contrario. Consulta Instrucciones de TABLE para obtener más información.

Columnas de la tabla

La tabla INFORMATION_SCHEMA.COLUMNS enumera las columnas de una tabla.

Nombre de la columna Tipo Descripción
TABLE_CATALOG STRING Es el nombre del catálogo. Esta columna nunca es NULL, pero siempre es una string vacía.
TABLE_SCHEMA STRING Es el nombre del esquema. Esta columna nunca es NULL. El esquema predeterminado tiene una string vacía y los esquemas con nombre tienen una string no vacía.
TABLE_NAME STRING Es el nombre de la tabla.
COLUMN_NAME STRING Es el nombre de la columna
ORDINAL_POSITION INT64 Es la posición ordinal de la columna en la tabla, que comienza con un valor de 1.
IS_NULLABLE STRING Es una string que indica si la columna acepta el valor NULL. De acuerdo con el estándar de SQL, la string es YES o NO, en lugar de un valor booleano.
SPANNER_TYPE STRING Es el tipo de datos de la columna.

Índices

En la tabla INFORMATION_SCHEMA.INDEXES se enumeran los índices de un esquema.

Nombre de la columna Tipo Descripción
TABLE_CATALOG STRING Es el nombre del catálogo. Esta columna nunca es NULL, pero siempre es una string vacía.
TABLE_SCHEMA STRING Es el nombre del esquema. Esta columna nunca es NULL. El esquema predeterminado tiene una string vacía y los esquemas con nombre tienen una string no vacía.
TABLE_NAME STRING Es el nombre de la tabla.
INDEX_NAME STRING Es el nombre del índice. Las tablas con una especificación PRIMARY KEY tienen una entrada de seudoíndice generada con el nombre PRIMARY_KEY, que permite determinar los campos de la clave primaria.
INDEX_TYPE STRING Es el tipo de índice. El tipo es INDEX o PRIMARY_KEY.
PARENT_TABLE_NAME STRING Los índices secundarios se pueden intercalar en una tabla superior, como se explica en la sección sobre cómo crear un índice secundario. Esta columna contiene el nombre de esa tabla superior, o NULL si el índice no está intercalado.
IS_UNIQUE BOOL Se indica si las claves de índice deben ser únicas.
IS_NULL_FILTERED BOOL Se indica si el índice incluye entradas con valores NULL.
INDEX_STATE STRING Es el estado actual del índice. Los valores posibles y los estados que representan son los siguientes:
  • PREPARE: Crea tablas vacías para un índice nuevo.
  • WRITE_ONLY: Reabastece los datos para un índice nuevo.
  • WRITE_ONLY_CLEANUP: Limpia un índice nuevo.
  • WRITE_ONLY_VALIDATE_UNIQUE: Comprueba la unicidad de los datos en un índice nuevo.
  • READ_WRITE: Operación de índice normal.

Columnas del índice

La tabla INFORMATION_SCHEMA.INDEX_COLUMNS enumera las columnas de un índice.

Nombre de la columna Tipo Descripción
TABLE_CATALOG STRING Es el nombre del catálogo. Esta columna nunca es NULL, pero siempre es una string vacía.
TABLE_SCHEMA STRING Es el nombre del esquema. Esta columna nunca es NULL. El esquema predeterminado tiene una string vacía y los esquemas con nombre tienen una string no vacía.
TABLE_NAME STRING Es el nombre de la tabla.
INDEX_NAME STRING Es el nombre del índice.
COLUMN_NAME STRING Es el nombre de la columna
ORDINAL_POSITION INT64 Es la posición ordinal de la columna en el índice (o clave primaria), que comienza con un valor de 1. Este valor es NULL para las columnas sin clave (por ejemplo, las columnas especificadas en la cláusula STORING de un índice).
COLUMN_ORDERING STRING Es el orden de la columna. El valor es ASC o DESC para las columnas de clave, y NULL para las columnas sin clave (por ejemplo, las columnas especificadas en la cláusula STORING de un índice).
IS_NULLABLE STRING Es una string que indica si la columna acepta el valor NULL. De acuerdo con el estándar de SQL, la string es YES o NO, en lugar de un valor booleano.
SPANNER_TYPE STRING Es el tipo de datos de la columna.

Opciones de la columna

En la tabla INFORMATION_SCHEMA.COLUMN_OPTIONS se enumeran las opciones de columna de una tabla.

Nombre de la columna Tipo Descripción
TABLE_CATALOG STRING Es el nombre del catálogo. El nombre siempre es una string vacía. Esta columna nunca es NULL.
TABLE_SCHEMA STRING Es el nombre del esquema. El nombre está vacío en el esquema predeterminado y no está vacío en otros esquemas (por ejemplo, en el INFORMATION_SCHEMA). Esta columna nunca es NULL.
TABLE_NAME STRING Es el nombre de la tabla. Esta columna nunca es NULL.
COLUMN_NAME STRING Es el nombre de la columna Esta columna nunca es NULL.
OPTION_NAME STRING Un identificador de SQL que identifica la opción de forma única. Este identificador es la clave de la cláusula OPTIONS en DDL. Esta columna nunca es NULL.
OPTION_TYPE STRING Es un nombre de tipo de datos que es el tipo de este valor de opción. Esta columna nunca es NULL.
OPTION_VALUE STRING Un literal de SQL que describe el valor de esta opción. El valor de esta columna debe poder analizarse como parte de una consulta. La expresión resultante de este análisis del valor debe poder convertirse en OPTION_TYPE. Esta columna nunca es NULL.

Ejemplos

Muestra información sobre cada tabla en el esquema del usuario:

SELECT
  t.table_name,
  t.parent_table_name
FROM
  information_schema.tables AS t
WHERE
  t.table_catalog = ''
  AND
  t.table_schema = ''
ORDER BY
  t.table_catalog,
  t.table_schema,
  t.table_name

Muestra información sobre las columnas de la tabla de usuarios MyTable:

SELECT
  t.column_name,
  t.spanner_type,
  t.is_nullable
FROM
  information_schema.columns AS t
WHERE
  t.table_catalog = ''
  AND
  t.table_schema = ''
  AND
  t.table_name = 'MyTable'
ORDER BY
  t.table_catalog,
  t.table_schema,
  t.table_name,
  t.ordinal_position

Muestra información sobre cada índice en el esquema del usuario:

SELECT
  t.table_name,
  t.index_name,
  t.parent_table_name
FROM
  information_schema.indexes AS t
WHERE
  t.table_catalog = ''
  AND
  t.table_schema = ''
  AND
  t.index_type != 'PRIMARY_KEY'
ORDER BY

  t.table_catalog,
  t.table_schema,
  t.table_name,
  t.index_name

Muestra todas las columnas que usan opciones distintas de la predeterminada:

SELECT
  t.table_name,
  t.column_name,
  t.option_type,
  t.option_value,
  t.option_name
FROM
  information_schema.column_options AS t
WHERE
  t.table_catalog = ''
AND
  t.table_schema = ''

Próximos pasos

Obtén información sobre otros metadatos de los almacenes de Cloud Spanner para cada base de datos en las tablas de estadísticas de consultas de la base de datos.