Tous les produits
Search
Centre de documentation

Tablestore:Create a table

Dernière mise à jour :Aug 20, 2026

Créez une table de modèle Wide Column à l'aide du SDK Tablestore pour Java et configurez son schéma, ses versions de données, ses index, Stream et le chiffrement dans la même requête.

Prérequis

Installez le SDK Tablestore pour Java et initialisez le client.

Description

Appelez createTable pour créer une table de modèle Wide Column. La requête doit contenir au moins une colonne de clé primaire et spécifier la durée de vie (TTL) ainsi que le nombre maximal de versions.

public CreateTableResponse createTable(CreateTableRequest createTableRequest) throws TableStoreException, ClientException

L'exemple suivant crée une table nommée example_table. La table comporte une colonne de clé primaire de type STRING, les données n'expirent jamais et une seule version de données est conservée.

TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
        new PrimaryKeySchema("id", PrimaryKeyType.STRING));

TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);

CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
client.createTable(request);
Remarque

Après avoir créé une table, attendez qu'elle soit chargée avant d'effectuer des opérations sur les données.

Paramètres

CreateTableRequest contient les paramètres suivants.

Nom

Type

Description

tableMeta (obligatoire)

TableMeta

Le schéma de la table.

tableOptions (obligatoire)

TableOptions

La version des données et les paramètres de mise à jour de la table.

reservedThroughput (facultatif)

ReservedThroughput

Le débit lecture/écriture réservé, en unités de capacité (CU). Les CU de lecture et d'écriture par défaut sont tous deux égaux à 0. Les valeurs non nulles s'appliquent uniquement aux instances haute performance en mode CU.

indexMeta (facultatif)

List<IndexMeta>

Les index secondaires à créer avec la table.

streamSpecification (facultatif)

StreamSpecification

La configuration Stream.

enableLocalTxn (facultatif)

Boolean

Indique si les transactions locales sont activées. Valeur par défaut : false.

sseSpecification (facultatif)

SSESpecification

La configuration du chiffrement des données. Vous ne pouvez activer le chiffrement des données que lors de la création d'une table. Une fois la table créée, vous ne pouvez pas désactiver le chiffrement ni modifier sa configuration.

Schéma de la table

tableMeta est un objet TableMeta qui contient les paramètres suivants.

Nom

Type

Description

tableName (obligatoire)

String

Le nom de la table.

primaryKey (obligatoire)

List<PrimaryKeySchema>

Les configurations des colonnes de clé primaire. Vous pouvez configurer entre une et quatre colonnes de clé primaire. La première colonne de clé primaire est la clé de partition et les données sont triées par ordre croissant selon la clé primaire.

definedColumns (facultatif)

List<DefinedColumnSchema>

Les configurations des colonnes prédéfinies. Les colonnes prédéfinies peuvent être utilisées pour créer des index secondaires et des index de recherche.

Colonnes de clé primaire

Chaque élément de tableMeta.primaryKey[] est un objet PrimaryKeySchema qui contient les paramètres suivants.

Nom

Type

Description

name (obligatoire)

String

Le nom de la colonne de clé primaire.

type (obligatoire)

PrimaryKeyType

Le type de la colonne de clé primaire. Valeurs possibles : STRING, INTEGER et BINARY.

option (facultatif)

PrimaryKeyOption

L'option de colonne de clé primaire. Pour utiliser une colonne de clé primaire à incrémentation automatique, définissez une colonne de clé primaire INTEGER autre que la clé de partition sur AUTO_INCREMENT.

Colonnes prédéfinies

Chaque élément de tableMeta.definedColumns[] est un objet DefinedColumnSchema qui contient les paramètres suivants.

Nom

Type

Description

name (obligatoire)

String

Le nom de la colonne prédéfinie.

type (obligatoire)

DefinedColumnType

Le type de la colonne prédéfinie. Valeurs possibles : STRING, INTEGER, BINARY, DOUBLE et BOOLEAN.

Configurations de la table

tableOptions est un objet TableOptions qui contient les paramètres suivants.

Nom

Type

Description

timeToLive (obligatoire)

Integer

La durée de vie (TTL) des données, en secondes. Définissez ce paramètre sur -1 pour conserver les données indéfiniment. Pour les autres valeurs, le minimum est 86400 (un jour). Les données dont la TTL est dépassée sont automatiquement supprimées. Pour utiliser un index de recherche ou un index secondaire, définissez ce paramètre sur -1 ou définissez allowUpdate sur false.

maxVersions (obligatoire)

Integer

Le nombre maximal de versions à conserver pour chaque colonne d'attribut. Pour utiliser un index de recherche ou un index secondaire, définissez ce paramètre sur 1.

maxTimeDeviation (facultatif)

Long

L'écart maximal de version, en secondes. Valeur par défaut : 86400 (un jour). La différence entre l'horodatage des données écrites et l'heure système actuelle doit se situer dans cet écart. La plage de versions valide est [max(data write time - maximum version offset, data write time - TTL), data write time + maximum version offset).

allowUpdate (facultatif)

Boolean

Indique si les données peuvent être mises à jour en appelant updateRow. Valeur par défaut : true. Si vous définissez ce paramètre sur false, les données ne peuvent pas être mises à jour.

updateFullRow (facultatif)

Boolean

Indique si les mises à jour de ligne entière sont activées. Valeur par défaut : false. Vous ne pouvez définir ce paramètre que lors de la création d'une table. Vous ne pouvez pas le modifier en appelant updateTable.

Débit lecture/écriture réservé

reservedThroughput est un objet ReservedThroughput qui contient le paramètre suivant.

Nom

Type

Description

capacityUnit (obligatoire)

CapacityUnit

La configuration du débit lecture/écriture réservé.

Unités de capacité

reservedThroughput.capacityUnit est un objet CapacityUnit qui contient les paramètres suivants.

Nom

Type

Description

readCapacityUnit (obligatoire)

Integer

Le débit de lecture réservé, en CU.

writeCapacityUnit (obligatoire)

Integer

Le débit d'écriture réservé, en CU.

Index secondaires

Chaque élément de indexMeta[] est un objet IndexMeta qui contient les paramètres suivants.

Nom

Type

Description

indexName (obligatoire)

String

Le nom de l'index.

primaryKey (obligatoire)

List<String>

Les colonnes de clé primaire de l'index. Elles peuvent être constituées de colonnes de clé primaire et de colonnes prédéfinies de la table. Pour un index secondaire local, la première colonne de clé primaire doit correspondre à la première colonne de clé primaire de la table.

definedColumns (facultatif)

List<String>

Les colonnes prédéfinies incluses dans l'index. Il doit s'agir de colonnes prédéfinies de la table.

indexType (facultatif)

IndexType

Le type d'index. Valeurs possibles : IT_GLOBAL_INDEX (par défaut, index secondaire global) et IT_LOCAL_INDEX (index secondaire local).

indexUpdateMode (facultatif)

IndexUpdateMode

Le mode de mise à jour de l'index. Un index secondaire global doit utiliser IUM_ASYNC_INDEX (par défaut, mise à jour asynchrone). Un index secondaire local doit utiliser IUM_SYNC_INDEX (mise à jour synchrone).

Configuration Stream

streamSpecification est un objet StreamSpecification qui contient les paramètres suivants.

Nom

Type

Description

enableStream (obligatoire)

Boolean

Indique si Stream est activé. Valeur par défaut : false.

expirationTime (facultatif)

Integer

La période de rétention des journaux incrémentiels, en heures. Valeur maximale : 168 (sept jours). Ce paramètre est obligatoire si enableStream est défini sur true.

Configuration des transactions locales

enableLocalTxn est une valeur Boolean. Tenez compte des limites suivantes lorsque vous définissez ce paramètre.

  • Les transactions locales sont prises en charge uniquement par le SDK Tablestore pour Java 5.11.0 et versions ultérieures.

  • Les transactions locales et les colonnes de clé primaire à incrémentation automatique s'excluent mutuellement. Si une colonne de clé primaire à incrémentation automatique est configurée, les transactions locales ne prennent pas effet, même si elles sont activées.

  • Pour activer les transactions locales sur une table existante, soumettez un ticket .

Configuration du chiffrement côté serveur

sseSpecification est un objet SSESpecification qui contient les paramètres suivants.

Nom

Type

Description

enable (obligatoire)

Boolean

Indique si le chiffrement des données est activé. Valeur par défaut : false.

keyType (facultatif)

SSEKeyType

Le type de chiffrement. Valeurs possibles : SSE_KMS_SERVICE (chiffrement par clé de service KMS) et SSE_BYOK (chiffrement Bring Your Own Key). Ce paramètre est obligatoire lorsque le chiffrement est activé.

keyId (facultatif)

String

L'ID de la clé maître cliente. Ce paramètre est obligatoire pour le chiffrement BYOK.

roleArn (facultatif)

String

Le nom de ressource Alibaba Cloud (ARN) du rôle Resource Access Management (RAM). Ce paramètre est obligatoire pour le chiffrement BYOK.

Exemples

Configurer le schéma de la table et les versions de données

L'exemple suivant crée une table avec deux colonnes de clé primaire et une colonne prédéfinie. Il configure également l'écart maximal de temps et désactive les mises à jour.

TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
        new PrimaryKeySchema("id", PrimaryKeyType.STRING));
tableMeta.addPrimaryKeyColumn(
        new PrimaryKeySchema("device_id", PrimaryKeyType.INTEGER));
tableMeta.addDefinedColumn("status", DefinedColumnType.STRING);

TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
tableOptions.setMaxTimeDeviation(86400L);
tableOptions.setAllowUpdate(false);

CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
client.createTable(request);

Créer un index secondaire conjointement avec la table

L'exemple suivant crée un index secondaire global nommé example_table_index conjointement avec la table. La colonne de clé primaire de l'index category doit d'abord être définie comme une colonne prédéfinie de la table.

TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
        new PrimaryKeySchema("id", PrimaryKeyType.STRING));
tableMeta.addDefinedColumn("category", DefinedColumnType.STRING);

TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);

IndexMeta indexMeta = new IndexMeta("example_table_index");
indexMeta.addPrimaryKeyColumn("category");
indexMeta.setIndexType(IndexType.IT_GLOBAL_INDEX);
indexMeta.setIndexUpdateMode(IndexUpdateMode.IUM_ASYNC_INDEX);

List<IndexMeta> indexMetas = new ArrayList<IndexMeta>();
indexMetas.add(indexMeta);
CreateTableRequest request =
        new CreateTableRequest(tableMeta, tableOptions, indexMetas);
client.createTable(request);

Activer Stream

L'exemple suivant active Stream lors de la création de la table et définit la durée d'expiration des journaux incrémentiels sur 24 heures.

TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
        new PrimaryKeySchema("id", PrimaryKeyType.STRING));

TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);

CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
request.setStreamSpecification(new StreamSpecification(true, 24));
client.createTable(request);

Activer les transactions locales

L'exemple suivant active les transactions locales lors de la création de la table en appelant setLocalTxnEnabled.

TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
        new PrimaryKeySchema("id", PrimaryKeyType.STRING));

TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);

CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
request.setLocalTxnEnabled(true);
client.createTable(request);

Chiffrer une table

Les exemples suivants chiffrent une table à l'aide d'une clé de service KMS ou de BYOK.

Important

Vous ne pouvez configurer le chiffrement des données que lors de la création de la table. Une fois la table créée, vous ne pouvez pas désactiver le chiffrement ni modifier la configuration de chiffrement.

Chiffrement par clé de service KMS

TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
        new PrimaryKeySchema("id", PrimaryKeyType.STRING));

TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);

CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
request.setSseSpecification(
        new SSESpecification(true, SSEKeyType.SSE_KMS_SERVICE));
client.createTable(request);

Chiffrement BYOK

Remarque

Pour utiliser le chiffrement BYOK, obtenez d'abord l'ID de la clé maître cliente (CMK) et l'ARN du rôle RAM. Pour plus d'informations, consultez Chiffrement BYOK.

TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
        new PrimaryKeySchema("id", PrimaryKeyType.STRING));

TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);

CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
String keyId = "key-xxxx****";
String roleArn = "acs:ram::1234****:role/example-role";
request.setSseSpecification(
        new SSESpecification(true, SSEKeyType.SSE_BYOK, keyId, roleArn));
client.createTable(request);