全部产品
Search
文档中心

Tablestore:Tulis data

更新时间:Jul 06, 2025

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

Prasyarat

Tulis satu baris data

Operasi API

/**
 * Masukkan data ke baris tertentu. Jika baris sudah ada, data yang ada akan ditimpa. Jika tidak, baris baru akan ditambahkan.
 */
putRow(params, callback)

Parameter

Parameter

Deskripsi

tableName

Nama tabel data.

primaryKey

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 hanya perlu menetapkan nilai kolom kunci utama auto-increment sebagai placeholder. Untuk informasi lebih lanjut, lihat Konfigurasikan kolom kunci utama auto-increment.

condition

Kondisi yang harus dipenuhi untuk melakukan operasi. Anda dapat menentukan kondisi keberadaan baris atau kondisi berbasis nilai kolom. Untuk informasi lebih lanjut, lihat Konfigurasikan pembaruan bersyarat.

Catatan
  • RowExistenceExpectation.IGNORE menentukan bahwa data baru dimasukkan ke baris tanpa memandang apakah baris yang ditentukan ada. Jika baris yang ditentukan ada, data yang ada akan ditimpa.

  • RowExistenceExpectation.EXPECT_EXIST menentukan bahwa data baru hanya dimasukkan jika baris yang ditentukan ada. Data yang ada akan ditimpa.

  • RowExistenceExpectation.EXPECT_NOT_EXIST menentukan bahwa data hanya dimasukkan jika baris yang ditentukan tidak ada.

attributeColumns

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

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

    Anda dapat menggunakan ColumnType.INTEGER untuk menentukan nilai INTEGER, ColumnType.STRING untuk menentukan STRING yang dikodekan UTF-8, ColumnType.BINARY untuk menentukan nilai BINARY, ColumnType.BOOLEAN untuk menentukan nilai BOOLEAN, atau ColumnType.DOUBLE untuk menentukan nilai DOUBLE. Jika tipe kolom atribut adalah BINARY, Anda harus menggunakan ColumnType.BINARY. Dalam kasus lain, Anda dapat meninggalkan tipe kolom atribut tidak ditentukan.

  • Timestamp adalah nomor versi data. Untuk informasi lebih lanjut, lihat Versi data dan TTL.

    Anda dapat menggunakan nomor versi data yang dihasilkan secara otomatis oleh sistem atau menentukan nomor versi data kustom. Jika Anda tidak menentukan nomor versi data, nomor versi data yang dihasilkan secara otomatis oleh sistem digunakan.

    • Nomor versi data yang dihasilkan oleh Tablestore adalah jumlah milidetik yang telah berlalu sejak pukul 00:00:00 UTC pada 1 Januari 1970.

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

returnContent

Tipe pengembalian.

returnType: Anda dapat menetapkan parameter returnType ke TableStore.ReturnType.Primarykey untuk mengembalikan kunci utama baris. Parameter ini digunakan oleh fitur kolom kunci utama auto-increment.

Contoh

Berikut adalah contoh kode untuk menulis satu baris data:

var TableStore = require('../index.js');
var Long = TableStore.Long;
var client = require('./client');

var currentTimeStamp = Date.now();
var params = {
  tableName: "sampleTable",
  condition: new TableStore.Condition(TableStore.RowExistenceExpectation.IGNORE, null),
  primaryKey: [{ 'gid': Long.fromNumber(20013) }, { 'uid': Long.fromNumber(20013) }],
  attributeColumns: [
    { 'col1': 'Tablestore' },
    { 'col2': '2', 'timestamp': currentTimeStamp },
    { 'col3': 3.1 },
    { 'col4': -0.32 },
    { 'col5': Long.fromNumber(123456789) }
  ],
  returnContent: { returnType: TableStore.ReturnType.Primarykey }
};

client.putRow(params, function (err, data) {
  if (err) {
    console.log('error:', err);
    return;
  }

  console.log('success:', data);
});

Untuk kode contoh terperinci, kunjungi PutRow@GitHub.

Perbarui satu baris data

Operasi API

/**
 * Perbarui data baris yang ditentukan. Jika baris tidak ada, baris baru ditambahkan. Jika baris ada, nilai kolom yang ditentukan dari baris tersebut ditambahkan, diubah, atau dihapus berdasarkan konten permintaan.
 */
updateRow(params, callback)

Parameter

Parameter

Deskripsi

tableName

Nama tabel data.

primaryKey

Informasi kunci utama tentang baris tersebut.

Penting

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

condition

Kondisi yang harus dipenuhi untuk melakukan operasi. Anda dapat menentukan kondisi keberadaan baris atau kondisi berbasis nilai kolom. Untuk informasi lebih lanjut, lihat Konfigurasikan pembaruan bersyarat.

updateOfAttributeColumns

Kolom atribut yang ingin Anda perbarui.

    Contoh

    Berikut adalah contoh kode untuk memperbarui satu baris data:

    var TableStore = require('../index.js');
    var Long = TableStore.Long;
    var client = require('./client');
    
    var params = {
        tableName: "sampleTable",
        condition: new TableStore.Condition(TableStore.RowExistenceExpectation.IGNORE, null),
        primaryKey: [{ 'gid': Long.fromNumber(9) }, { 'uid': Long.fromNumber(90) }],
        updateOfAttributeColumns: [
            { 'PUT': [{ 'col4': Long.fromNumber(4) }, { 'col5': '5' }, { 'col6': Long.fromNumber(6) }] },
            { 'DELETE': [{ 'col1': Long.fromNumber(1496826473186) }] },
            { 'DELETE_ALL': ['col2'] }
        ]
    };
    
    client.updateRow(params,
        function (err, data) {
            if (err) {
                console.log('error:', err);
                return;
            }
    
            console.log('success:', data);
        });                

    Untuk kode contoh terperinci, kunjungi UpdateRow@GitHub.

    Tulis beberapa baris data sekaligus

    Catatan penggunaan

    • Ketika menggunakan operasi BatchWriteRow untuk menulis beberapa baris data sekaligus, beberapa baris mungkin gagal ditulis. Dalam hal ini, Tablestore tidak mengembalikan pengecualian. Sebagai gantinya, Tablestore mengembalikan BatchWriteRowResponse yang mencakup indeks dan pesan kesalahan dari baris yang gagal. Oleh karena itu, pastikan untuk memeriksa nilai pengembalian untuk menentukan apakah semua baris berhasil ditulis. Jika tidak, baris yang gagal mungkin diabaikan.

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

    Operasi API

    /**
     // Tambahkan, hapus, atau perbarui beberapa baris data di beberapa tabel.
     */
    batchWriteRow(params, callback)

    Parameter

    Operasi BatchWriteRow terdiri dari beberapa operasi PutRow, UpdateRow, dan DeleteRow.

    • Hierarki dibuat untuk tabel. Beberapa tabel dapat diproses sekaligus.

      Anda dapat mengonfigurasi parameter tables untuk menentukan informasi tentang tabel dan baris tempat Anda ingin melakukan operasi tulis, pembaruan, atau penghapusan.

    • Parameter type ditambahkan untuk membedakan antara tipe operasi yang berbeda.

      Anda dapat menetapkan tipe operasi ke PUT, UPDATE, atau DELETE.

      • Jika Anda menetapkan tipe operasi ke PUT atau UPDATE, primaryKey dan attributeColumns valid.

      • Jika Anda menetapkan tipe operasi ke DELETE, primaryKey valid.

    Contoh

    Berikut adalah contoh kode untuk menulis beberapa baris data sekaligus:

    var client = require('./client');
    var TableStore = require('../index.js');
    var Long = TableStore.Long;
    
    var params = {
    
        tables: [
            {
                tableName: 'sampleTable',
                rows: [
                    {
                        type: 'UPDATE',
                        condition: new TableStore.Condition(TableStore.RowExistenceExpectation.IGNORE, null),
                        primaryKey: [{ 'gid': Long.fromNumber(20010) }, { 'uid': Long.fromNumber(20010) }],
                        attributeColumns: [{ 'PUT': [{ 'col1': 'test3' }, { 'col2': 'test4' }] }],
                        returnContent: { returnType: 1 }
                    },
                    {
                        type: 'PUT',
                        condition: new TableStore.Condition(TableStore.RowExistenceExpectation.IGNORE, null),
                        primaryKey: [{ 'gid': Long.fromNumber(20020) }, { 'uid': Long.fromNumber(20020) }],
                        attributeColumns: [{ 'col1': 'test1' }, { 'col2': 'test2' }],
                        returnContent: { returnType: TableStore.ReturnType.Primarykey }
                    },
                    {
                        type: 'DELETE',
                        condition: new TableStore.Condition(TableStore.RowExistenceExpectation.IGNORE, null),
                        primaryKey: [{ 'gid': Long.fromNumber(20018) }, { 'uid': Long.fromNumber(20018) }],
                    }
                ]
            }
        ],
    };
    
    client.batchWriteRow(params, function (err, data) {
    
        if (err) {
            console.log('error:', err);
            return;
        }
    
        console.log('success:', data);
    });                   

    Untuk kode contoh terperinci, 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 waktu nyata tentang aplikasi online, seperti jumlah tampilan halaman (PV) pada berbagai topik, Anda dapat menggunakan fitur penghitung atomik. Untuk informasi lebih lanjut, lihat Gunakan Fitur Penghitung Atomik.

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

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