Este tema describe la sintaxis que se utiliza para crear una tabla compatible con tipos de datos geométricos.
Sintaxis
create_table_statement ::= CREATE TABLE [ IF NOT EXISTS ] table_name
'('
column_definition
( ',' column_definition )*
',' [constraint pk] PRIMARY KEY '(' primary_key ')'
')' WITH [ table_options ]
column_definition ::= column_name lql_type
primary_key ::= primary_item [ ',' primary_item ]
primary_item ::= column_name (ASC|DESC)
| [z-order] '(' [ column_name ( ',' column_name )* ] ')'
Esta sintaxis es compatible con IF NOT EXISTS. Especifique una o más columnas como clave principal.
Uso
Nombre de la tabla (table_identifier)
El nombre de la tabla debe cumplir los siguientes requisitos:
El nombre puede contener dígitos, letras mayúsculas, letras minúsculas, puntos (.), guiones (-) y guiones bajos (_).
El nombre no puede comenzar con un punto (.) ni con un guion (-).
La longitud del nombre debe ser de 1 a 255 caracteres.
Definición de columna (column_definition)
|
Sintaxis |
Obligatorio |
Descripción |
|
nombre de columna (column_identifier) |
Sí |
|
|
tipo de dato (data_type) |
Sí |
Para obtener más información sobre los tipos de datos compatibles, consulte Data types. Importante
Cuando cree una tabla de series temporales, tenga en cuenta lo siguiente si utiliza el tipo de dato TIMESTAMP:
|
|
Restricción NULL |
No |
Indica si la columna admite valores NULL. Importante
Lindorm SQL no valida esta restricción; el motor de almacenamiento se encarga de ello. La validación de la restricción NULL depende de las reglas del motor de almacenamiento, las cuales varían. Por lo tanto, podría escribir valores NULL en una columna aunque esté definida con NOT NULL. Asegúrese de que los datos se escriban correctamente mediante los siguientes lineamientos:
|
Clave principal (primary_key)
La clave principal identifica de forma única los datos de una tabla y consta de una o más columnas. Debe especificar una clave principal (PRIMARY KEY) al crear una tabla.
La clave principal no se puede modificar después de su creación. Diseñe la clave principal con cuidado.
Tenga en cuenta lo siguiente cuando ejecute la instrucción CREATE TABLE para crear una tabla:
|
Tipo de motor |
Descripción |
|
LindormTable |
|
|
LindormTSDB |
|
Expresión de índice (KEY|INDEX)
Utilice la palabra clave KEY o INDEX en una instrucción CREATE TABLE para crear un índice junto con la tabla.
La expresión de índice (KEY|INDEX) solo es compatible con LindormTable 2.7.7 y versiones posteriores, así como con Lindorm SQL 2.8.6.0 y versiones posteriores.
Para comprobar las versiones de LindormTable y Lindorm SQL, consulte LindormTable release notes y SQL version notes. Si no logra actualizar a las versiones requeridas desde la consola, comuníquese con el soporte técnico de Lindorm. El identificador de DingTalk es s0s3eg3.
Uso
Si no especifica explícitamente un nombre de índice, el sistema genera uno de forma predeterminada. El formato del nombre de índice generado es
TableName_idx_${auto-incremented ID}.Actualmente, con una expresión de índice solo se crean secondary indexes and search indexes.
-
Inclusión predeterminada de columnas para índices secundarios:
Lindorm SQL 2.9.3.10 y versiones posteriores
Si no especifica una cláusula
INCLUDEal crear un índice secundario, el resto de las columnas no se incluyen en el índice de forma predeterminada.Versiones de Lindorm SQL anteriores a la 2.9.3.10
Si no especifica una cláusula
INCLUDEal crear un índice secundario, el resto de las columnas se incluyen en el índice de forma predeterminada.NotaEsto equivale a establecer el atributo de índice INDEX_COVERED_TYPE en
COVERED_ALL_COLUMNS_IN_SCHEMA. Si la tabla es dinámica, equivale a establecer el atributo enCOVERED_DYNAMIC_COLUMNS. Si especifica una cláusula
KEYoINDEXal crear una tabla, pero no especifica explícitamente los atributos MUTABILITY y CONSISTENCY, la tabla se crea con los siguientes atributos predeterminados:CONSISTENCY = 'strong'yMUTABILITY='MUTABLE_LATEST'.Si la instrucción CREATE TABLE incluye una expresión de índice, el sistema primero crea la tabla y luego el índice. Si ocurre una excepción durante la creación del índice, es posible que ambos permanezcan sin eliminarse automáticamente. Consulte instrucciones como
SHOWyDESCRIBEpara verlos, aunque quizá no logre escribir datos en ellos ni consultarlos. Se recomienda eliminar la tabla y el índice restantes para volver a crearlos.
Partición (partition_definition)
Solo LindormTSDB es compatible con particiones. En una tabla de series temporales, la columna utilizada en la cláusula PARTITION BY debe ser una columna de clave principal VARCHAR.
Utilice PARTITION BY HASH(column1, column2, ..., columnN) para especificar una o más columnas para la partición hash. Por ejemplo: PARTITION BY HASH(c1, p1).
Atributos de tabla (table_options)
Solo LindormTable es compatible con los atributos de tabla. Utilice la palabra clave WITH para agregar los siguientes atributos de tabla:
|
Opción |
Tipo |
Descripción |
|
COMPRESSION |
STRING |
El algoritmo de compresión de la tabla. Valores válidos:
Nota
En las versiones de LindormTable anteriores a la 2.3.4, no se especifica ningún algoritmo de compresión de forma predeterminada. En LindormTable 2.3.4 y versiones posteriores, se utiliza el algoritmo ZSTD de forma predeterminada. |
|
TTL |
INT |
El tiempo de vida (TTL) de los datos, en segundos (s). Nota
|
|
COMPACTION_MAJOR_PERIOD |
LONG |
El intervalo con el que el sistema ejecuta una Nota
Valor predeterminado: Math.Min(TTL, 1,728,000,000 ms). Si no establece un TTL, el valor predeterminado es de 20 días (20 × 24 × 60 × 60 × 1,000 = 1,728,000,000 ms). |
|
MUTABILITY |
STRING |
El modo de escritura de la tabla base. Este atributo afecta el comportamiento de indexación. Valor predeterminado: Valores válidos:
Para obtener más información sobre los valores, consulte High-performance native secondary indexes. Importante
Una vez creado un índice, no modifique el atributo MUTABILITY. Para cambiar este atributo, primero elimine todos los índices de la tabla. Cree una copia de seguridad de los datos antes de ejecutar esta operación para evitar pérdidas de información. |
|
CONSISTENCY |
STRING |
El nivel de consistencia de la tabla. En instancias entre zonas, especifica la consistencia de los datos entre las réplicas principales y secundarias. Valores válidos:
Importante
En instancias entre zonas, si su carga de trabajo implica operaciones de lectura-modificación-escritura (como incremento, anexión o actualizaciones de índices), establezca el atributo CONSISTENCY de la tabla principal en |
|
NUMREGIONS |
INT |
El número de regiones predivididas de la tabla. |
|
CHS |
INT |
El límite que separa los datos calientes de los fríos, en segundos. Nota
|
|
STARTKEY y ENDKEY |
El mismo tipo de dato que la primera columna de la clave principal. |
La clave inicial y final para predividir las regiones de la tabla. Nota
|
|
SPLITKEYS |
El mismo tipo de dato que la primera columna de la clave principal. |
Las claves iniciales de todas las regiones predivididas de la tabla. Nota
|
|
SPLITALGO |
STRING |
Define el algoritmo de división para la partición previa. Los algoritmos compatibles son:
|
|
DYNAMIC_COLUMNS |
STRING |
Indica si se habilitan las columnas dinámicas. Valores válidos:
Nota
Dynamic columns solo admiten el tipo de dato Varbinary. Para obtener más información sobre las columnas dinámicas, consulte Dynamic columns. |
|
VERSIONS |
STRING |
El número de versiones que se conservan para cada valor de columna. Debe ser un entero mayor o igual que 1. Valor predeterminado: 1. Para obtener más información sobre el control de versiones de datos, consulte Data versioning. Importante
Un valor alto para el atributo VERSIONS puede degradar el rendimiento de consulta y almacenamiento. Se recomienda establecer este valor en 1. |
|
BLOB_BUCKET_NAME |
STRING |
El nombre del bucket para las columnas BLOB de la tabla. El nombre del bucket debe cumplir las siguientes reglas:
Nota
|
Las versiones de LindormTable anteriores a la 2.2.16 no admiten la palabra clave WITH para configurar atributos de tabla. Encierre la palabra clave del atributo entre comillas simples ('). Los valores de los atributos se configuran según su tipo de dato; por ejemplo, los valores STRING deben ir entre comillas simples ('). Ejemplo: CREATE TABLE IF NOT EXISTS t1(c1 varchar, c2 bigint, c3 int, c4 int, PRIMARY KEY(c1,c2)) 'CONSISTENCY'='strong';.
Ejemplos
-
Ejecute la siguiente instrucción para crear una tabla compatible con todos los tipos de datos geométricos:
CREATE TABLE geoms(gid INT, g GEOMETRY, PRIMARY KEY(gid));Ejecute la siguiente instrucción para escribir distintos tipos de datos geométricos en la tabla:
UPSERT INTO geoms(gid, g) VALUES(0,ST_GeomFromText('POINT(-10.1 3.3)')),(1,ST_GeomFromText('LINESTRING(-12.2 4.3, -10.2 4.3)')),(2,ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))')); -
Ejecute la siguiente instrucción para crear una tabla que solo admita objetos de punto:
CREATE TABLE pts(gid INT, g GEOMETRY(POINT), PRIMARY KEY(gid);Ejecute la siguiente instrucción para escribir objetos de punto en la tabla:
UPSERT INTO pts(gid, g) VALUES(0, ST_MakePoint(0,0)),(1, ST_MakePoint(1,1)); -
Ejecute la siguiente instrucción para crear una tabla que solo admita objetos de polígono:
CREATE TABLE polys(gid INT, g GEOMETRY(POLYGON), PRIMARY KEY(gid));Ejecute la siguiente instrucción para escribir un objeto de polígono en la tabla:
UPSERT INTO polys(gid,g) VALUES(0,ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))')); -
Ejecute la siguiente instrucción para crear una tabla que solo admita objetos LineString:
CREATE TABLE lines(gid INT, g GEOMETRY(LINESTRING), PRIMARY KEY(gid));Ejecute la siguiente instrucción para escribir un objeto LineString en la tabla:
UPSERT INTO lines(gid,g) VALUES(0, ST_GeomFromText('LINESTRING(-12.2 4.3, -10.2 4.3)')); -
Ejecute la siguiente instrucción para crear una tabla que solo admita objetos MultiPoint:
CREATE TABLE multipoints(gid INT, g GEOMETRY(MULTIPOINT), PRIMARY KEY(gid));Ejecute la siguiente instrucción para escribir un objeto MultiPoint en la tabla:
UPSERT INTO multipoints(gid,g) VALUES(0, ST_GeomFromText('MULTIPOINT (10 40, 40 30, 20 20, 30 10)')); -
Ejecute la siguiente instrucción para crear una tabla que solo admita objetos MultiLineString:
CREATE TABLE multilines(gid INT, g GEOMETRY(MULTILINESTRING), PRIMARY KEY(gid));Ejecute la siguiente instrucción para escribir un objeto MultiLineString en la tabla:
UPSERT INTO multilines(gid,g) VALUES(0, ST_GeomFromText('MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))')); -
Ejecute la siguiente instrucción para crear una tabla que solo admita objetos MultiPolygon:
CREATE TABLE multipolys(gid INT, g GEOMETRY(MULTIPOLYGON), PRIMARY KEY(gid));Ejecute la siguiente instrucción para escribir un objeto MultiPolygon en la tabla:
UPSERT INTO multipolys(gid,g) VALUES(0, ST_GeomFromText('MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))')); -
Ejecute la siguiente instrucción para crear una tabla que solo admita objetos GeometryCollection:
CREATE TABLE collections(gid INT, g GEOMETRY(GEOMETRYCOLLECTION), PRIMARY KEY(gid));Ejecute la siguiente instrucción para escribir un objeto GeometryCollection en la tabla:
UPSERT INTO collections(gid,g) VALUES(0, ST_GeomFromText('GEOMETRYCOLLECTION (POINT (40 10), LINESTRING (10 10, 20 20, 10 40), POLYGON ((40 40, 20 45, 45 30, 40 40)))')); -
Ejecute la siguiente instrucción para crear una tabla que contenga varias columnas con distintos datos geométricos:
CREATE TABLE mix(gid INT, pt GEOMETRY(POINT), ply GEOMETRY(POLYGON), PRIMARY KEY(gid));