全部产品
Search
文档中心

Tablestore:Gunakan indeks sekunder untuk membaca data

更新时间:Jul 02, 2025

Tablestore memungkinkan Anda membaca satu baris data atau data dengan nilai kunci primer dalam rentang tertentu dari tabel indeks. Jika tabel indeks berisi kolom atribut yang ingin dikembalikan, Anda dapat membaca langsung dari tabel indeks. Namun, jika tidak, Anda harus mengambil data dari tabel utama tempat indeks dibuat.

Prasyarat

Catatan penggunaan

  • Anda hanya dapat menggunakan tabel indeks untuk membaca data.

  • Kolom kunci primer pertama dari indeks sekunder lokal harus sama dengan kolom kunci primer pertama dari tabel utama.

  • Jika kolom atribut yang ingin dikembalikan tidak ada dalam tabel indeks, Anda perlu mengambil data dari tabel utama tempat indeks dibuat untuk mendapatkan kolom atribut tersebut.

Baca satu baris data

Anda dapat memanggil operasi GetRow untuk membaca satu baris data. Untuk informasi lebih lanjut, lihat Baca satu baris data.

Parameter

Saat memanggil operasi GetRow untuk membaca data dari tabel indeks, perhatikan hal-hal berikut:

  • Atur parameter tableName ke nama tabel indeks.

  • Tablestore secara otomatis menambahkan kolom kunci primer tabel utama yang tidak ditentukan sebagai kolom indeks ke tabel indeks sebagai kolom kunci primer tambahan. Oleh karena itu, saat menentukan kolom kunci primer suatu baris dalam tabel indeks, Anda harus menyertakan kolom indeks dan kolom kunci primer tabel utama.

Contoh

Gunakan indeks sekunder global

Kode sampel berikut menunjukkan cara membaca baris data dalam indeks sekunder global berdasarkan kunci primer baris:

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

var params = {
  // Tentukan nama tabel indeks. 
  tableName: "<INDEX_NAME>",  
  // Tentukan informasi tentang kunci primer baris dalam tabel indeks. 
  primaryKey: [{ 'col1': Long.fromNumber(2) }, { 'pk1': Long.fromNumber(2) }, { 'pk2': Long.fromNumber(1) }]
};

client.getRow(params, function (err, data) {
  if (err) {
    console.log('error:', err);
    return;
  }
  console.log('success:', JSON.stringify(data.row, null, 2));
});

Gunakan indeks sekunder lokal

Kode sampel berikut menunjukkan cara membaca baris data dalam indeks sekunder lokal berdasarkan kunci primer baris:

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

var params = {
  // Tentukan nama tabel indeks. 
  tableName: "<INDEX_NAME>", 
  // Tentukan informasi tentang kunci primer baris dalam tabel indeks. Kolom kunci primer pertama tabel indeks harus sama dengan kolom kunci primer pertama tabel data. 
  primaryKey: [{ 'pk1': Long.fromNumber(1) }, { 'col1': Long.fromNumber(2) }, { 'pk2': Long.fromNumber(2) }]
};

client.getRow(params, function (err, data) {
  if (err) {
    console.log('error:', err);
    return;
  }
  console.log('success:', JSON.stringify(data.row, null, 2));
});

Baca data yang nilai kunci primernya berada dalam rentang tertentu

Anda dapat memanggil operasi GetRange untuk membaca data yang nilai kunci primernya berada dalam rentang tertentu. Untuk informasi lebih lanjut, lihat Baca data yang nilai kunci primernya berada dalam rentang tertentu.

Parameter

Saat memanggil operasi GetRange untuk membaca data dari tabel indeks, perhatikan hal-hal berikut:

  • Atur parameter tableName ke nama tabel indeks.

  • Tablestore secara otomatis menambahkan kolom kunci primer tabel utama yang tidak ditentukan sebagai kolom indeks ke tabel indeks sebagai kolom kunci primer tambahan. Oleh karena itu, saat menentukan kunci primer awal dan akhir dari rentang yang ingin dibaca, Anda harus menyertakan kolom indeks dan kolom kunci primer tabel utama.

Contoh

Gunakan indeks sekunder global

Kode sampel berikut menunjukkan cara membaca data yang nilai kunci primernya berada dalam rentang tertentu dari indeks sekunder global. Dalam contoh ini, kolom kunci primer pertama dari indeks sekunder global adalah col1 dengan nilai 1 untuk rentang yang ditentukan.

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

var params = {
  // Tentukan nama tabel indeks. Dalam contoh ini, col1 adalah kolom kunci primer pertama dari tabel indeks. pk1 dan pk2 adalah kolom kunci primer tabel data. Tablestore secara otomatis menambahkan pk1 dan pk2 ke tabel indeks sebagai kolom kunci primer tabel indeks. 
  tableName: "<INDEX_NAME>", 
  // Tentukan bahwa data dibaca dalam arah maju. 
  direction: TableStore.Direction.FORWARD,
  // Tentukan jumlah maksimum versi data yang ingin Anda kembalikan. 
  maxVersions: 10,
  // Tentukan kunci primer awal dan akhir. Rentang nilai kunci primer adalah interval tertutup-kiri, terbuka-kanan. INF_MIN menunjukkan nilai yang sangat kecil. INF_MAX menunjukkan nilai yang sangat besar. 
  inclusiveStartPrimaryKey: [{ "col1": Long.fromNumber(1) }, { "pk1": TableStore.INF_MIN }, { "pk2": TableStore.INF_MIN }],
  exclusiveEndPrimaryKey: [{ "col1": Long.fromNumber(1) }, { "pk1": TableStore.INF_MAX }, { "pk2": TableStore.INF_MAX }],
  // Tentukan jumlah maksimum baris yang dapat dikembalikan untuk satu panggilan. 
  limit: 2
};

var resultRows = []

var getRange = function () {
  client.getRange(params, function (err, data) {
    if (err) {
      console.log('error:', err);
      return;
    }
    resultRows = resultRows.concat(data.rows)

    // Jika parameter data.next_start_primary_key tidak kosong dalam respons, lanjutkan membaca data. 
    if (data.nextStartPrimaryKey) {
      params.inclusiveStartPrimaryKey = [
        { "col1": data.nextStartPrimaryKey[0].value },
        { "pk1": data.nextStartPrimaryKey[1].value },
        { "pk2": data.nextStartPrimaryKey[2].value }
      ];
      getRange()
    } else {
      console.log(JSON.stringify(resultRows));
    }
  });
}

getRange()

Gunakan indeks sekunder lokal

Kode sampel berikut menunjukkan cara membaca semua baris data dari indeks sekunder lokal:

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

var params = {
  // Tentukan nama tabel indeks. Dalam contoh ini, pk1 dan col1 ditentukan sebagai kolom kunci primer tabel indeks. pk2 adalah kolom kunci primer tabel data. Tablestore secara otomatis menambahkan pk2 ke tabel indeks sebagai kolom kunci primer tabel indeks. 
  tableName: "<INDEX_NAMW>", 
  // Tentukan bahwa data dibaca dalam arah maju. 
  direction: TableStore.Direction.FORWARD,
  // Tentukan jumlah maksimum versi data yang ingin Anda kembalikan. 
  maxVersions: 10,
  // Tentukan kunci primer awal dan akhir. Rentang nilai kunci primer adalah interval tertutup-kiri, terbuka-kanan. INF_MIN menunjukkan nilai yang sangat kecil. INF_MAX menunjukkan nilai yang sangat besar. 
  inclusiveStartPrimaryKey: [{ "pk1": TableStore.INF_MIN }, { "col1": TableStore.INF_MIN }, { "pk2": TableStore.INF_MIN }],
  exclusiveEndPrimaryKey: [{ "pk1": TableStore.INF_MAX }, { "col1": TableStore.INF_MAX }, { "pk2": TableStore.INF_MAX }],
  // Tentukan jumlah maksimum baris yang dapat dikembalikan untuk satu panggilan. 
  limit: 2
};

var resultRows = []

var getRange = function () {
  client.getRange(params, function (err, data) {
    if (err) {
      console.log('error:', err);
      return;
    }
    resultRows = resultRows.concat(data.rows)

    // Jika parameter data.next_start_primary_key tidak kosong dalam respons, lanjutkan membaca data. 
    if (data.nextStartPrimaryKey) {
      params.inclusiveStartPrimaryKey = [
        { "pk1": data.nextStartPrimaryKey[0].value },
        { "col1": data.nextStartPrimaryKey[1].value },
        { "pk2": data.nextStartPrimaryKey[2].value }
      ];
      getRange()
    } else {
      console.log(JSON.stringify(resultRows));
    }
  });
}

getRange()

FAQ

Referensi

  • Jika bisnis Anda memerlukan kueri multi-dimensi dan analisis data, Anda dapat membuat indeks pencarian dan menentukan atribut yang diperlukan sebagai bidang indeks pencarian. Kemudian, Anda dapat menanyakan dan menganalisis data menggunakan indeks pencarian. Misalnya, Anda dapat menggunakan indeks pencarian untuk melakukan kueri berdasarkan kolom non-kunci primer, kueri Boolean, dan kueri fuzzy. Anda juga dapat menggunakan indeks pencarian untuk mendapatkan nilai maksimum dan minimum, mengumpulkan statistik tentang jumlah baris, dan mengelompokkan hasil kueri. Untuk informasi lebih lanjut, lihat Indeks pencarian.

  • Jika Anda ingin menjalankan pernyataan SQL untuk menanyakan dan menganalisis data, Anda dapat menggunakan fitur kueri SQL. Untuk informasi lebih lanjut, lihat Kueri SQL.