Buat tabel Model Kolom Lebar menggunakan Tablestore SDK for Java, serta konfigurasikan skema, versi data, indeks, Stream, dan enkripsi dalam satu permintaan.
Prasyarat
Instal Tablestore SDK for Java dan inisialisasi klien.
Deskripsi
Panggil metode createTable untuk membuat tabel Model Kolom Lebar. Permintaan harus mencakup setidaknya satu kolom kunci primer serta menentukan time to live (TTL) dan jumlah maksimum versi.
public CreateTableResponse createTable(CreateTableRequest createTableRequest) throws TableStoreException, ClientExceptionContoh berikut membuat tabel bernama example_table dengan satu kolom kunci primer bertipe STRING, data yang tidak pernah kedaluwarsa, dan hanya menyimpan satu versi data.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
client.createTable(request);Setelah membuat tabel, tunggu hingga tabel dimuat sepenuhnya sebelum melakukan operasi data.
Parameter
CreateTableRequest mencakup parameter berikut.
Name | Type | Description |
tableMeta (required) |
| Skema tabel. |
tableOptions (required) |
| Pengaturan versi data dan pembaruan tabel. |
reservedThroughput (optional) |
| Reserved read/write throughput, dalam capacity unit (CU). CU baca dan tulis default keduanya bernilai |
indexMeta (optional) |
| Indeks sekunder yang akan dibuat bersama tabel. |
streamSpecification (optional) |
| Konfigurasi Stream. |
enableLocalTxn (optional) |
| Menentukan apakah akan mengaktifkan local transactions. Nilai default: |
sseSpecification (optional) |
| Konfigurasi data encryption. Anda hanya dapat mengaktifkan enkripsi data saat membuat tabel. Setelah tabel dibuat, Anda tidak dapat menonaktifkan enkripsi atau mengubah konfigurasinya. |
Skema tabel
tableMeta adalah objek TableMeta yang mencakup parameter berikut.
Name | Type | Description |
tableName (required) |
| Nama tabel. |
primaryKey (required) |
| Konfigurasi kolom kunci primer. Anda dapat mengonfigurasi satu hingga empat kolom kunci primer. Kolom kunci primer pertama merupakan kunci partisi, dan data diurutkan secara ascending berdasarkan kunci primer. |
definedColumns (optional) |
| Konfigurasi kolom pradefinisi. Kolom pradefinisi dapat digunakan untuk membuat secondary indexes dan search indexes. |
Kolom kunci primer
Setiap elemen dalam tableMeta.primaryKey[] adalah objek PrimaryKeySchema yang mencakup parameter berikut.
Name | Type | Description |
name (required) |
| Nama kolom kunci primer. |
type (required) |
| Tipe kolom kunci primer. Nilai yang valid: |
option (optional) |
| Opsi kolom kunci primer. Untuk menggunakan auto-increment primary key column, atur kolom kunci primer bertipe |
Kolom pradefinisi
Setiap elemen dalam tableMeta.definedColumns[] adalah objek DefinedColumnSchema yang mencakup parameter berikut.
Name | Type | Description |
name (required) |
| Nama kolom pradefinisi. |
type (required) |
| Tipe kolom pradefinisi. Nilai yang valid: |
Konfigurasi tabel
tableOptions adalah objek TableOptions yang mencakup parameter berikut.
Name | Type | Description |
timeToLive (required) |
| Masa hidup data (TTL), dalam detik. Atur parameter ini ke |
maxVersions (required) |
| Jumlah maksimum versi yang disimpan untuk setiap kolom atribut. Untuk menggunakan search index atau secondary index, atur parameter ini ke |
maxTimeDeviation (optional) |
| Offset versi maksimum, dalam detik. Nilai default: |
allowUpdate (optional) |
| Menentukan apakah data dapat diperbarui dengan memanggil |
updateFullRow (optional) |
| Menentukan apakah akan mengaktifkan pembaruan seluruh baris. Nilai default: |
Reserved read/write throughput
reservedThroughput adalah objek ReservedThroughput yang mencakup parameter berikut.
Name | Type | Description |
capacityUnit (required) |
| Konfigurasi reserved read/write throughput. |
Capacity units
reservedThroughput.capacityUnit adalah objek CapacityUnit yang mencakup parameter berikut.
Name | Type | Description |
readCapacityUnit (required) |
| Reserved read throughput, dalam CU. |
writeCapacityUnit (required) |
| Reserved write throughput, dalam CU. |
Secondary indexes
Setiap elemen dalam indexMeta[] adalah objek IndexMeta yang mencakup parameter berikut.
Name | Type | Description |
indexName (required) |
| Nama indeks. |
primaryKey (required) |
| Kolom kunci primer indeks. Kolom-kolom tersebut dapat terdiri dari kolom kunci primer dan kolom pradefinisi dari tabel. Untuk local secondary index, kolom kunci primer pertama harus sesuai dengan kolom kunci primer pertama tabel. |
definedColumns (optional) |
| Kolom pradefinisi yang disertakan dalam indeks. Kolom tersebut harus merupakan kolom pradefinisi dari tabel. |
indexType (optional) |
| Tipe indeks. Nilai yang valid: |
indexUpdateMode (optional) |
| Mode pembaruan indeks. Global secondary index harus menggunakan |
Konfigurasi Stream
streamSpecification adalah objek StreamSpecification yang mencakup parameter berikut.
Name | Type | Description |
enableStream (required) |
| Menentukan apakah akan mengaktifkan Stream. Nilai default: |
expirationTime (optional) |
| Periode retensi log inkremental, dalam jam. Nilai maksimum: |
Konfigurasi transaksi lokal
enableLocalTxn adalah nilai Boolean. Perhatikan batasan berikut saat mengatur parameter ini.
Transaksi lokal hanya didukung di Tablestore SDK for Java versi 5.11.0 ke atas.
Transaksi lokal dan kolom kunci primer auto-increment saling eksklusif. Jika kolom kunci primer auto-increment dikonfigurasi, transaksi lokal tidak berlaku meskipun diaktifkan.
Untuk mengaktifkan transaksi lokal pada tabel yang sudah ada, kirim tiket.
Konfigurasi enkripsi sisi server
sseSpecification adalah objek SSESpecification yang mencakup parameter berikut.
Name | Type | Description |
enable (required) |
| Menentukan apakah akan mengaktifkan enkripsi data. Nilai default: |
keyType (optional) |
| Jenis enkripsi. Nilai yang valid: |
keyId (optional) |
| ID kunci master pelanggan. Parameter ini wajib diisi untuk enkripsi BYOK. |
roleArn (optional) |
| Nama Sumber Daya Alibaba Cloud (ARN) dari peran Resource Access Management (RAM). Parameter ini wajib diisi untuk enkripsi BYOK. |
Contoh
Konfigurasikan skema tabel dan versi data
Contoh berikut membuat tabel dengan dua kolom kunci primer dan satu kolom pradefinisi, serta mengonfigurasi offset versi maksimum dan menonaktifkan pembaruan.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("device_id", PrimaryKeyType.INTEGER));
tableMeta.addDefinedColumn("status", DefinedColumnType.STRING);
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
tableOptions.setMaxTimeDeviation(86400L);
tableOptions.setAllowUpdate(false);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
client.createTable(request);Buat secondary index bersama tabel
Contoh berikut membuat global secondary index bernama example_table_index bersama tabel. Kolom kunci primer indeks category harus terlebih dahulu didefinisikan sebagai kolom pradefinisi tabel.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
tableMeta.addDefinedColumn("category", DefinedColumnType.STRING);
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
IndexMeta indexMeta = new IndexMeta("example_table_index");
indexMeta.addPrimaryKeyColumn("category");
indexMeta.setIndexType(IndexType.IT_GLOBAL_INDEX);
indexMeta.setIndexUpdateMode(IndexUpdateMode.IUM_ASYNC_INDEX);
List<IndexMeta> indexMetas = new ArrayList<IndexMeta>();
indexMetas.add(indexMeta);
CreateTableRequest request =
new CreateTableRequest(tableMeta, tableOptions, indexMetas);
client.createTable(request);Aktifkan Stream
Contoh berikut mengaktifkan Stream saat pembuatan tabel dan mengatur waktu kedaluwarsa log inkremental menjadi 24 jam.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
request.setStreamSpecification(new StreamSpecification(true, 24));
client.createTable(request);Aktifkan transaksi lokal
Contoh berikut mengaktifkan transaksi lokal saat pembuatan tabel dengan memanggil setLocalTxnEnabled.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
request.setLocalTxnEnabled(true);
client.createTable(request);Enkripsi tabel
Contoh berikut mengenkripsi tabel menggunakan kunci layanan KMS atau BYOK.
Anda hanya dapat mengonfigurasi enkripsi data saat membuat tabel. Setelah tabel dibuat, Anda tidak dapat menonaktifkan enkripsi atau mengubah konfigurasi enkripsinya.
Enkripsi kunci layanan KMS
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
request.setSseSpecification(
new SSESpecification(true, SSEKeyType.SSE_KMS_SERVICE));
client.createTable(request);Enkripsi BYOK
Untuk menggunakan enkripsi BYOK, pertama-tama peroleh ID kunci master pelanggan (CMK) dan ARN peran RAM. Untuk informasi lebih lanjut, lihat BYOK encryption.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
String keyId = "key-xxxx****";
String roleArn = "acs:ram::1234****:role/example-role";
request.setSseSpecification(
new SSESpecification(true, SSEKeyType.SSE_BYOK, keyId, roleArn));
client.createTable(request);