Todos os produtos
Search
Central de documentação

Lindorm:CREATE TABLE

Última atualização: Jul 10, 2026

A instrução CREATE TABLE cria tabelas no LindormTable ou LindormTSDB. Ela oferece suporte a tipos de dados como VARCHAR, TIMESTAMP e BIGINT, além de atributos de tabela como TTL e COMPRESSION, adequando-se a diversos cenários de negócios.

Engine e versão

Sintaxe

create_table_statement ::=  CREATE TABLE [ IF NOT EXISTS ] table_identifier
                            '('
                                column_definition
                                ( ',' column_definition )*
                                 ',' PRIMARY KEY '(' primary_key ')' 
                                ( ',' {KEY|INDEX} [index_identifier] 
                                     [ USING index_method_definition ] 
                                     [ INCLUDE column_identifier ( ',' column_identifier )* ]
                                     [ WITH  index_options ]
                                )*    
                            ')' 
                            [ PARTITION BY partition_definition ]
                            [ ZORDER BY zorder_column_list ]
                            [ WITH  table_options ]
column_definition      ::=  column_identifier data_type [ NOT NULL ]
primary_key            ::=  column_identifier [ ',' column_identifier (ASC|DESC)]                         
index_method_definition  ::= { KV | SEARCH }  
index_options            ::=  '(' 
                                  option_definition (',' option_definition )* 
                              ')'
partition_definition   ::=  HASH '(' column_identifier (',' column_identifier )* ')'
zorder_column_list     ::=  column_identifier ( ',' column_identifier )*
table_options          ::=  '(' option_definition (',' option_definition )*  ')'
option_definition      ::=  option_identifier '=' string_literal 

Diferenças de sintaxe

A sintaxe CREATE TABLE difere entre o LindormTable e o LindormTSDB. A tabela a seguir compara os parâmetros suportados por cada engine.

Parâmetro

LindormTable

LindormTSDB

Nome da tabela (table_identifier)

0

0

Definição de coluna (column_definition)

0

0

Chave primária (primary_key)

0

0

Expressão de índice (KEY|INDEX)[Expressão de índice (KEY

INDEX)](#bb9b8e1047cvt)

0

✖️

Partição (partition_definition)

✖️

0

Atributos da tabela (table_options)

0

✖️

Uso

Nome da tabela (table_identifier)

O nome da tabela deve atender aos seguintes requisitos:

  • Pode conter dígitos, letras maiúsculas, letras minúsculas, pontos (.), hifens (-) e sublinhados (_).

  • Não pode começar com ponto (.) ou hífen (-).

  • Deve ter entre 1 e 255 caracteres.

Definição de coluna (column_definition)

Sintaxe

Obrigatório

Descrição

nome da coluna (column_identifier)

Sim

  • O nome pode conter dígitos, letras maiúsculas, letras minúsculas, pontos (.), hifens (-) e sublinhados (_).

  • Não use palavras-chave reservadas pelo sistema como nomes de coluna.

  • O comprimento do nome não pode exceder 255 bytes.

tipo de dado (data_type)

Sim

Para mais informações sobre os tipos de dados suportados, consulte Tipos de dados.

Importante

Ao criar uma tabela de séries temporais, observe o seguinte se utilizar o tipo de dado TIMESTAMP:

  • Especifique apenas uma coluna TIMESTAMP.

  • O LindormTSDB codifica e analisa timestamps com base no Horário Padrão da China (UTC+8).

  • Alguns sistemas legados processam timestamps UNIX de 32 bits. Antes de gravar esses timestamps no LindormTSDB, multiplique-os por 1.000 para evitar discrepâncias semânticas. Por exemplo, um timestamp de 1641009600 é interpretado como 2022-01-01 12:00:00 em um sistema legado, mas o LindormTSDB o interpreta como 1970-01-20 07:50:09 (UTC+8) .

Restrição NULL

Não

Indica se a coluna permite valores NULL.

Importante

O Lindorm SQL não valida essa restrição. A engine de armazenamento realiza a validação.

A validação da restrição NULL depende das regras da engine de armazenamento, que variam entre si. Consequentemente, pode ser possível gravar valores NULL em uma coluna mesmo que ela esteja definida com NOT NULL.

Para garantir que os dados sejam gravados conforme esperado, siga estes requisitos:

  • Uma coluna de chave primária não pode ser NULL. Especifique NOT NULL para todas as colunas de chave primária ao criar uma tabela.

  • Não especifique NOT NULL para colunas que não sejam de chave primária.

Chave primária (primary_key)

Uma chave primária identifica exclusivamente os dados em uma tabela e consiste em uma ou mais colunas. Você deve especificar uma chave primária (PRIMARY KEY) ao criar uma tabela.

Importante

A chave primária não pode ser modificada após a criação. Planeje sua chave primária com cuidado.

Ao usar a instrução CREATE TABLE para criar uma tabela, observe o seguinte:

Tipo de engine

Descrição

LindormTable

  • O comprimento máximo de uma única coluna de chave primária é de 2 KB.

  • O comprimento total de todas as colunas de chave primária não pode exceder 30 KB.

  • O comprimento máximo de uma única coluna que não seja de chave primária não pode exceder 2 MB.

LindormTSDB

  • Na chave primária de uma tabela de séries temporais, uma coluna VARCHAR é chamada de coluna TAG, e uma coluna TIMESTAMP é chamada de coluna de timestamp.

  • As colunas de chave primária devem ser do tipo de dado VARCHAR ou TIMESTAMP.

  • A chave primária pode conter uma ou mais colunas VARCHAR, mas apenas uma coluna TIMESTAMP.

  • Utilize um identificador exclusivo da source de dados como chave primária para uma tabela de séries temporais. Exemplos incluem IDs de dispositivos em cenários de IoT, números de identificação de veículos (VINs) em cenários de Internet dos Veículos (IoV) e IDs de aplicativos ou strings ip:port em cenários de monitoramento. Para mais informações, consulte Melhores práticas para projetar uma PRIMARY KEY.

Expressão de índice (KEY|INDEX)

Use a palavra-chave KEY ou INDEX em uma instrução CREATE TABLE para criar um índice junto com a tabela.

Importante
  • A expressão de índice (KEY|INDEX) é suportada apenas no LindormTable 2.7.7 e posteriores e no Lindorm SQL 2.8.6.0 e posteriores.

  • Para verificar as versões do LindormTable e do Lindorm SQL, consulte as Notas de versão do LindormTable e as Notas de versão do SQL. Se não for possível atualizar para as versões necessárias no console, entre em contato com o suporte técnico do Lindorm. O ID do DingTalk é s0s3eg3.

Uso

  • Caso você não especifique explicitamente um nome de índice, o sistema gera um por padrão. O formato do nome gerado é TableName_idx_${auto-incremented ID}.

  • Com uma expressão de índice, atualmente é possível criar apenas índices secundários e índices de pesquisa.

  • Inclusão padrão de colunas para índices secundários:

    Lindorm SQL 2.9.3.10 e posteriores

    Se você não especificar uma cláusula INCLUDE ao criar um índice secundário, todas as outras colunas não serão incluídas no índice por padrão.

    Versões do Lindorm SQL anteriores à 2.9.3.10

    Se você não especificar uma cláusula INCLUDE ao criar um índice secundário, todas as outras colunas serão incluídas no índice por padrão.

    Nota

    Isso equivale a definir o atributo de índice INDEX_COVERED_TYPE como COVERED_ALL_COLUMNS_IN_SCHEMA. Se a tabela for dinâmica, isso equivale a definir o atributo como COVERED_DYNAMIC_COLUMNS.

  • Se você especificar uma cláusula KEY ou INDEX ao criar uma tabela, mas não especificar explicitamente os atributos MUTABILITY e CONSISTENCY, a tabela será criada com os seguintes atributos padrão: CONSISTENCY = 'strong' e MUTABILITY='MUTABLE_LATEST'.

  • Se a instrução CREATE TABLE incluir uma expressão de índice, o sistema cria primeiro a tabela e depois o índice. Caso ocorra uma exceção durante a criação do índice, a tabela e o índice podem permanecer e não são limpos automaticamente. É possível usar instruções como SHOW e DESCRIBE para visualizá-los, mas talvez não seja possível gravar dados ou consultar a tabela e o índice. Recomendamos excluir a tabela e o índice restantes e recriá-los.

Partição (partition_definition)

Partições são suportadas apenas pelo LindormTSDB. Em uma tabela de séries temporais, a coluna usada na cláusula PARTITION BY deve ser uma coluna de chave primária VARCHAR.

Use PARTITION BY HASH(column1, column2, ..., columnN) para especificar uma ou mais colunas para particionamento por hash. Por exemplo: PARTITION BY HASH(c1, p1).

Atributos da tabela (table_options)

Apenas o LindormTable suporta atributos de tabela. Use a palavra-chave WITH para adicionar os seguintes atributos:

Opção

Tipo

Descrição

COMPRESSION

STRING

Algoritmo de compressão para a tabela. Valores válidos:

  • SNAPPY

  • ZSTD

  • LZ4

Nota

Em versões do LindormTable anteriores à 2.3.4, nenhum algoritmo de compressão é especificado por padrão. No LindormTable 2.3.4 e posteriores, o algoritmo ZSTD é usado por padrão.

TTL

INT

Tempo de vida (TTL) dos dados, em segundos (s).

Nota
  • Por padrão, este atributo não é definido, o que significa que os dados não expiram.

  • Adicione TTL=<time> à instrução para definir um TTL para a tabela, ou defina TTL como uma string vazia para remover o TTL. Para exemplos de uso, consulte Exemplos.

COMPACTION_MAJOR_PERIOD

LONG

Intervalo no qual o sistema executa uma major compaction, em milissegundos (ms). Para exemplos de uso, consulte Especificar o intervalo de major compaction.

Nota

Valor padrão: Math.Min(TTL, 1.728.000.000 ms). Se você não definir um TTL, o valor padrão será de 20 dias (20 × 24 × 60 × 60 × 1.000 = 1.728.000.000 ms).

MUTABILITY

STRING

Modo de gravação para a tabela base. Este atributo afeta o comportamento de indexação. Valor padrão: MUTABLE_LATEST.

Valores válidos:

  • IMMUTABLE

  • IMMUTABLE_ROWS

  • MUTABLE_LATEST

  • MUTABLE_ALL

  • MUTABLE_UDT

Para mais informações sobre os valores, consulte Índices secundários nativos de alto desempenho.

Importante

Depois que um índice é criado, não é possível modificar o atributo MUTABILITY. Para alterar esse atributo, você deve primeiro excluir todos os índices da tabela. Faça backup dos seus dados antes de realizar esta operação para evitar perda de dados.

CONSISTENCY

STRING

Nível de consistência da tabela. Para instâncias multizona, especifica a consistência de dados entre réplicas primárias e secundárias. Valores válidos:

  • eventual: nível de consistência eventual. Este é o valor padrão para tabelas criadas sem uma expressão de índice.

  • strong: nível de consistência forte.

Importante

Para instâncias multizona, se sua carga de trabalho envolver operações de leitura-modificação-gravação, como incremento, anexação ou atualizações de índice, você deve definir o atributo CONSISTENCY da tabela primária como strong para garantir a consistência dos dados entre as réplicas.

NUMREGIONS

INT

Número de regiões pré-divididas para a tabela.

CHS

INT

Limite que separa dados quentes e frios, em segundos.

Nota
  • Para definir esse limite, você deve ativar o recurso de armazenamento frio. Para obter uma visão geral e instruções sobre como ativá-lo, consulte Separação de dados quentes e frios.

  • Ao definir este atributo, você também deve definir CHS_L2='storagetype=COLD'.

STARTKEY e ENDKEY

O mesmo tipo de dado da primeira coluna na chave primária.

Chave inicial e chave final para pré-dividir as regiões da tabela.

Nota
  • Se você especificar STARTKEY e ENDKEY, também deverá especificar NUMREGIONS. Se STARTKEY e ENDKEY forem especificados sem NUMREGIONS, eles serão ignorados.

  • Os valores literais de string especificados para STARTKEY e ENDKEY são convertidos implicitamente para o tipo de dado da primeira coluna na chave primária e usados como chaves iniciais e finais para as partições. Este recurso suporta apenas os seguintes tipos de dados:

    • SMALLINT

    • INTEGER

    • BIGINT

    • CHAR

    • VARCHAR

    • FLOAT

    • DOUBLE

SPLITKEYS

O mesmo tipo de dado da primeira coluna na chave primária.

Chaves iniciais para todas as regiões pré-divididas da tabela.

Nota
  • O atributo SPLITKEYS é suportado no LindormTable 2.5.4 e posteriores.

  • Em um valor SPLITKEYS baseado em string, use vírgulas (,) para separar as chaves iniciais das regiões pré-divididas. Vírgulas entre aspas duplas ("") são tratadas como caracteres comuns.

  • O atributo SPLITKEYS não pode ser usado com os atributos NUMREGIONS, STARTKEY ou ENDKEY.

  • Assim como em STARTKEY e ENDKEY, os valores literais de string especificados são convertidos implicitamente para o tipo de dado da primeira coluna na chave primária e usados como chaves iniciais para as partições. Este recurso suporta apenas os seguintes tipos de dados:

    • SMALLINT

    • INTEGER

    • BIGINT

    • CHAR

    • VARCHAR

    • FLOAT

    • DOUBLE

SPLITALGO

STRING

Define o algoritmo de divisão para pré-particionamento. Os algoritmos suportados são:

  • HexStringSplit: divide a chave primária com base em bytes hexadecimais.

  • UniformSplit: divide uniformemente a chave primária com base nos valores originais de bytes.

DYNAMIC_COLUMNS

STRING

Se deve ativar colunas dinâmicas. Valores válidos:

  • True: ativa colunas dinâmicas.

  • False: desativa colunas dinâmicas. Este é o valor padrão.

Nota

Colunas dinâmicas suportam apenas o tipo de dado Varbinary. Para mais informações sobre colunas dinâmicas, consulte Colunas dinâmicas.

VERSIONS

STRING

Número de versões a serem retidas para cada valor de coluna. Deve ser um número inteiro maior ou igual a 1. Padrão: 1. Para mais informações sobre versionamento de dados, consulte Versionamento de dados.

Importante

Um valor alto para o atributo VERSIONS pode degradar o desempenho de consulta e armazenamento. Recomendamos definir este valor como 1.

BLOB_BUCKET_NAME

STRING

Nome do bucket para colunas BLOB na tabela.

O nome do bucket deve seguir estas regras:

  • Pode conter apenas letras minúsculas, dígitos, pontos (.) e hifens (-).

  • Deve ter entre 3 e 63 caracteres.

  • Não pode começar ou terminar com um hífen (-).

  • Não pode conter pontos consecutivos (.).

Nota
  • O atributo BLOB_BUCKET_NAME é suportado no LindormTable 2.6.4 e posteriores.

  • Se você não especificar uma coluna BLOB ao criar uma tabela, mas definir o atributo BLOB_BUCKET_NAME, o sistema não verificará a validade do nome do bucket.

Nota

Versões do LindormTable anteriores à 2.2.16 não suportam a palavra-chave WITH para definir atributos de tabela. Você deve colocar a palavra-chave do atributo entre aspas simples ('). Os valores dos atributos são definidos com base em seu tipo de dado; por exemplo, valores STRING devem ser colocados entre aspas simples ('). Exemplo: CREATE TABLE IF NOT EXISTS t1(c1 varchar, c2 bigint, c3 int, c4 int, PRIMARY KEY(c1,c2)) 'CONSISTENCY'='strong';.

Exemplos

Criar uma tabela

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
);

Verificação

Execute a instrução DESCRIBE table sensor; para verificar se a tabela foi criada.

Criar uma tabela com índice

Crie um índice secundário junto com a tabela.

CREATE TABLE IF NOT EXISTS sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time),
    KEY (temperature, time)
);

Verificação

Execute DESCRIBE table sensor; para verificar se a tabela foi criada e execute SHOW INDEX FROM sensor; para verificar se o índice secundário foi criado.

Especificar TTL e algoritmo de compressão

Crie uma tabela larga com TTL de 30 dias (2.592.000 segundos) e compressão ZSTD.

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
) WITH (COMPRESSION='ZSTD', TTL='2592000');

Verificação

  • Execute a instrução DESCRIBE table sensor; para verificar se a tabela foi criada.

  • Acesse a página Overview no sistema de gerenciamento de cluster e clique em current table details, clique em view table properties para verificar os parâmetros COMPRESSION e TTL.

Especificar o intervalo de major compaction

Crie uma tabela larga com intervalo de major compaction de 10 dias (864.000.000 milissegundos).

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
) WITH (COMPACTION_MAJOR_PERIOD='864000000');

Verificação

  • Execute a instrução DESCRIBE table sensor; para verificar se a tabela foi criada.

  • Acesse a página Overview no sistema de gerenciamento de cluster e clique em current table details, clique em view table properties para verificar o valor do parâmetro COMPACTION_MAJOR_PERIOD.

Ativar colunas dinâmicas

Para gravar dados em colunas dinâmicas, defina DYNAMIC_COLUMNS como TRUE.

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
) WITH (DYNAMIC_COLUMNS='TRUE');

Verificação

  • Execute a instrução DESCRIBE table sensor; para verificar se a tabela foi criada.

  • Acesse a página Overview no sistema de gerenciamento de cluster e clique em current table details, clique em view table properties para verificar o valor do parâmetro DYNAMIC_COLUMNS.

Especificar o limite de dados quentes e frios

Crie uma tabela larga com limite de dados quentes e frios para arquivamento de dados.

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
) WITH (CHS = '86400', CHS_L2 = 'storagetype=COLD');

Verificação

  • Execute a instrução DESCRIBE table sensor; para verificar se a tabela foi criada.

  • Acesse a página Overview no sistema de gerenciamento de cluster e clique em current table details, clique em view table properties para verificar os parâmetros CHS e CHS_L2.

Definir vários atributos simultaneamente

Crie uma tabela larga com compressão, TTL e limite de dados quentes e frios.

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
) WITH (
    COMPRESSION='ZSTD', 
    CHS = '86400', 
    CHS_L2 = 'storagetype=COLD', 
    TTL = '2592000');

Verificação

  • Execute a instrução DESCRIBE table sensor; para verificar se a tabela foi criada.

  • Acesse a página Overview no sistema de gerenciamento de cluster e clique em current table details, clique em view table properties para verificar os parâmetros COMPRESSION, CHS, CHS_L2 e TTL.

Configurar partições

Crie uma tabela larga pré-dividida em cinco partições, com chave inicial 1000 e chave final 9000.

CREATE TABLE sensor (
  p1 INTEGER NOT NULL, 
  c1 INTEGER, 
  c2 VARCHAR, 
  c3 VARCHAR,
  PRIMARY KEY(p1)
) WITH (NUMREGIONS='5', STARTKEY='1000', ENDKEY='9000');

Verificação

  • Execute a instrução DESCRIBE table sensor; para verificar se a tabela foi criada.

  • Acesse a página Overview no sistema de gerenciamento de cluster e clique em Shard information, verifique os parâmetros startKey e endKey de cada partição.

Definir chaves iniciais para múltiplas partições

Exemplos de código

  • Especifique partições por chaves numéricas (com base na sua distribuição de dados)

    Crie uma tabela larga com chaves iniciais predefinidas para cinco partições, resultando em seis partições pré-divididas.

    CREATE TABLE sensor (
      p1 INT NOT NULL,
      p2 INT NOT NULL,
      c1 VARCHAR,
      c2 BIGINT,
      PRIMARY KEY(p1, p2)
    ) WITH (SPLITKEYS = '100000,300000,500000,700000,900000');
  • Especifique partições por chaves de string (com base na sua distribuição de dados)

    CREATE TABLE your_table (
        address VARCHAR NOT NULL,
        col1 VARCHAR,
        PRIMARY KEY (address)
    ) WITH (
        SPLITKEYS = '0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff'
    );
  • Especifique um algoritmo de divisão

    CREATE TABLE your_table2 (
        address VARCHAR NOT NULL,
        col1 VARCHAR,
        PRIMARY KEY (address)
    ) WITH (
        NUMREGIONS = 256,
        SPLITALGO = 'HexStringSplit'
    );

Verificação

  • Execute a instrução DESCRIBE table sensor; para verificar se a tabela foi criada.

  • Acesse a página Overview no sistema de gerenciamento de cluster e clique em Shard information, verifique os parâmetros startKey e endKey de cada partição.

Especificar explicitamente uma coluna de chave de partição

Como a maioria das consultas recupera dados instantâneos de um único dispositivo, especifique device_id como a coluna de chave de partição.

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
) PARTITION BY HASH(device_id);

Verificação

Execute a instrução DESCRIBE TABLE sensor; para verificar se a tabela foi criada.

Criar uma tabela geoespacial

  • Crie uma tabela que suporte o tipo de dado espacial genérico Geometry, permitindo gravar qualquer tipo de dado espacial.

    CREATE TABLE geoms(gid INT, g GEOMETRY, PRIMARY KEY(gid));

    Grave dados de qualquer tipo espacial.

    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))'));
  • Crie uma tabela para o tipo de dado Point. Apenas dados de ponto podem ser gravados nesta tabela.

    CREATE TABLE pts(gid INT, g GEOMETRY(POINT), PRIMARY KEY(gid));

    Grave dados de ponto.

    UPSERT INTO pts(gid, g) VALUES(0, ST_MakePoint(0,0)),(1, ST_MakePoint(1,1));
  • Crie uma tabela para o tipo de dado Polygon. Apenas dados de polígono podem ser gravados nesta tabela.

    CREATE TABLE polys(gid INT, g GEOMETRY(POLYGON), PRIMARY KEY(gid));

    Grave dados de polígono.

    UPSERT INTO polys(gid,g) VALUES(0,ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))'));
  • Crie uma tabela para o tipo de dado LineString. Apenas dados de linha podem ser gravados nesta tabela.

    CREATE TABLE lines(gid INT, g GEOMETRY(LINESTRING), PRIMARY KEY(gid));

    Grave dados de linha.

    UPSERT INTO lines(gid,g) VALUES(0, ST_GeomFromText('LINESTRING(-12.2 4.3, -10.2 4.3)'));
  • Crie uma tabela para o tipo de dado MULTIPOINT. Apenas dados de multiponto podem ser gravados nesta tabela.

    CREATE TABLE multipoints(gid INT, g GEOMETRY(MULTIPOINT), PRIMARY KEY(gid));

    Grave dados de multiponto.

    UPSERT INTO multipoints(gid,g) VALUES(0, ST_GeomFromText('MULTIPOINT (10 40, 40 30, 20 20, 30 10)'));
  • Crie uma tabela para o tipo de dado MULTILINESTRING. Apenas dados de multilinestring podem ser gravados nesta tabela.

    CREATE TABLE multilines(gid INT, g GEOMETRY(MULTILINESTRING), PRIMARY KEY(gid));

    Grave dados de multilinestring.

    UPSERT INTO multilines(gid,g) VALUES(0, ST_GeomFromText('MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))'));
  • Crie uma tabela para o tipo de dado MULTIPOLYGON. Apenas dados de multipolígono podem ser gravados nesta tabela.

    CREATE TABLE multipolys(gid INT, g GEOMETRY(MULTIPOLYGON), PRIMARY KEY(gid));

    Grave dados de multipolígono.

    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)))'));
  • Crie uma tabela para o tipo de dado GEOMETRYCOLLECTION. Apenas dados de coleção de geometrias podem ser gravados nesta tabela.

    CREATE TABLE collections(gid INT, g GEOMETRY(GEOMETRYCOLLECTION), PRIMARY KEY(gid));

    Grave dados de coleção de geometrias.

    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)))'));
  • Crie uma tabela com várias colunas do tipo Geometry.

    CREATE TABLE mix(gid INT, pt GEOMETRY(POINT), ply GEOMETRY(POLYGON), PRIMARY KEY(gid));