Tous les produits
Search
Centre de documentation

Tablestore:Create a table

Dernière mise à jour :Aug 20, 2026

Utilisez le SDK Tablestore pour Python pour créer une table et configurer, si nécessaire, son schéma, ses paramètres, ses index secondaires ainsi que le chiffrement des données.

Prérequis

Installez le SDK Tablestore pour Python et initialisez un client.

Description de la fonction

Appelez la méthode create_table pour créer une table.

def create_table(
    self,
    table_meta,
    table_options,
    reserved_throughput,
    secondary_indexes=None,
    sse_spec=None,
)

L'exemple suivant crée la table example_table avec id comme colonne de clé primaire. Les données de la table n'expirent jamais et une seule version est conservée pour chaque colonne d'attribut.

table_meta = TableMeta(
    "example_table",
    [("id", "STRING")],
)
table_options = TableOptions(
    time_to_live=-1,
    max_version=1,
    max_time_deviation=86400,
    allow_update=True,
)
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))

client.create_table(table_meta, table_options, reserved_throughput)
Remarque

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

Paramètres

La méthode create_table accepte les paramètres suivants.

Nom

Type

Description

table_meta (obligatoire)

TableMeta

Le schéma de la table.

table_options (obligatoire)

TableOptions

Les configurations de la table.

reserved_throughput (obligatoire)

ReservedThroughput

Le débit réservé.

secondary_indexes (facultatif)

List[SecondaryIndexMeta]

Les index secondaires à créer conjointement avec la table.

sse_spec (facultatif)

SSESpecification

Les paramètres de chiffrement côté serveur. Le chiffrement ne peut être activé qu'à la création de la table et ne peut pas être désactivé par la suite. Cette fonctionnalité nécessite le SDK Tablestore pour Python 6.4.0 ou une version ultérieure.

Schéma de la table

Le paramètre table_meta est de type TableMeta et contient les paramètres suivants.

Nom

Type

Description

table_name (obligatoire)

str

Le nom de la table.

schema_of_primary_key (obligatoire)

List[Tuple]

Le schéma de la clé primaire. Une table peut comporter entre une et quatre colonnes de clé primaire. La première colonne de clé primaire constitue la clé de partition et les colonnes de clé primaire sont triées par ordre croissant. Les colonnes de clé primaire prennent en charge les types STRING, INTEGER et BINARY. Une colonne de clé primaire autre que la clé de partition, de type INTEGER, peut être configurée en tant que colonne de clé primaire à incrémentation automatique.

defined_columns (facultatif)

List[Tuple]

Les colonnes prédéfinies. Les colonnes prédéfinies prennent en charge les types STRING, INTEGER, BINARY, DOUBLE et BOOLEAN et peuvent servir à créer des index secondaires et des index de recherche.

Colonne de clé primaire

Chaque tuple dans table_meta.schema_of_primary_key[] configure une colonne de clé primaire et contient les éléments suivants.

Nom

Type

Description

name (obligatoire)

str

Le nom de la colonne de clé primaire.

type (obligatoire)

str

Le type de la colonne de clé primaire. Les valeurs valides sont STRING, INTEGER et BINARY.

option (facultatif)

PrimaryKeyOption

L'option de clé primaire. Définissez une colonne de clé primaire autre que la clé de partition, de type INTEGER, sur PK_AUTO_INCR pour en faire une colonne de clé primaire à incrémentation automatique.

Colonne prédéfinie

Chaque tuple dans table_meta.defined_columns[] configure une colonne prédéfinie et contient les éléments suivants.

Nom

Type

Description

name (obligatoire)

str

Le nom de la colonne prédéfinie.

type (obligatoire)

str

Le type de la colonne prédéfinie. Les valeurs valides sont STRING, INTEGER, BINARY, DOUBLE et BOOLEAN.

Configurations de la table

Le paramètre table_options est de type TableOptions et contient les paramètres suivants.

Nom

Type

Description

time_to_live (facultatif)

int

La durée de vie (TTL) des données, exprimée en secondes. La valeur par défaut est -1, ce qui signifie que les données n'expirent jamais. Si vous spécifiez une autre valeur, la valeur minimale est 86400, soit un jour. Les données expirées sont automatiquement supprimées. Pour utiliser un index de recherche ou un index secondaire, définissez ce paramètre sur -1 ou définissez allow_update sur False.

max_version (facultatif)

int

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

max_time_deviation (facultatif)

int

L'écart maximal de version, exprimé en secondes. La valeur par défaut est 86400, soit un jour. La différence entre l'horodatage des données à écrire et l'heure système actuelle doit rester dans les limites de l'écart maximal de version. La plage de versions valide est [max(data write time - maximum version deviation, data write time - TTL), data write time + maximum version deviation).

allow_update (facultatif)

bool

Indique si les données peuvent être mises à jour en appelant update_row. Si vous ne spécifiez pas ce paramètre, le serveur autorise les mises à jour par défaut. Si vous définissez ce paramètre sur False, les données ne peuvent pas être mises à jour via l'appel à update_row.

Débit réservé

Le paramètre reserved_throughput est de type ReservedThroughput et contient le paramètre suivant.

Nom

Type

Description

capacity_unit (obligatoire)

CapacityUnit

Le débit réservé en unités de capacité (CU). Les CU de lecture et d'écriture par défaut sont tous deux égaux à 0. Seules les instances haute performance en mode CU prennent en charge des valeurs non nulles.

Unités de capacité

Le paramètre reserved_throughput.capacity_unit est de type CapacityUnit et contient les paramètres suivants.

Nom

Type

Description

read (facultatif)

int

Le débit de lecture réservé en CU. La valeur par défaut est 0.

write (facultatif)

int

Le débit d'écriture réservé en CU. La valeur par défaut est 0.

Index secondaire

Chaque élément dans secondary_indexes[] est de type SecondaryIndexMeta et contient les paramètres suivants.

Nom

Type

Description

index_name (obligatoire)

str

Le nom de l'index.

primary_key_names (obligatoire)

List[str]

Les colonnes de clé primaire de l'index. Vous pouvez utiliser les colonnes de clé primaire et les colonnes prédéfinies de la table. Pour un index secondaire local, la première colonne de clé primaire de l'index doit être identique à celle de la table.

defined_column_names (facultatif)

List[str]

Les colonnes prédéfinies incluses dans l'index. Les colonnes doivent déjà être définies dans la table.

index_type (facultatif)

SecondaryIndexType

Le type d'index. Les valeurs valides sont GLOBAL_INDEX, valeur par défaut pour un index secondaire global, et LOCAL_INDEX, pour un index secondaire local.

Paramètres de chiffrement côté serveur

Le paramètre sse_spec est de type SSESpecification et contient les paramètres suivants.

Nom

Type

Description

enable (facultatif)

bool

Indique s'il faut activer le chiffrement des données. La valeur par défaut est False.

key_type (facultatif)

SSEKeyType

Le type de chiffrement. Les valeurs valides sont SSE_KMS_SERVICE pour le chiffrement avec une clé gérée par KMS et SSE_BYOK pour le chiffrement avec votre propre clé (BYOK). Ce paramètre est obligatoire lorsque le chiffrement est activé.

key_id (facultatif)

str

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

role_arn (facultatif)

str

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

Exemples

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

L'exemple suivant ajoute la colonne prédéfinie name et conserve jusqu'à trois versions pour chaque colonne d'attribut.

table_meta = TableMeta(
    "example_table",
    [("id", "STRING")],
    [("name", "STRING")],
)
table_options = TableOptions(
    time_to_live=-1,
    max_version=3,
    max_time_deviation=86400,
    allow_update=True,
)
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))

client.create_table(table_meta, table_options, reserved_throughput)

Créer un index secondaire conjointement avec une table

L'exemple suivant crée un index secondaire local conjointement avec une table. La première colonne de clé primaire de la table et de l'index secondaire est id.

table_meta = TableMeta(
    "example_table",
    [("id", "STRING"), ("device_id", "INTEGER")],
    [("status", "STRING")],
)
table_options = TableOptions(time_to_live=-1, max_version=1)
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
secondary_indexes = [
    SecondaryIndexMeta(
        "example_local_index",
        ["id", "device_id"],
        ["status"],
        index_type=SecondaryIndexType.LOCAL_INDEX,
    )
]

client.create_table(
    table_meta,
    table_options,
    reserved_throughput,
    secondary_indexes=secondary_indexes,
)

Chiffrer une table

Les exemples suivants utilisent une clé gérée par KMS et une clé gérée par le client pour chiffrer une table.

Important

Le chiffrement ne peut être activé qu'à la création de la table et ne peut pas être désactivé par la suite.

Clé gérée par KMS

sse_spec = SSESpecification(
    enable=True,
    key_type=SSEKeyType.SSE_KMS_SERVICE,
)

client.create_table(
    table_meta,
    table_options,
    reserved_throughput,
    sse_spec=sse_spec,
)

Chiffrement BYOK

Avant d'utiliser le chiffrement BYOK, obtenez l'ID de la clé maître cliente et l'ARN du rôle RAM. Pour plus d'informations, consultez Chiffrement des données.

sse_spec = SSESpecification(
    enable=True,
    key_type=SSEKeyType.SSE_BYOK,
    key_id="key-example",
    role_arn="acs:ram::1234567890123456:role/example-role",
)

client.create_table(
    table_meta,
    table_options,
    reserved_throughput,
    sse_spec=sse_spec,
)