Tous les produits
Search
Centre de documentation

Tablestore:Create a data table

Dernière mise à jour :Aug 08, 2026

Cette rubrique explique comment utiliser le SDK Tablestore pour Go afin de créer une table de données.

Remarques d'utilisation

Après la création d'une table de données, attendez que celle-ci soit chargée avant d'effectuer des opérations sur les données. Sinon, les opérations échoueront. Ce processus prend généralement quelques secondes.

Prérequis

Initialiser un client Tablestore.

Description de la méthode

func (tableStoreClient *TableStoreClient) CreateTable(request *CreateTableRequest) (*CreateTableResponse, error)

Paramètres de CreateTableRequest

  • TableMeta (obligatoire) *TableMeta : informations de schéma de la table, comprenant les paramètres suivants.

    Paramètre

    Type

    Description

    TableName (obligatoire)

    string

    Nom de la table de données.

    SchemaEntry (obligatoire)

    []*PrimaryKeySchema

    Informations relatives à la clé primaire.

    • Vous pouvez configurer entre 1 et 4 colonnes de clé primaire. Par défaut, les colonnes de clé primaire sont triées par ordre croissant. La première colonne de clé primaire sert de clé de partition.

    • Les types de données des colonnes de clé primaire incluent STRING, INTEGER et BINARY. Vous pouvez configurer des colonnes de clé primaire auto-incrémentielles pour les colonnes de clé primaire de type entier qui ne sont pas des clés de partition.

    DefinedColumns (facultatif)

    []*DefinedColumnSchema

    Informations relatives aux colonnes prédéfinies.

    • Les colonnes prédéfinies sont des colonnes d'attributs définies au préalable. Utilisez-les pour créer des index secondaires et des index de recherche.

    • Les types de données des colonnes prédéfinies incluent STRING, INTEGER, BINARY, DOUBLE et BOOLEAN.

  • TableOption (obligatoire) *TableOption : configuration de la table, comprenant les paramètres suivants.

    Paramètre

    Type

    Description

    TimeToAlive (obligatoire)

    int

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

    • Si vous définissez ce paramètre sur -1, les données n'expirent jamais. Dans le cas contraire, la valeur minimale est 86400 (un jour). Les données dont la durée de vie est dépassée sont automatiquement supprimées.

    • Pour utiliser des index de recherche ou des index secondaires, vous devez définir la TTL sur -1 ou définir le paramètre AllowUpdate sur false.

    MaxVersion (obligatoire)

    int

    Nombre maximal de versions.

    • Si vous souhaitez utiliser des index de recherche, définissez la version sur 1.

    DeviationCellVersionInSec (facultatif)

    int64

    Décalage maximal de version, exprimé 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 rester dans les limites du décalage maximal de version. Sinon, l'écriture des données échoue.

    • La plage de versions valides pour les données dans les colonnes d'attributs est [max(Data write time - Maximum version offset, Data write time - TTL), Data write time + Maximum version offset).

    AllowUpdate (facultatif)

    *bool

    Indique si les mises à jour sont autorisées. Valeur par défaut : true.

    • Si vous définissez ce paramètre sur false, vous ne pouvez pas mettre à jour les données à l'aide de la méthode UpdateRow().

  • IndexMetas (facultatif) []*IndexMeta : liste des index secondaires. Configurez les paramètres suivants pour chaque index.

    Nom

    Type

    Description

    IndexName (obligatoire)

    string

    Nom de l'index.

    Primarykey (obligatoire)

    []string

    Colonnes de clé primaire de l'index.

    • Les colonnes de clé primaire d'un index sont une combinaison des colonnes de clé primaire et des colonnes prédéfinies de la table de données pour laquelle l'index est créé.

    • Pour créer un index secondaire local, la première colonne de clé primaire de l'index doit correspondre à la première colonne de clé primaire de la table de données.

    DefinedColumns (facultatif)

    []string

    Colonnes prédéfinies de l'index.

    • Composé des colonnes prédéfinies de la table de données.

    IndexType (facultatif)

    IndexType

    Type d'index. Valeurs possibles :

    • IT_GLOBAL_INDEX (par défaut) : index secondaire global.

    • IT_LOCAL_INDEX : index secondaire local.

  • StreamSpec (facultatif) *StreamSpecification : configuration de Stream, comprenant les paramètres suivants.

    Paramètre

    Type

    Description

    EnableStream (facultatif)

    bool

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

    ExpirationTime (facultatif)

    int32

    Délai d'expiration de Stream, indiquant la période de validité des journaux incrémentiels, exprimée en heures. Valeur maximale : 168 (sept jours).

    • Si EnableStream est défini sur true, vous devez spécifier ExpirationTime.

  • EnableLocalTxn (facultatif) *bool : indique si les transactions locales sont activées. Valeur par défaut : false. Une valeur false indique que les transactions locales sont désactivées.

    • Cette fonctionnalité est prise en charge uniquement par le SDK Go 1.7.8 et versions ultérieures.

    • Vous ne pouvez pas utiliser simultanément la fonctionnalité de colonne de clé primaire auto-incrémentielle et celle de transaction locale. Si vous configurez une colonne de clé primaire auto-incrémentielle, les paramètres de transaction locale ne prennent pas effet, même si vous activez les transactions locales.

    • Si la fonctionnalité de transaction locale est désactivée lors de la création d'une table de données et que vous souhaitez l'utiliser après la création de la table, soumettez un ticket pour en faire la demande.

  • SSESpecification (facultatif) *SSESpecification : paramètres de chiffrement des données, comprenant les paramètres suivants.

    Important

    La fonctionnalité de chiffrement des données peut être activée et configurée uniquement lors de la création d'une table de données. Vous ne pouvez pas désactiver le chiffrement après la création de la table.

    Paramètre

    Type

    Description

    Enable (facultatif)

    bool

    Indique si la fonctionnalité de chiffrement des données est activée. Valeur par défaut : false.

    KeyType (facultatif)

    *SSEKeyType

    Type de chiffrement. Valeurs possibles :

    • SSE_KMS_SERVICE : chiffrement basé sur Key Management Service (KMS).

    • SSE_BYOK : chiffrement avec vos propres clés (BYOK).

    KeyId (facultatif)

    *string

    ID de la clé maître cliente (CMK). Ce paramètre est requis uniquement lorsque keyType est défini sur SSE_BYOK.

    RoleArn (facultatif)

    *string

    Nom de ressource Alibaba Cloud (ARN) du rôle RAM. Ce paramètre est requis uniquement lorsque keyType est défini sur SSE_BYOK.

  • ReservedThroughput (obligatoire) *ReservedThroughput : débit réservé en lecture et écriture, exprimé en unités de capacité (CU). Valeur par défaut : 0. Seules les instances haute performance en mode CU prennent en charge la définition de ce paramètre sur une valeur non nulle.

Exemple de code

L'exemple de code suivant crée une table de données nommée test_table contenant une colonne de clé primaire de type chaîne.

func CreateTableSample(client *tablestore.TableStoreClient) {
    // Construct the schema information of the data table
    tableMeta := new(tablestore.TableMeta)
    tableMeta.TableName = "test_table"
    // At least one primary key column is required to create a data table
    tableMeta.AddPrimaryKeyColumn("id", tablestore.PrimaryKeyType_STRING)

    // Construct the configuration information of the data table
    tableOption := new(tablestore.TableOption)
    // You must specify the maximum number of versions when you create a data table
    tableOption.MaxVersion = 1
    // You must specify the TTL when you create a data table. A value of -1 indicates that the data never expires
    tableOption.TimeToAlive = -1

    // You must set the reserved read and write throughput when you create a data table. The default value is 0 (Only high-performance instances in CU mode support setting the reserved read and write throughput of a data table to a non-zero value)
    reservedThroughput := new(tablestore.ReservedThroughput)
    reservedThroughput.Readcap = 0
    reservedThroughput.Writecap = 0

    // Construct the request and send it
    createTableRequest := new(tablestore.CreateTableRequest)
    createTableRequest.TableMeta = tableMeta
    createTableRequest.TableOption = tableOption
    createTableRequest.ReservedThroughput = reservedThroughput
    _, err := client.CreateTable(createTableRequest)
    if err != nil {
        fmt.Println("Failed to create table with error:", err)
    } else {
        fmt.Println("Create table finished.")
    }
}

Reportez-vous à l'exemple de code suivant pour configurer des paramètres supplémentaires lors de la création d'une table de données.

  • Ajouter des colonnes prédéfinies

    tableMeta.AddDefinedColumn("name", tablestore.DefinedColumn_STRING)
  • Définir le décalage maximal de version

    tableOption.DeviationCellVersionInSec = 86400
  • Définir l'autorisation des mises à jour

    tableOption.AllowUpdate = proto.Bool(false)
  • Ajouter un index secondaire

    // Construct a secondary index
    indexMeta := new(tablestore.IndexMeta)
    indexMeta.IndexName = "test_table_index"
    // Set the primary key columns of the index
    indexMeta.AddPrimaryKeyColumn("id")
    indexMeta.AddPrimaryKeyColumn("name")
    // Set the index type
    indexMeta.IndexType = tablestore.IT_LOCAL_INDEX
    // Add the secondary index
    createTableRequest.AddIndexMeta(indexMeta)
  • Configurer les paramètres de Stream

    streamSpec := new(tablestore.StreamSpecification)
    streamSpec.EnableStream = true
    streamSpec.ExpirationTime = 168
    createTableRequest.StreamSpec = streamSpec
  • Définir l'activation des transactions locales

    enableLocalTxn := proto.Bool(true)
    createTableRequest.EnableLocalTxn = enableLocalTxn
  • Définir le type de chiffrement des données

    • Chiffrement basé sur KMS

      sseSpec := new(tablestore.SSESpecification)
      sseSpec.SetEnable(true)
      sseSpec.SetKeyType(tablestore.SSE_KMS_SERVICE)
      createTableRequest.SSESpecification = sseSpec
    • Chiffrement BYOK

      Remarque

      Avant d'exécuter le code, obtenez l'ID de la CMK et l'ARN du rôle RAM. Pour plus d'informations, consultez la section Chiffrement BYOK.

      sseSpec := new(tablestore.SSESpecification)
      sseSpec.SetEnable(true)
      sseSpec.SetKeyType(tablestore.SSE_BYOK)
      sseSpec.SetKeyId("key-hzz65****************")
      sseSpec.SetRoleArn("acs:ram::1705************:role/tabletorebyok")
      createTableRequest.SSESpecification = sseSpec

Références