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)
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) |
|
Le schéma de la table. |
|
table_options (obligatoire) |
|
Les configurations de la table. |
|
reserved_throughput (obligatoire) |
|
Le débit réservé. |
|
secondary_indexes (facultatif) |
|
Les index secondaires à créer conjointement avec la table. |
|
sse_spec (facultatif) |
|
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) |
|
Le nom de la table. |
|
schema_of_primary_key (obligatoire) |
|
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 |
|
defined_columns (facultatif) |
|
Les colonnes prédéfinies. Les colonnes prédéfinies prennent en charge les types |
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) |
|
Le nom de la colonne de clé primaire. |
|
type (obligatoire) |
|
Le type de la colonne de clé primaire. Les valeurs valides sont |
|
option (facultatif) |
|
L'option de clé primaire. Définissez une colonne de clé primaire autre que la clé de partition, de type |
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) |
|
Le nom de la colonne prédéfinie. |
|
type (obligatoire) |
|
Le type de la colonne prédéfinie. Les valeurs valides sont |
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) |
|
La durée de vie (TTL) des données, exprimée en secondes. La valeur par défaut est |
|
max_version (facultatif) |
|
Le nombre maximal de versions à conserver pour chaque colonne d'attribut. La valeur par défaut est |
|
max_time_deviation (facultatif) |
|
L'écart maximal de version, exprimé en secondes. La valeur par défaut est |
|
allow_update (facultatif) |
|
Indique si les données peuvent être mises à jour en appelant |
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) |
|
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 à |
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) |
|
Le débit de lecture réservé en CU. La valeur par défaut est |
|
write (facultatif) |
|
Le débit d'écriture réservé en CU. La valeur par défaut est |
Index secondaire
Chaque élément dans secondary_indexes[] est de type SecondaryIndexMeta et contient les paramètres suivants.
|
Nom |
Type |
Description |
|
index_name (obligatoire) |
|
Le nom de l'index. |
|
primary_key_names (obligatoire) |
|
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) |
|
Les colonnes prédéfinies incluses dans l'index. Les colonnes doivent déjà être définies dans la table. |
|
index_type (facultatif) |
|
Le type d'index. Les valeurs valides sont |
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) |
|
Indique s'il faut activer le chiffrement des données. La valeur par défaut est |
|
key_type (facultatif) |
|
Le type de chiffrement. Les valeurs valides sont |
|
key_id (facultatif) |
|
L'ID de la clé maître cliente. Ce paramètre est obligatoire pour le chiffrement BYOK. |
|
role_arn (facultatif) |
|
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.
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,
)