全部产品
Search
文档中心

Tablestore:Tulis data

更新时间:Jul 06, 2025

Tablestore memungkinkan Anda menulis satu baris data, memperbarui satu baris data, dan menulis beberapa baris data sekaligus dengan memanggil operasi yang berbeda. Untuk menulis data ke tabel, Anda harus menentukan informasi kunci utama lengkap dan kolom atribut yang ingin ditambahkan, dihapus, atau diubah. Untuk aplikasi dengan konkurensi tinggi, Anda dapat mengonfigurasi kondisi keberadaan baris atau kondisi kolom guna memperbarui data berdasarkan kondisi tertentu.

Prasyarat

  • Instansi OTSClient telah diinisialisasi. Untuk detail lebih lanjut, lihat Inisialisasi Instansi OTSClient.

  • Tabel data telah dibuat, dan data siap ditulis ke tabel tersebut.

Tulis satu baris data

Operasi API

// @param PutRowRequest    Enkapsulasi parameter yang diperlukan untuk memanggil operasi PutRow. 
// @return PutRowResponse
PutRow(request *PutRowRequest) (*PutRowResponse, error)                    

Parameter

Parameter

Deskripsi

NamaTabel

Nama tabel data.

KunciUtama

Informasi kunci utama tentang baris tersebut. Informasi kunci utama mencakup nama, tipe, dan nilai kolom kunci utama.

Penting
  • Jumlah dan tipe kolom kunci utama yang Anda tentukan harus sama dengan jumlah dan tipe kolom kunci utama aktual dalam tabel.

  • Jika kolom kunci utama adalah kolom kunci utama auto-increment, Anda tidak perlu menentukan nilai untuk kolom kunci utama. Anda hanya perlu mengatur kolom kunci utama sebagai kolom kunci utama auto-increment. Untuk informasi lebih lanjut, lihat Konfigurasikan kolom kunci utama auto-increment.

Kolom

Kolom atribut dari baris tersebut. Kolom atribut ditentukan oleh parameter dalam urutan berikut: nama kolom atribut, nilai kolom atribut (ColumnValue), tipe kolom atribut (ColumnType), dan timestamp. Tipe kolom atribut dan timestamp bersifat opsional.

  • Nama kolom atribut adalah nama kolom atribut, dan tipe kolom atribut adalah tipe data dari kolom atribut. Untuk informasi lebih lanjut, lihat Konvensi penamaan dan tipe data.

    Anda dapat mengatur parameter ColumnType ke ColumnType.INTEGER yang menentukan nilai INTEGER, ColumnType.STRING yang menentukan STRING yang dikodekan UTF-8, ColumnType.BINARY yang menentukan nilai BINARY, ColumnType.BOOLEAN yang menentukan nilai BOOLEAN, atau ColumnType.DOUBLE yang menentukan nilai DOUBLE. Jika tipe kolom atribut adalah BINARY, Anda harus mengatur parameter ColumnType ke ColumnType.BINARY. Dalam kasus lain, Anda dapat membiarkan parameter ColumnType kosong.

  • Timestamp adalah nomor versi data. Anda dapat menggunakan nomor versi data yang dihasilkan secara otomatis oleh sistem atau menentukan nomor versi data kustom. Secara default, jika Anda tidak menentukan nomor versi data, nomor versi data yang dihasilkan secara otomatis oleh sistem digunakan. Untuk informasi lebih lanjut, lihat Versi data dan TTL.

    • Secara default, sistem menggunakan timestamp UNIX saat ini sebagai nomor versi data. Timestamp mengikuti format waktu UNIX. Ini adalah jumlah milidetik yang telah berlalu sejak pukul 00:00:00 Kamis, 1 Januari 1970.

    • Jika Anda menentukan nomor versi, pastikan bahwa nomor versi adalah timestamp 64-bit yang akurat hingga milidetik dan berada dalam rentang versi yang valid.

Kondisi

Kondisi yang dapat Anda konfigurasikan untuk memanggil operasi PutRow. Anda dapat mengonfigurasi kondisi keberadaan baris atau kondisi berdasarkan nilai kolom. Untuk informasi lebih lanjut, lihat Konfigurasikan pembaruan bersyarat.

Contoh

Berikut adalah contoh kode untuk menulis satu baris data:

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 gagal dengan kesalahan:", err)
} else {
    fmt.Println("putrow selesai")
 }                    

Untuk melihat contoh kode lengkap, kunjungi PutRow@GitHub.

Perbarui satu baris data

Operasi API

// Perbarui satu baris data dalam tabel. 
// @param UpdateRowRequest      Enkapsulasi parameter yang diperlukan untuk memanggil operasi UpdateRow. 
// @return UpdateRowResponse    Isi respons terhadap operasi UpdateRow. 
UpdateRow(request *UpdateRowRequest) (*UpdateRowResponse, error)                    

Parameter

Parameter

Deskripsi

NamaTabel

Nama tabel data.

KunciUtama

Informasi kunci utama tentang baris tersebut. Informasi kunci utama mencakup nama, tipe, dan nilai kolom kunci utama.

Penting

Jumlah dan tipe kolom kunci utama yang Anda tentukan harus sama dengan jumlah dan tipe kolom kunci utama aktual dalam tabel.

Kolom

Kolom atribut dari baris tersebut.

    Kondisi

    Kondisi yang dapat Anda konfigurasikan untuk memanggil operasi UpdateRow. Anda dapat mengonfigurasi kondisi keberadaan baris atau kondisi berdasarkan nilai kolom. Untuk informasi lebih lanjut, lihat Konfigurasikan pembaruan bersyarat.

    Contoh

    Berikut adalah contoh kode untuk memperbarui satu baris data:

    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("pembaruan gagal dengan kesalahan:", err)
    } else {
        fmt.Println("pembaruan baris selesai")
    }                    

    Untuk melihat contoh kode lengkap, kunjungi UpdateRow@GitHub.

    Tulis beberapa baris data sekaligus

    Catatan penggunaan

    • Saat memanggil operasi BatchWriteRow untuk menulis beberapa baris data sekaligus, beberapa baris mungkin gagal ditulis. Dalam situasi ini, Tablestore tidak mengembalikan pengecualian, melainkan mengembalikan BatchWriteRowResponse yang mencakup indeks dan pesan kesalahan dari baris yang gagal. Oleh karena itu, saat memanggil operasi BatchWriteRow, pastikan untuk memeriksa nilai kembali guna menentukan apakah semua baris berhasil ditulis. Jika nilai kembali tidak diperiksa, baris yang gagal ditulis mungkin terabaikan.

    • Anda dapat memanggil operasi BatchWriteRow untuk menulis hingga 4 MB data dalam maksimal 200 baris sekaligus.

    Operasi API

    // Tambahkan, hapus, atau perbarui beberapa baris data dalam beberapa tabel. 
    // @param BatchWriteRowRequest             Enkapsulasi parameter yang diperlukan untuk memanggil operasi BatchWriteRow. 
    // @return  BatchWriteRowResponse          Isi respons terhadap operasi BatchWriteRow. 
    BatchWriteRow(request *BatchWriteRowRequest) (*BatchWriteRowResponse,error)                  

    Contoh

    Berikut adalah contoh kode untuk menulis 100 baris data sekaligus:

    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("permintaan batch gagal dengan:", response)
    } else {
        fmt.Println("penulisan baris batch selesai")
    }                   

    Untuk melihat contoh kode lengkap, kunjungi BatchWriteRow@GitHub.

    FAQ

    Referensi

    • Untuk memperbarui data dalam aplikasi dengan konkurensi tinggi berdasarkan kondisi tertentu, Anda dapat menggunakan fitur pembaruan bersyarat. Untuk informasi lebih lanjut, lihat Konfigurasikan Pembaruan Bersyarat.

    • Untuk mengumpulkan statistik real-time tentang aplikasi online, seperti jumlah tampilan halaman (PV) pada berbagai topik, Anda dapat menggunakan fitur penghitung atomik. Untuk informasi lebih lanjut, lihat Konfigurasikan Penghitung Atomik.

    • Untuk melakukan operasi atomik untuk menulis satu atau lebih baris data, Anda dapat menggunakan fitur transaksi lokal. Untuk informasi lebih lanjut, lihat Konfigurasikan Transaksi Lokal.

    • Setelah data ditulis ke tabel, Anda dapat membaca atau menghapus data sesuai kebutuhan bisnis. Untuk informasi lebih lanjut, lihat Baca Data dan Hapus Data.