Tablestore permite gravar uma única linha de dados, atualizar uma única linha de dados e gravar várias linhas de dados ao mesmo tempo chamando diferentes operações. Para gravar dados em uma tabela de dados, especifique as informações completas da chave primária e as colunas de atributo que deseja adicionar, excluir ou modificar. Para gravar dados em uma aplicação de alta concorrência, configure condições de existência de linha ou condições de coluna para atualizar dados com base nas condições especificadas.
Pré-requisitos
-
Uma instância do OTSClient foi inicializada. Para mais informações, consulte Inicializar uma instância do OTSClient.
-
Uma tabela de dados foi criada e os dados foram gravados na tabela de dados.
Gravar uma única linha de dados
Chame a operação PutRow para gravar uma linha de dados. Se a linha existir, o Tablestore exclui todas as versões de dados em todas as colunas da linha existente e grava novos dados.
Operação de API
// @param PutRowRequest Encapsulate the parameters required to call the PutRow operation.
// @return PutRowResponse
PutRow(request *PutRowRequest) (*PutRowResponse, error) Parâmetros
Parâmetro | Descrição |
TableName | O nome da tabela de dados. |
PrimaryKey | As informações da chave primária da linha. As informações da chave primária incluem o nome, o tipo e o valor da coluna de chave primária. null
|
Columns | As colunas de atributo da linha. Uma coluna de atributo é especificada por parâmetros na seguinte sequência: nome da coluna de atributo, valor da coluna de atributo (ColumnValue), tipo da coluna de atributo (ColumnType) e timestamp. O tipo da coluna de atributo e o timestamp são opcionais.
|
Condition | A condição que pode ser configurada para chamar a operação PutRow. Configure uma condição de existência de linha ou uma condição baseada em valores de coluna. Para mais informações, consulte Configurar atualização condicional. |
Exemplos
O código de exemplo a seguir demonstra como gravar uma única linha de dados:
putRowRequest := new(tablestore.PutRowRequest)
putRowChange := new(tablestore.PutRowChange)
putRowChange.TableName = tableName
putPk := new(tablestore.PrimaryKey)
putPk.AddPrimaryKeyColumn("pk1", "pk1value1")
putPk.AddPrimaryKeyColumn("pk2", int64(2))
putPk.AddPrimaryKeyColumn("pk3", []byte("pk3"))
putRowChange.PrimaryKey = putPk
putRowChange.AddColumn("col1", "col1data1")
putRowChange.AddColumn("col2", int64(3))
putRowChange.AddColumn("col3", []byte("test"))
putRowChange.SetCondition(tablestore.RowExistenceExpectation_IGNORE)
putRowRequest.PutRowChange = putRowChange
_, err := client.PutRow(putRowRequest)
if err != nil {
fmt.Println("putrow failed with error:", err)
} else {
fmt.Println("putrow finished")
} Para visualizar o código de exemplo detalhado, acesse PutRow@GitHub.
Atualizar uma única linha de dados
Chame a operação UpdateRow para atualizar os dados em uma linha. É possível adicionar colunas de atributo a uma linha, remover colunas de atributo de uma linha, excluir uma versão específica de dados de uma coluna de atributo ou atualizar o valor de uma coluna de atributo. Se a linha não existir, uma nova linha será inserida.
Se a operação UpdateRow for chamada apenas para remover colunas de uma linha e a linha não existir, nenhuma linha será inserida na tabela.
Operação de API
// Update a row of data in the table.
// @param UpdateRowRequest Encapsulate the parameters required to call the UpdateRow operation.
// @return UpdateRowResponse The content of the response to the UpdateRow operation.
UpdateRow(request *UpdateRowRequest) (*UpdateRowResponse, error) Parâmetros
Parâmetro | Descrição |
TableName | O nome da tabela de dados. |
PrimaryKey | As informações da chave primária da linha. As informações da chave primária incluem o nome, o tipo e o valor da coluna de chave primária. null O número e os tipos das colunas de chave primária especificadas devem ser iguais ao número e aos tipos reais das colunas de chave primária na tabela. |
Columns | As colunas de atributo da linha.
|
Condition | A condição que pode ser configurada para chamar a operação UpdateRow. Configure uma condição de existência de linha ou uma condição baseada em valores de coluna. Para mais informações, consulte Configurar atualização condicional. |
Exemplos
O código de exemplo a seguir demonstra como atualizar uma única linha de dados:
updateRowRequest := new(tablestore.UpdateRowRequest)
updateRowChange := new(tablestore.UpdateRowChange)
updateRowChange.TableName = tableName
updatePk := new(tablestore.PrimaryKey)
updatePk.AddPrimaryKeyColumn("pk1", "pk1value1")
updatePk.AddPrimaryKeyColumn("pk2", int64(2))
updatePk.AddPrimaryKeyColumn("pk3", []byte("pk3"))
updateRowChange.PrimaryKey = updatePk
updateRowChange.DeleteColumn("col1")
updateRowChange.PutColumn("col2", int64(77))
updateRowChange.PutColumn("col4", "newcol3")
updateRowChange.SetCondition(tablestore.RowExistenceExpectation_EXPECT_EXIST)
updateRowRequest.UpdateRowChange = updateRowChange
_, err := client.UpdateRow(updateRowRequest)
if err != nil {
fmt.Println("update failed with error:", err)
} else {
fmt.Println("update row finished")
} Para visualizar o código de exemplo detalhado, acesse UpdateRow@GitHub.
Gravar várias linhas de dados ao mesmo tempo
Chame a operação BatchWriteRow para gravar várias linhas de dados em uma ou mais tabelas de cada vez.
A operação BatchWriteRow consiste em várias operações PutRow, UpdateRow e DeleteRow. Ao chamar a operação BatchWriteRow, o processo de construção de uma suboperação é o mesmo do processo de chamada da operação PutRow, UpdateRow ou DeleteRow.
Ao chamar a operação BatchWriteRow, o Tablestore executa cada operação PutRow, UpdateRow ou DeleteRow separadamente e retorna a resposta de cada operação individualmente.
Observações de uso
Ao chamar a operação BatchWriteRow para gravar várias linhas de dados ao mesmo tempo, a gravação de algumas linhas pode falhar. Nesse caso, o Tablestore não retorna exceções. O Tablestore retorna BatchWriteRowResponse com os índices e as mensagens de erro das linhas que falharam. Portanto, ao chamar a operação BatchWriteRow, verifique os valores de retorno para determinar se todas as linhas foram gravadas. Se você não verificar os valores de retorno, as linhas cuja gravação falhou podem ser ignoradas.
Se o servidor detectar parâmetros inválidos em algumas operações, uma mensagem de erro poderá ser retornada antes da execução das operações da solicitação.
A operação BatchWriteRow permite gravar até 4 MB de dados em até 200 linhas ao mesmo tempo.
Operação de API
// Add, delete, or update multiple rows of data in multiple tables.
// @param BatchWriteRowRequest Encapsulate the parameters required to call the BatchWriteRow operation.
// @return BatchWriteRowResponse The content of the response to the BatchWriteRow operation.
BatchWriteRow(request *BatchWriteRowRequest) (*BatchWriteRowResponse,error) Exemplos
O código de exemplo a seguir demonstra como gravar 100 linhas de dados ao mesmo tempo:
batchWriteReq := &tablestore.BatchWriteRowRequest{}
for i := 0; i < 100; i++ {
putRowChange := new(tablestore.PutRowChange)
putRowChange.TableName = tableName
putPk := new(tablestore.PrimaryKey)
putPk.AddPrimaryKeyColumn("pk1", "pk1value1")
putPk.AddPrimaryKeyColumn("pk2", int64(i))
putPk.AddPrimaryKeyColumn("pk3", []byte("pk3"))
putRowChange.PrimaryKey = putPk
putRowChange.AddColumn("col1", "fixvalue")
putRowChange.SetCondition(tablestore.RowExistenceExpectation_IGNORE)
batchWriteReq.AddRowChange(putRowChange)
}
response, err := client.BatchWriteRow(batchWriteReq)
if err != nil {
fmt.Println("batch request failed with:", response)
} else {
fmt.Println("batch write row finished")
} Para visualizar o código de exemplo detalhado, acesse BatchWriteRow@GitHub.
Perguntas frequentes
Referências
Para atualizar dados em uma aplicação de alta concorrência com base nas condições especificadas, use o recurso de atualização condicional. Para mais informações, consulte Configurar atualização condicional.
Para coletar estatísticas em tempo real sobre aplicações online, como o número de visualizações de página (PVs) em diversos tópicos, use o recurso de contador atômico. Para mais informações, consulte Configurar contador atômico.
Para executar operações atômicas para gravar uma ou mais linhas de dados, use o recurso de transação local. Para mais informações, consulte Configurar transação local.
Após gravar dados em uma tabela, leia ou exclua os dados na tabela conforme seus requisitos de negócios. Para mais informações, consulte Ler dados e Excluir dados.