Topik ini menjelaskan cara membuat tabel data di Tablestore menggunakan SDK .NET.
Catatan penggunaan
Setelah membuat tabel data, tunggu hingga tabel dimuat sebelum melakukan operasi pada data. Jika tidak, operasi tersebut akan gagal. Proses ini biasanya memerlukan waktu beberapa detik.
Deskripsi metode
public CreateTableResponse CreateTable(CreateTableRequest request)
Metode asinkron:
public Task<CreateTableResponse> CreateTableAsync(CreateTableRequest request)
Parameter CreateTableRequest
TableMeta (wajib) TableMeta: Informasi skema tabel, mencakup parameter berikut.
Parameter | Tipe | Deskripsi |
TableName (wajib) | string | Nama tabel data. |
PrimaryKeySchema (wajib) | PrimaryKeySchema | Informasi tentang primary key. Anda dapat mengonfigurasi 1 hingga 4 kolom primary key, yang diurutkan secara default dalam urutan menaik. Kolom primary key pertama berfungsi sebagai partition key. Tipe data kolom primary key meliputi STRING, INTEGER, dan BINARY. Anda dapat menentukan kolom primary key tipe INTEGER yang bukan partition key sebagai primary key auto-increment.
|
DefinedColumnSchema (opsional) | DefinedColumnSchema | Informasi tentang kolom yang telah ditentukan sebelumnya. Kolom yang telah ditentukan sebelumnya adalah kolom atribut yang telah ditentukan sebelumnya. Anda dapat menggunakan kolom yang telah ditentukan sebelumnya untuk membuat indeks sekunder dan indeks pencarian. Tipe data kolom yang telah ditentukan sebelumnya meliputi STRING, INTEGER, BINARY, DOUBLE, dan BOOLEAN.
|
TableOptions (opsional) TableOptions: Informasi konfigurasi tabel, mencakup parameter berikut.
Parameter | Tipe | Deskripsi |
TimeToLive (opsional) | int | Waktu hidup (TTL) data, dalam detik. Nilai default adalah -1. Ketika parameter ini disetel ke -1, data tidak pernah kedaluwarsa. Sebaliknya, nilai minimum adalah 86400 (satu hari). Data yang melebihi periode retensi TTL akan dihapus secara otomatis. Jika Anda ingin menggunakan indeks pencarian atau indeks sekunder, Anda harus menyetel parameter ini ke -1 atau menyetel parameter AllowUpdate ke false.
|
MaxVersions (opsional) | int | Jumlah maksimum versi. Nilai default adalah 1. |
DeviationCellVersionInSec (opsional) | long | Offset versi maksimum, dalam detik. Nilai default adalah 86400 (satu hari). Selisih antara waktu sistem saat ini dan timestamp data yang ditulis harus berada dalam offset versi maksimum. Jika tidak, operasi penulisan akan gagal. Rentang versi valid untuk data kolom atribut adalah [max(Waktu data ditulis - Offset versi maksimum, Waktu data ditulis - TTL), Waktu data ditulis + Offset versi maksimum).
|
AllowUpdate (opsional) | bool | Menentukan apakah pembaruan diizinkan. Nilai default adalah true. |
IndexMetas (opsional) List<IndexMeta>: Daftar indeks sekunder. Setiap indeks mencakup parameter berikut.
Parameter | Tipe | Deskripsi |
IndexName (wajib) | string | Nama indeks. |
PrimaryKey (wajib) | List<string> | Kolom primary key dari indeks. |
DefinedColumns (opsional) | List<string> | Kolom yang telah ditentukan sebelumnya dari indeks. |
IndexType (opsional) | IndexType | Tipe indeks. Nilai tetap adalah IT_GLOBAL_INDEX, yang menunjukkan indeks sekunder global. |
IndexUpdateModel (opsional) | IndexUpdateMode | Mode pembaruan indeks. Nilai tetap adalah IUM_ASYNC_INDEX, yang menunjukkan pembaruan asinkron. |
StreamSpecification (opsional) StreamSpecification: Informasi konfigurasi Stream, mencakup parameter berikut.
Parameter | Tipe | Deskripsi |
EnableStream (wajib) | bool | Menentukan apakah akan mengaktifkan Stream. Nilai default adalah false. |
ExpirationTime (opsional) | int | Waktu kedaluwarsa Stream, yang menunjukkan periode retensi log inkremental. Satuannya adalah jam. Nilai maksimum adalah 168 (tujuh hari). |
ReservedThroughput (wajib) CapacityUnit: throughput baca dan tulis yang dicadangkan, dalam unit kapasitas (CUs). Anda dapat menyetel parameter ini ke nilai non-nol, dan pengaturan ini hanya berlaku untuk tabel data dalam instance performa tinggi dalam mode CU.
Kode contoh
Berikut adalah contoh kode untuk membuat tabel bernama test_table dengan satu kolom primary key bertipe String.
try
{
// Setidaknya satu kolom primary key diperlukan untuk membuat tabel data.
PrimaryKeySchema primaryKeySchema = new PrimaryKeySchema
{
{ "id", ColumnValueType.String }
};
// Bangun informasi skema tabel data.
TableMeta tableMeta = new TableMeta("test_table", primaryKeySchema);
// Anda harus menyetel throughput baca dan tulis yang dicadangkan ketika membuat tabel data (Anda dapat menyetel parameter ini ke nilai non-nol dan pengaturan ini hanya berlaku untuk tabel data dalam instance performa tinggi dalam mode CU).
CapacityUnit reservedThroughput = new CapacityUnit(0, 0);
// Bangun permintaan dan kirimkan.
CreateTableRequest request = new CreateTableRequest(tableMeta, reservedThroughput);
client.CreateTable(request);
Console.WriteLine("Pembuatan tabel berhasil.");
}
catch (Exception ex)
{
Console.WriteLine($"Pembuatan tabel gagal, pengecualian:{ex.Message}");
}
Anda juga dapat merujuk ke contoh kode berikut untuk mengonfigurasi pengaturan tambahan saat membuat tabel data.
Tambahkan kolom yang telah ditentukan sebelumnya
DefinedColumnSchema definedColumnSchema = new DefinedColumnSchema
{
{ "name" , DefinedColumnType.STRING }
};
tableMeta.DefinedColumnSchema = definedColumnSchema;
Tentukan offset versi maksimum
TableOptions tableOptions = new TableOptions();
tableOptions.DeviationCellVersionInSec = 86400;
request.TableOptions = tableOptions;
Tentukan apakah pembaruan diizinkan
TableOptions tableOptions = new TableOptions();
tableOptions.AllowUpdate = false;
request.TableOptions = tableOptions;
Tambahkan indeks sekunder
// Bangun daftar indeks sekunder.
List<IndexMeta> indexMetas = new List<IndexMeta>();
// Bangun indeks sekunder.
IndexMeta indexMeta = new IndexMeta("test_table_index");
// Tentukan primary key dari indeks.
indexMeta.PrimaryKey = new List<string>() { "id", "name" };
// Tentukan tipe indeks.
indexMeta.IndexType = IndexType.IT_GLOBAL_INDEX;
// Tentukan mode pembaruan indeks.
indexMeta.IndexUpdateModel = IndexUpdateMode.IUM_ASYNC_INDEX;
// Tambahkan indeks sekunder.
indexMetas.Add(indexMeta);
// Bangun permintaan.
CreateTableRequest request = new CreateTableRequest(tableMeta, reservedThroughput, indexMetas);
Tentukan informasi Stream
StreamSpecification streamSpecification = new StreamSpecification(true);
streamSpecification.ExpirationTime = 168;
request.StreamSpecification = streamSpecification;