Tous les produits
Search
Centre de documentation

Lindorm:CREATE TABLE

Dernière mise à jour :Aug 11, 2026

L'instruction CREATE TABLE crée des tables dans LindormTable ou LindormTSDB. Elle prend en charge des types de données tels que VARCHAR, TIMESTAMP et BIGINT, ainsi que des attributs de table comme TTL et COMPRESSION, afin de s'adapter à divers scénarios métier.

Moteur et version

Syntaxe

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 

Différences de syntaxe

La syntaxe CREATE TABLE diffère entre LindormTable et LindormTSDB. Le tableau suivant compare les paramètres pris en charge par chaque moteur.

|
**Paramètre**
|
**LindormTable**
|
**LindormTSDB**
| | --- | --- | --- | |
[Nom de la table (table_identifier)](#172c903d5220c)
|
0
|
0
| |
[Définition de colonne (column_definition)](#f78c0c7a2c5h6)
|
0
|
0
| |
[Clé primaire (primary_key)](#b5e20271780xm)
|
0
|
0
| |
[Expression d'index (KEY\|INDEX)](#bb9b8e1047cvt)
|
0
|
✖️
| |
[Partition (partition_definition)](#1f67a529f46i4)
|
✖️
|
0
| |
[Attributs de table (table_options)](#b5e20273788rv)
|
0
|
✖️
|









































Utilisation

Nom de la table (table_identifier)

Le nom de la table doit respecter les exigences suivantes :

  • Le nom peut contenir des chiffres, des lettres majuscules et minuscules, des points (.), des traits d'union (-) et des underscores (_).

  • Le nom ne peut pas commencer par un point (.) ou un trait d'union (-).

  • La longueur du nom doit être comprise entre 1 et 255 caractères.

Définition de colonne (column_definition)

Syntaxe

Obligatoire

Description

nom de colonne (column_identifier)

Oui

  • Le nom peut contenir des chiffres, des lettres majuscules et minuscules, des points (.), des traits d'union (-) et des underscores (_).

  • N'utilisez pas de mots-clés réservés par le système comme noms de colonnes.

  • La longueur du nom ne doit pas dépasser 255 octets.

type de données (data_type)

Oui

Pour plus d'informations sur les types de données pris en charge, consultez les Types de données.

Important

Lors de la création d'une table de séries temporelles, tenez compte des points suivants si vous utilisez le type de données TIMESTAMP :

  • Vous ne pouvez spécifier qu'une seule colonne TIMESTAMP.

  • LindormTSDB encode et analyse les horodatages selon l'heure normale de Chine (UTC+8).

  • Certains systèmes hérités traitent les horodatages UNIX 32 bits. Avant d'écrire ces horodatages dans LindormTSDB, multipliez-les par 1 000 pour éviter les incohérences sémantiques. Par exemple, un horodatage de 1641009600 est interprété comme 2022-01-01 12:00:00 dans un système hérité, mais LindormTSDB l'interprète comme 1970-01-20 07:50:09 (UTC+8) .

Contrainte NULL

Non

Indique si la colonne autorise les valeurs NULL.

Important

Lindorm SQL ne valide pas cette contrainte. Le moteur de stockage effectue la validation.

La validation de la contrainte NULL dépend des règles du moteur de stockage, qui varient. Par conséquent, il se peut que vous puissiez écrire des valeurs NULL dans une colonne même si elle est définie avec NOT NULL.

Pour garantir que les données sont écrites comme prévu, respectez les exigences suivantes :

  • Une colonne de clé primaire ne peut pas être NULL. Spécifiez NOT NULL pour toutes les colonnes de clé primaire lors de la création d'une table.

  • Ne spécifiez pas NOT NULL pour les colonnes autres que les clés primaires.

Clé primaire (primary_key)

Une clé primaire identifie de manière unique les données d'une table et se compose d'une ou plusieurs colonnes. Vous devez spécifier une clé primaire (PRIMARY KEY) lors de la création d'une table.

Important

La clé primaire ne peut pas être modifiée après sa création. Concevez votre clé primaire avec soin.

Lorsque vous utilisez l'instruction CREATE TABLE pour créer une table, tenez compte des éléments suivants :

Type de moteur

Description

LindormTable

  • La longueur maximale d'une seule colonne de clé primaire est de 2 Ko.

  • La longueur totale de toutes les colonnes de clé primaire ne peut pas dépasser 30 Ko.

  • La longueur maximale d'une seule colonne autre que la clé primaire ne peut pas dépasser 2 Mo.

LindormTSDB

  • Dans la clé primaire d'une table de séries temporelles, une colonne VARCHAR est appelée une colonne TAG, et une colonne TIMESTAMP est appelée une colonne d'horodatage.

  • Les colonnes de clé primaire doivent être de type de données VARCHAR ou TIMESTAMP.

  • La clé primaire peut contenir une ou plusieurs colonnes VARCHAR, mais une seule colonne TIMESTAMP.

  • Utilisez un identifiant unique de la source de données comme clé primaire pour une table de séries temporelles. Voici quelques exemples : les ID d'appareil dans les scénarios IoT, les numéros d'identification de véhicule (VIN) dans les scénarios IoV (Internet of Vehicles), et les ID d'application ou les chaînes ip:port dans les scénarios de surveillance. Pour plus d'informations, consultez les Bonnes pratiques pour la conception d'une clé primaire.

Expression d'index (KEY|INDEX)

Utilisez le mot-clé KEY ou INDEX dans une instruction CREATE TABLE pour créer un index en même temps que la table.

Important
  • L'expression d'index (KEY|INDEX) est prise en charge uniquement dans LindormTable 2.7.7 et versions ultérieures, ainsi que dans Lindorm SQL 2.8.6.0 et versions ultérieures.

  • Pour vérifier les versions de LindormTable et Lindorm SQL, consultez les Notes de version de LindormTable et les Notes de version SQL. Si vous ne pouvez pas effectuer la mise à niveau vers les versions requises depuis la console, contactez le support technique Lindorm. L'ID DingTalk est s0s3eg3.

Utilisation

  • Si vous ne spécifiez pas explicitement un nom d'index, le système en génère un par défaut. Le format du nom d'index généré est TableName_idx_${auto-incremented ID}.

  • À l'aide d'une expression d'index, vous pouvez actuellement créer uniquement des index secondaires et index de recherche.

  • Inclusion de colonnes par défaut pour les index secondaires :

    Lindorm SQL 2.9.3.10 et versions ultérieures

    Si vous ne spécifiez pas de clause INCLUDE lors de la création d'un index secondaire, toutes les autres colonnes ne sont pas incluses dans l'index par défaut.

    Lindorm SQL versions antérieures à 2.9.3.10

    Si vous ne spécifiez pas de clause INCLUDE lors de la création d'un index secondaire, toutes les autres colonnes sont incluses dans l'index par défaut.

    Remarque

    Cela équivaut à définir l'attribut d'index INDEX_COVERED_TYPE sur COVERED_ALL_COLUMNS_IN_SCHEMA. Si la table est une table dynamique, cela équivaut à définir l'attribut sur COVERED_DYNAMIC_COLUMNS.

  • Si vous spécifiez une clause KEY ou INDEX lors de la création d'une table mais ne spécifiez pas explicitement les attributs MUTABILITY et CONSISTENCY, la table est créée avec les attributs par défaut suivants : CONSISTENCY = 'strong' et MUTABILITY='MUTABLE_LATEST'.

  • Si l'instruction CREATE TABLE inclut une expression d'index, le système crée d'abord la table, puis l'index. Si une exception se produit lors de la création de l'index, la table et l'index peuvent subsister et ne sont pas automatiquement supprimés. Vous pouvez utiliser des instructions telles que SHOW et DESCRIBE pour les afficher, mais il se peut que vous ne puissiez ni écrire des données ni interroger la table et l'index. Nous vous recommandons de supprimer la table et l'index restants, puis de les recréer.

Partition (partition_definition)

Les partitions sont prises en charge uniquement par LindormTSDB. Dans une table de séries temporelles, la colonne utilisée dans la clause PARTITION BY doit être une colonne de clé primaire VARCHAR.

Utilisez PARTITION BY HASH(column1, column2, ..., columnN) pour spécifier une ou plusieurs colonnes pour le hachage de partition. Par exemple : PARTITION BY HASH(c1, p1).

Attributs de table (table_options)

Seul LindormTable prend en charge les attributs de table. Vous pouvez utiliser le mot-clé WITH pour ajouter les attributs de table suivants :

Option

Type

Description

COMPRESSION

STRING

Algorithme de compression pour la table. Valeurs valides :

  • SNAPPY

  • ZSTD

  • LZ4

Remarque

Dans les versions de LindormTable antérieures à 2.3.4, aucun algorithme de compression n'est spécifié par défaut. Dans LindormTable 2.3.4 et versions ultérieures, l'algorithme ZSTD est utilisé par défaut.

TTL

INT

Durée de vie (TTL) des données, en secondes (s).

Remarque
  • Par défaut, cet attribut n'est pas défini, ce qui signifie que les données n'expirent pas.

  • Ajoutez TTL=<time> à l'instruction pour définir une durée de vie pour la table, ou définissez TTL sur une chaîne vide pour supprimer la durée de vie. Pour des exemples d'utilisation, consultez les Exemples.

COMPACTION_MAJOR_PERIOD

LONG

Intervalle auquel le système effectue une major compaction, en millisecondes (ms). Pour des exemples d'utilisation, consultez la section Spécifier l'intervalle de major compaction.

Remarque

Valeur par défaut : Math.Min(TTL, 1 728 000 000 ms). Si vous ne définissez pas de TTL, la valeur par défaut est de 20 jours (20 × 24 × 60 × 60 × 1 000 = 1 728 000 000 ms).

MUTABILITY

STRING

Mode d'écriture pour la table de base. Cet attribut affecte le comportement d'indexation. Valeur par défaut : MUTABLE_LATEST.

Valeurs valides :

  • IMMUTABLE

  • IMMUTABLE_ROWS

  • MUTABLE_LATEST

  • MUTABLE_ALL

  • MUTABLE_UDT

Pour plus d'informations sur les valeurs, consultez les Index secondaires natifs haute performance.

Important

Une fois qu'un index est créé, vous ne pouvez pas modifier l'attribut MUTABILITY. Pour changer cet attribut, vous devez d'abord supprimer tous les index de la table. Sauvegardez vos données avant d'effectuer cette opération pour éviter toute perte de données.

CONSISTENCY

STRING

Niveau de cohérence de la table. Pour les instances inter-zones, spécifie la cohérence des données entre les réplicas principaux et secondaires. Valeurs valides :

  • eventual : niveau de cohérence à terme. Il s'agit de la valeur par défaut pour les tables créées sans expression d'index.

  • strong : niveau de cohérence forte.

Important

Pour les instances inter-zones, si votre charge de travail implique des opérations de lecture-modification-écriture telles que l'incrémentation, l'ajout ou les mises à jour d'index, vous devez définir l'attribut CONSISTENCY de la table principale sur strong pour garantir la cohérence des données entre les réplicas.

NUMREGIONS

INT

Nombre de régions pré-découpées pour la table.

CHS

INT

Limite séparant les données chaudes et froides, en secondes.

Remarque
  • Pour définir cette limite, vous devez activer la fonctionnalité de stockage froid. Pour une vue d'ensemble et des instructions sur son activation, consultez la section Séparation des données chaudes et froides.

  • Lorsque vous définissez cet attribut, vous devez également définir CHS_L2='storagetype=COLD'.

STARTKEY et ENDKEY

Même type de données que la première colonne de la clé primaire.

Clé de début et clé de fin pour le pré-découpage des régions de la table.

Remarque
  • Si vous spécifiez STARTKEY et ENDKEY, vous devez également spécifier NUMREGIONS. Si vous spécifiez STARTKEY et ENDKEY sans NUMREGIONS, ils sont ignorés.

  • Les valeurs littérales de chaîne spécifiées pour STARTKEY et ENDKEY sont implicitement converties au type de données de la première colonne de la clé primaire et utilisées comme clés de début et de fin pour les partitions. Cette fonctionnalité prend en charge uniquement les types de données suivants :

    • SMALLINT

    • INTEGER

    • BIGINT

    • CHAR

    • VARCHAR

    • FLOAT

    • DOUBLE

SPLITKEYS

Même type de données que la première colonne de la clé primaire.

Clés de début pour toutes les régions pré-découpées de la table.

Remarque
  • L'attribut SPLITKEYS est pris en charge dans LindormTable 2.5.4 et versions ultérieures.

  • Dans une valeur SPLITKEYS basée sur une chaîne, utilisez des virgules (,) pour séparer les clés de début des régions pré-découpées. Les virgules entre guillemets doubles ("") sont traitées comme des caractères normaux.

  • L'attribut SPLITKEYS ne peut pas être utilisé avec les attributs NUMREGIONS, STARTKEY ou ENDKEY.

  • Comme pour STARTKEY et ENDKEY, les valeurs littérales de chaîne spécifiées sont implicitement converties au type de données de la première colonne de la clé primaire et utilisées comme clés de début pour les partitions. Cette fonctionnalité prend en charge uniquement les types de données suivants :

    • SMALLINT

    • INTEGER

    • BIGINT

    • CHAR

    • VARCHAR

    • FLOAT

    • DOUBLE

SPLITALGO

STRING

Définit l'algorithme de découpage pour le pré-partitionnement. Les algorithmes pris en charge sont :

  • HexStringSplit : découpe la clé primaire en fonction des octets hexadécimaux.

  • UniformSplit : découpe uniformément la clé primaire en fonction des valeurs d'octets d'origine.

DYNAMIC_COLUMNS

STRING

Indique s'il faut activer les colonnes dynamiques. Valeurs valides :

  • True : active les colonnes dynamiques.

  • False : désactive les colonnes dynamiques. Il s'agit de la valeur par défaut.

Remarque

Les colonnes dynamiques prennent en charge uniquement le type de données Varbinary. Pour plus d'informations sur les colonnes dynamiques, consultez la section Colonnes dynamiques.

VERSIONS

STRING

Nombre de versions à conserver pour chaque valeur de colonne. Doit être un entier supérieur ou égal à 1. Valeur par défaut : 1. Pour plus d'informations sur le versioning des données, consultez la section Versioning des données.

Important

Une valeur élevée pour l'attribut VERSIONS peut dégrader les performances des requêtes et du stockage. Nous vous recommandons de définir cette valeur sur 1.

BLOB_BUCKET_NAME

STRING

Nom du bucket pour les colonnes BLOB dans la table.

Le nom du bucket doit respecter les règles suivantes :

  • Il ne peut contenir que des lettres minuscules, des chiffres, des points (.) et des traits d'union (-).

  • Sa longueur doit être comprise entre 3 et 63 caractères.

  • Il ne peut pas commencer ou se terminer par un trait d'union (-).

  • Il ne peut pas contenir de points (.) consécutifs.

Remarque
  • L'attribut BLOB_BUCKET_NAME est pris en charge dans LindormTable 2.6.4 et versions ultérieures.

  • Si vous ne spécifiez pas de colonne BLOB lors de la création d'une table mais que vous définissez l'attribut BLOB_BUCKET_NAME, le système ne vérifie pas la validité du nom du bucket.

Remarque

Les versions de LindormTable antérieures à 2.2.16 ne prennent pas en charge le mot-clé WITH pour définir les attributs de table. Placez le mot-clé d'attribut entre guillemets simples ('). Les valeurs d'attribut sont définies en fonction de leur type de données ; par exemple, les valeurs STRING doivent être placées entre guillemets simples ('). Par exemple : CREATE TABLE IF NOT EXISTS t1(c1 varchar, c2 bigint, c3 int, c4 int, PRIMARY KEY(c1,c2)) 'CONSISTENCY'='strong';.

Exemples

Créer une table

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)
);

Vérification

Exécutez l'instruction DESCRIBE table sensor; pour vérifier que la table a été créée.

Créer une table avec un index

Créez un index secondaire en même temps que la table.

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)
);

Vérification

Exécutez DESCRIBE table sensor; pour vérifier que la table a été créée, et exécutez SHOW INDEX FROM sensor; pour vérifier que l'index secondaire a été créé.

Spécifier la durée de vie (TTL) et l'algorithme de compression

Créez une table large avec une durée de vie (TTL) de 30 jours (2 592 000 secondes) et une compression 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');

Vérification

  • Exécutez l'instruction DESCRIBE table sensor; pour vérifier que la table a été créée.

  • Accédez à la page Overview dans le système de gestion de cluster et cliquez sur le nom de la table cible. Dans la zone current table details, cliquez sur view table properties pour vérifier les paramètres COMPRESSION et TTL.

Spécifier l'intervalle de major compaction

Créez une table large avec un intervalle de major compaction de 10 jours (864 000 000 millisecondes).

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');

Vérification

  • Exécutez l'instruction DESCRIBE table sensor; pour vérifier que la table a été créée.

  • Accédez à la page Overview dans le système de gestion de cluster et cliquez sur le nom de la table cible. Dans la zone current table details, cliquez sur view table properties pour vérifier la valeur du paramètre COMPACTION_MAJOR_PERIOD.

Activer les colonnes dynamiques

Pour écrire des données dans des colonnes dynamiques, définissez DYNAMIC_COLUMNS sur 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');

Vérification

  • Exécutez l'instruction DESCRIBE table sensor; pour vérifier que la table a été créée.

  • Accédez à la page Overview dans le système de gestion de cluster et cliquez sur le nom de la table cible. Dans la zone current table details, cliquez sur view table properties pour vérifier la valeur du paramètre DYNAMIC_COLUMNS.

Spécifier la limite entre données chaudes et froides

Créez une table large avec une limite de données chaudes/froides pour l'archivage des données.

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');

Vérification

  • Exécutez l'instruction DESCRIBE table sensor; pour vérifier que la table a été créée.

  • Accédez à la page Overview dans le système de gestion de cluster et cliquez sur le nom de la table cible. Dans la zone current table details, cliquez sur view table properties pour vérifier les paramètres CHS et CHS_L2.

Définir plusieurs attributs à la fois

Créez une table large avec compression, durée de vie (TTL) et une limite de données chaudes/froides.

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');

Vérification

  • Exécutez l'instruction DESCRIBE table sensor; pour vérifier que la table a été créée.

  • Accédez à la page Overview dans le système de gestion de cluster et cliquez sur le nom de la table cible. Dans la zone current table details, cliquez sur view table properties pour vérifier les paramètres COMPRESSION, CHS, CHS_L2 et TTL.

Configurer les partitions

Créez une table large pré-découpée en cinq partitions, avec une clé de début 1000 et une clé de fin 9000.

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

Vérification

  • Exécutez l'instruction DESCRIBE table sensor; pour vérifier que la table a été créée.

  • Accédez à la page Overview dans le système de gestion de cluster et cliquez sur le nom de la table cible. Dans la zone Shard information, vérifiez les paramètres startKey et endKey pour chaque partition.

Définir les clés de début pour plusieurs partitions

Exemples de code

  • Spécifier les partitions par des clés numériques (en fonction de la distribution de vos données)

    Créez une table large avec des clés de début prédéfinies pour cinq partitions, ce qui donne six partitions pré-découpées.

    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');
  • Spécifier les partitions par des clés de chaîne (en fonction de la distribution de vos données)

    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'
    );
  • Spécifier un algorithme de découpage

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

Vérification

  • Exécutez l'instruction DESCRIBE table sensor; pour vérifier que la table a été créée.

  • Accédez à la page Overview dans le système de gestion de cluster et cliquez sur le nom de la table cible. Dans la zone Shard information, vérifiez les paramètres startKey et endKey pour chaque partition.

Spécifier explicitement une colonne de clé de partition

Étant donné que la plupart des requêtes récupèrent des données instantanées pour un seul appareil, spécifiez device_id comme colonne de clé de partition.

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);

Vérification

Exécutez l'instruction DESCRIBE TABLE sensor; pour vérifier que la table a été créée.

Créer une table géospatiale

  • Créez une table prenant en charge le type de données spatiales générique Geometry, ce qui vous permet d'écrire n'importe quel type de données spatiales.

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

    Écrivez des données de n'importe quel type de données spatiales.

    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))'));
  • Créez une table pour le type de données Point. Seules les données de type point peuvent être écrites dans cette table.

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

    Écrivez des données de type point.

    UPSERT INTO pts(gid, g) VALUES(0, ST_MakePoint(0,0)),(1, ST_MakePoint(1,1));
  • Créez une table pour le type de données Polygon. Seules les données de type polygone peuvent être écrites dans cette table.

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

    Écrivez des données de type polygone.

    UPSERT INTO polys(gid,g) VALUES(0,ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))'));
  • Créez une table pour le type de données LineString. Seules les données de type ligne peuvent être écrites dans cette table.

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

    Écrivez des données de type ligne.

    UPSERT INTO lines(gid,g) VALUES(0, ST_GeomFromText('LINESTRING(-12.2 4.3, -10.2 4.3)'));
  • Créez une table pour le type de données MULTIPOINT. Seules les données multipoints peuvent être écrites dans cette table.

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

    Écrivez des données multipoints.

    UPSERT INTO multipoints(gid,g) VALUES(0, ST_GeomFromText('MULTIPOINT (10 40, 40 30, 20 20, 30 10)'));
  • Créez une table pour le type de données MULTILINESTRING. Seules les données multilignes peuvent être écrites dans cette table.

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

    Écrivez des données multilignes.

    UPSERT INTO multilines(gid,g) VALUES(0, ST_GeomFromText('MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))'));
  • Créez une table pour le type de données MULTIPOLYGON. Seules les données multipolygones peuvent être écrites dans cette table.

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

    Écrivez des données multipolygones.

    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)))'));
  • Créez une table pour le type de données GEOMETRYCOLLECTION. Seules les données de collection géométrique peuvent être écrites dans cette table.

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

    Écrivez des données de collection géométrique.

    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)))'));
  • Créez une table avec plusieurs colonnes de type Geometry.

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