Todos os produtos
Search
Central de documentação

Tablestore:Criar uma tabela de dados

Última atualização: Jul 03, 2026

Este tópico descreve como usar o Tablestore SDK for Go para criar uma tabela de dados.

Observações de uso

Após criar uma tabela de dados, aguarde o carregamento completo antes de executar operações nos dados. Caso contrário, as operações falharão. Esse processo geralmente leva alguns segundos.

Pré-requisitos

Inicializar um cliente do Tablestore.

Descrição do método

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

Parâmetros de CreateTableRequest

  • TableMeta (obrigatório) *TableMeta: Informações de esquema da tabela, incluindo os seguintes parâmetros.

    Parâmetro

    Tipo

    Descrição

    TableName (obrigatório)

    string

    Nome da tabela de dados.

    SchemaEntry (obrigatório)

    []*PrimaryKeySchema

    Informações sobre a chave primária.

    • Configure de 1 a 4 colunas de chave primária. Por padrão, a classificação ocorre em ordem crescente. A primeira coluna de chave primária atua como chave de partição.

    • Os tipos de dados das colunas de chave primária incluem STRING, INTEGER e BINARY. Configure colunas de chave primária com incremento automático para colunas de chave primária do tipo inteiro que não sejam chaves de partição.

    DefinedColumns (opcional)

    []*DefinedColumnSchema

    Informações sobre colunas predefinidas.

    • Colunas predefinidas são colunas de atributo definidas antecipadamente. Use-as para criar índices secundários e índices de pesquisa.

    • Os tipos de dados das colunas predefinidas incluem STRING, INTEGER, BINARY, DOUBLE e BOOLEAN.

  • TableOption (obrigatório) *TableOption: Informações de configuração da tabela, incluindo os seguintes parâmetros.

    Parâmetro

    Tipo

    Descrição

    TimeToAlive (obrigatório)

    int

    Tempo de vida (TTL) dos dados. Unidade: segundos.

    • Se definido como -1, os dados nunca expiram. Caso contrário, o valor mínimo é 86400 (um dia). O sistema limpa automaticamente os dados que excedem o TTL.

    • Para usar índices de pesquisa ou índices secundários, defina o TTL como -1 ou configure o parâmetro AllowUpdate como false.

    MaxVersion (obrigatório)

    int

    Número máximo de versões.

    • Defina como 1 se pretender usar índices de pesquisa.

    DeviationCellVersionInSec (opcional)

    int64

    Deslocamento máximo de versão. Unidade: segundos. Valor padrão: 86400 (um dia).

    • A diferença entre o timestamp dos dados gravados e a hora atual do sistema deve respeitar o deslocamento máximo de versão. Caso contrário, a gravação falhará.

    • O intervalo de versão válido para dados em colunas de atributo é [max(Hora de gravação dos dados - Deslocamento máximo de versão, Hora de gravação dos dados - TTL), Hora de gravação dos dados + Deslocamento máximo de versão).

    AllowUpdate (opcional)

    *bool

    Indica se as atualizações são permitidas. Valor padrão: true.

    • Se definido como false, não será possível atualizar dados usando o método UpdateRow().

  • IndexMetas (opcional) []*IndexMeta: Lista de índices secundários. Configure os seguintes parâmetros para cada índice.

    Nome

    Tipo

    Descrição

    IndexName (obrigatório)

    string

    Nome do índice.

    Primarykey (obrigatório)

    []string

    Colunas de chave primária do índice.

    • As colunas de chave primária de um índice combinam colunas de chave primária e colunas predefinidas da tabela de dados associada.

    • Para criar um índice secundário local, a primeira coluna de chave primária do índice deve ser igual à primeira coluna de chave primária da tabela de dados.

    DefinedColumns (opcional)

    []string

    Colunas predefinidas do índice.

    • Composto por colunas predefinidas da tabela de dados.

    IndexType (opcional)

    IndexType

    Tipo do índice. Valores válidos:

    • IT_GLOBAL_INDEX (padrão): índice secundário global.

    • IT_LOCAL_INDEX: índice secundário local.

  • StreamSpec (opcional) *StreamSpecification: Informações de configuração do Stream, incluindo os seguintes parâmetros.

    Parâmetro

    Tipo

    Descrição

    EnableStream (opcional)

    bool

    Indica se o Stream deve ser ativado. Valor padrão: false.

    ExpirationTime (opcional)

    int32

    Tempo de expiração do Stream, indicando o período de validade dos logs incrementais. Unidade: horas. Valor máximo: 168 (sete dias).

    • Se EnableStream estiver definido como true, defina ExpirationTime.

  • EnableLocalTxn (opcional) *bool: Indica se as transações locais devem ser ativadas. Valor padrão: false. O valor false indica que as transações locais estão desativadas.

    • Esse recurso é suportado apenas no Go SDK 1.7.8 e versões posteriores.

    • Não é possível usar simultaneamente o recurso de coluna de chave primária com incremento automático e o de transação local. Se você configurar uma coluna de chave primária com incremento automático, as configurações de transação local não terão efeito, mesmo que ativadas.

    • Se o recurso de transação local estiver desativado na criação da tabela de dados e você quiser usá-lo posteriormente, envie um ticket para solicitar a ativação.

  • SSESpecification (opcional) *SSESpecification: Configurações de criptografia de dados, incluindo os seguintes parâmetros.

    Importante

    Ative e configure o recurso de criptografia de dados apenas durante a criação da tabela de dados. Não é possível desativar a criptografia após a criação da tabela.

    Parâmetro

    Tipo

    Descrição

    Enable (opcional)

    bool

    Indica se o recurso de criptografia de dados deve ser ativado. Valor padrão: false.

    KeyType (opcional)

    *SSEKeyType

    Tipo de criptografia. Valores válidos:

    • SSE_KMS_SERVICE: Criptografia baseada no Key Management Service (KMS).

    • SSE_BYOK: Criptografia Bring Your Own Key (BYOK).

    KeyId (opcional)

    *string

    ID da chave mestra do cliente (CMK). Necessário apenas quando keyType está definido como SSE_BYOK.

    RoleArn (opcional)

    *string

    Alibaba Cloud Resource Name (ARN) da função do RAM. Necessário apenas quando keyType está definido como SSE_BYOK.

  • ReservedThroughput (obrigatório) *ReservedThroughput: Throughput de leitura e gravação reservado. Unidade: unidades de capacidade (CUs). Valor padrão: 0. Apenas instâncias de alto desempenho no modo CU permitem definir este parâmetro com um valor diferente de zero.

Código de exemplo

O código de exemplo a seguir cria uma tabela de dados chamada test_table com uma coluna de chave primária do tipo string.

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.")
    }
}

Use os códigos de exemplo a seguir para definir configurações adicionais ao criar uma tabela de dados.

  • Adicionar colunas predefinidas

    tableMeta.AddDefinedColumn("name", tablestore.DefinedColumn_STRING)
  • Definir o deslocamento máximo de versão

    tableOption.DeviationCellVersionInSec = 86400
  • Definir permissão de atualizações

    tableOption.AllowUpdate = proto.Bool(false)
  • Adicionar um índice secundário

    // 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)
  • Configurar definições do Stream

    streamSpec := new(tablestore.StreamSpecification)
    streamSpec.EnableStream = true
    streamSpec.ExpirationTime = 168
    createTableRequest.StreamSpec = streamSpec
  • Ativar transações locais

    enableLocalTxn := proto.Bool(true)
    createTableRequest.EnableLocalTxn = enableLocalTxn
  • Definir o tipo de criptografia de dados

    • Criptografia baseada em KMS

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

      Nota

      Antes de executar o código, obtenha o ID da CMK e o ARN da função do RAM. Para mais informações, consulte Criptografia 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

Referências