Tablestore memungkinkan Anda membaca satu baris data atau data dengan nilai kunci primer dalam rentang tertentu dari tabel indeks. Jika tabel indeks mencakup kolom atribut yang ingin diambil, Anda dapat membaca langsung dari tabel indeks. Namun, jika tidak, Anda harus mengambil data dari tabel utama tempat indeks dibuat.
Prasyarat
Sebuah instance OTSClient telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi klien Tablestore.
Indeks sekunder telah dibuat. Untuk informasi lebih lanjut, lihat Buat indeks sekunder.
Catatan penggunaan
Anda hanya dapat menggunakan tabel indeks untuk membaca data.
Jika kolom atribut yang ingin diambil tidak termasuk dalam tabel indeks, Anda harus 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:
Tetapkan 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
Kode sampel berikut menunjukkan cara membaca satu baris data dalam tabel indeks berdasarkan kunci primernya:
public static void GetRowfromIndex()
{
OTSClient otsClient = Config.GetClient();
// Konstruksi kunci primer. Saat Anda membangun kunci primer, Anda harus menentukan kolom kunci primer tabel data yang tidak ditentukan sebagai kolom indeks.
PrimaryKey primaryKey = new PrimaryKey
{
{ "col0", new ColumnValue(0) },
{ "pk1", new ColumnValue(0) },
{ "pk2", new ColumnValue("abc") }
};
try
{
// Bangun objek permintaan kueri. Seluruh baris akan dibaca jika tidak ada kolom atribut yang ditentukan.
var request = new GetRowRequest(IndexName, primaryKey);
// Panggil operasi GetRow untuk mengambil data.
var response = otsClient.GetRow(request);
Console.WriteLine("Primary Key: " + response.PrimaryKey);
Console.WriteLine("Attribute Column: " + response.Columns[0]);
// Jika tidak ada pengecualian yang dikembalikan, operasi berhasil.
Console.WriteLine("Pembacaan baris berhasil.");
}
catch (Exception ex)
{
// Jika pengecualian dikembalikan, operasi gagal. Tangani pengecualian.
Console.WriteLine("Pembacaan baris gagal, pengecualian:{0}", ex.Message);
}
}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:
Tetapkan 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 dikueri, Anda harus menyertakan kolom indeks dan kolom kunci primer tabel utama.
Contoh
Kode sampel berikut menunjukkan cara membaca data yang nilai kunci primernya berada dalam rentang tertentu dari tabel indeks. Dalam contoh ini, kolom kunci primer pertama dari tabel indeks adalah col1, dengan nilai 0 untuk rentang yang ditentukan.
public static void GetRangeFromIndexTable()
{
Console.WriteLine("Mulai getRange dari indeks...");
OTSClient otsClient = Config.GetClient();
// Tentukan nilai kolom kunci primer pertama col1 dan pindai data.
PrimaryKey inclusiveStartPrimaryKey = new PrimaryKey
{
{ "col1", new ColumnValue(0) },
{ "pk1", ColumnValue.INF_MIN },
{ "pk2", ColumnValue.INF_MIN }
};
PrimaryKey exclusiveEndPrimaryKey = new PrimaryKey
{
{ "col1", new ColumnValue(0) },
{ "pk1", ColumnValue.INF_MAX },
{ "pk2", ColumnValue.INF_MAX }
};
GetRangeRequest request = new GetRangeRequest(IndexName, GetRangeDirection.Forward, inclusiveStartPrimaryKey, exclusiveEndPrimaryKey);
GetRangeResponse response = otsClient.GetRange(request);
IList<Row> rows = response.RowDataList;
PrimaryKey nextStartPrimaryKey = response.NextPrimaryKey;
while (nextStartPrimaryKey != null)
{
request = new GetRangeRequest(TableName, GetRangeDirection.Forward, nextStartPrimaryKey, exclusiveEndPrimaryKey);
response = otsClient.GetRange(request);
nextStartPrimaryKey = response.NextPrimaryKey;
foreach (var row in response.RowDataList)
{
rows.Add(row);
}
}
foreach (var row in rows)
{
PrintRow(row);
}
Console.WriteLine("TotalRowsRead: " + rows.Count);
}
private static void PrintRow(Row row)
{
Console.WriteLine("-----------------");
foreach (KeyValuePair<string, ColumnValue> entry in row.GetPrimaryKey())
{
Console.WriteLine(entry.Key + ":" + entry.Value);
}
foreach (Column entry in row.GetColumns())
{
Console.WriteLine(entry.Name + ":" + entry.Value);
}
Console.WriteLine("-----------------");
} FAQ
Referensi
Untuk bisnis yang memerlukan kueri multi-dimensi dan analisis data, Anda dapat membuat indeks pencarian dan menentukan atribut yang diperlukan sebagai bidang indeks pencarian. Kemudian, Anda dapat mengkueri dan menganalisis data menggunakan indeks pencarian. Contohnya meliputi kueri berdasarkan kolom non-kunci primer, kueri Boolean, kueri fuzzy, serta mendapatkan nilai maksimum/minimum, statistik jumlah baris, dan pengelompokan hasil kueri. Untuk informasi lebih lanjut, lihat Indeks pencarian.
Jika Anda ingin mengeksekusi pernyataan SQL untuk mengkueri dan menganalisis data, Anda dapat menggunakan fitur kueri SQL. Untuk informasi lebih lanjut, lihat Kueri SQL.