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);
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) |
|
Le schéma de la table. |
|
tableOptions (obligatoire) |
|
La version des données et les paramètres de mise à jour de la table. |
|
reservedThroughput (facultatif) |
|
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 à |
|
indexMeta (facultatif) |
|
Les index secondaires à créer avec la table. |
|
streamSpecification (facultatif) |
|
La configuration Stream. |
|
enableLocalTxn (facultatif) |
|
Indique si les transactions locales sont activées. Valeur par défaut : |
|
sseSpecification (facultatif) |
|
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) |
|
Le nom de la table. |
|
primaryKey (obligatoire) |
|
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) |
|
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) |
|
Le nom de la colonne de clé primaire. |
|
type (obligatoire) |
|
Le type de la colonne de clé primaire. Valeurs possibles : |
|
option (facultatif) |
|
L'option de colonne de clé primaire. Pour utiliser une colonne de clé primaire à incrémentation automatique, définissez une colonne de clé primaire |
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) |
|
Le nom de la colonne prédéfinie. |
|
type (obligatoire) |
|
Le type de la colonne prédéfinie. Valeurs possibles : |
Configurations de la table
tableOptions est un objet TableOptions qui contient les paramètres suivants.
|
Nom |
Type |
Description |
|
timeToLive (obligatoire) |
|
La durée de vie (TTL) des données, en secondes. Définissez ce paramètre sur |
|
maxVersions (obligatoire) |
|
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 |
|
maxTimeDeviation (facultatif) |
|
L'écart maximal de version, en secondes. Valeur par défaut : |
|
allowUpdate (facultatif) |
|
Indique si les données peuvent être mises à jour en appelant |
|
updateFullRow (facultatif) |
|
Indique si les mises à jour de ligne entière sont activées. Valeur par défaut : |
Débit lecture/écriture réservé
reservedThroughput est un objet ReservedThroughput qui contient le paramètre suivant.
|
Nom |
Type |
Description |
|
capacityUnit (obligatoire) |
|
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) |
|
Le débit de lecture réservé, en CU. |
|
writeCapacityUnit (obligatoire) |
|
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) |
|
Le nom de l'index. |
|
primaryKey (obligatoire) |
|
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) |
|
Les colonnes prédéfinies incluses dans l'index. Il doit s'agir de colonnes prédéfinies de la table. |
|
indexType (facultatif) |
|
Le type d'index. Valeurs possibles : |
|
indexUpdateMode (facultatif) |
|
Le mode de mise à jour de l'index. Un index secondaire global doit utiliser |
Configuration Stream
streamSpecification est un objet StreamSpecification qui contient les paramètres suivants.
|
Nom |
Type |
Description |
|
enableStream (obligatoire) |
|
Indique si Stream est activé. Valeur par défaut : |
|
expirationTime (facultatif) |
|
La période de rétention des journaux incrémentiels, en heures. Valeur maximale : |
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) |
|
Indique si le chiffrement des données est activé. Valeur par défaut : |
|
keyType (facultatif) |
|
Le type de chiffrement. Valeurs possibles : |
|
keyId (facultatif) |
|
L'ID de la clé maître cliente. Ce paramètre est obligatoire pour le chiffrement BYOK. |
|
roleArn (facultatif) |
|
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.
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
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);