Topik ini menjelaskan cara menggunakan Tablestore SDK untuk Java dalam membuat tabel data Tablestore dan mengonfigurasi parameternya.
Metode
public CreateTableResponse createTable(CreateTableRequest createTableRequest) throws TableStoreException, ClientExceptionContoh kode
Penggunaan dasar
Contoh ini membuat tabel bernama test_table dengan satu kolom kunci utama bertipe String.
Setelah membuat tabel, Anda harus menunggu tabel dimuat sebelum melakukan operasi data. Proses ini biasanya memakan waktu beberapa detik. Jika tidak menunggu, operasi akan gagal.
Anda tidak dapat mengubah metode enkripsi setelah tabel dibuat. Untuk membuat tabel terenkripsi, lihat Atur Enkripsi Tabel Data.
package org.example.ots;
import com.alicloud.openservices.tablestore.SyncClient;
import com.alicloud.openservices.tablestore.core.ResourceManager;
import com.alicloud.openservices.tablestore.core.auth.CredentialsProvider;
import com.alicloud.openservices.tablestore.core.auth.DefaultCredentialProvider;
import com.alicloud.openservices.tablestore.core.auth.DefaultCredentials;
import com.alicloud.openservices.tablestore.core.auth.V4Credentials;
import com.alicloud.openservices.tablestore.model.*;
public class CreateTable {
public static void main(String[] args) {
// Dapatkan kredensial akses dari variabel lingkungan. Anda harus mengonfigurasi TABLESTORE_ACCESS_KEY_ID dan TABLESTORE_ACCESS_KEY_SECRET.
final String accessKeyId = System.getenv("TABLESTORE_ACCESS_KEY_ID");
final String accessKeySecret = System.getenv("TABLESTORE_ACCESS_KEY_SECRET");
// TODO: Ubah konfigurasi berikut berdasarkan informasi instans Anda.
final String region = "yourRegion"; // ID wilayah tempat instans Anda berada. Contoh: "cn-hangzhou".
final String instanceName = "yourInstanceName"; // Nama instans Anda.
final String endpoint = "yourEndpoint"; // Titik akhir instans Anda.
SyncClient client = null;
try {
// Buat kredensial.
DefaultCredentials credentials = new DefaultCredentials(accessKeyId, accessKeySecret);
V4Credentials credentialsV4 = V4Credentials.createByServiceCredentials(credentials, region);
CredentialsProvider provider = new DefaultCredentialProvider(credentialsV4);
// Buat instance klien.
client = new SyncClient(endpoint, provider, instanceName, null, new ResourceManager(null, null));
// Definisikan skema tabel.
TableMeta tableMeta = new TableMeta("test_table"); // TODO: Ubah nama tabel sesuai kebutuhan.
// Anda harus menambahkan setidaknya satu kolom kunci utama untuk membuat tabel.
tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("id", PrimaryKeyType.STRING)); // TODO: Ubah kunci utama tabel sesuai kebutuhan.
// Konfigurasikan tabel.
TableOptions tableOptions = new TableOptions();
// Anda harus menentukan jumlah versi maksimum saat membuat tabel data.
tableOptions.setMaxVersions(1);
// Anda harus menentukan masa hidup data (TTL) saat membuat tabel data. Nilai -1 berarti data tidak pernah kedaluwarsa.
tableOptions.setTimeToLive(-1);
// Buat dan kirim permintaan.
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
client.createTable(request);
System.out.println("Tabel data telah dibuat.");
} catch (Exception e) {
System.err.println("Gagal membuat tabel data. Detail:");
e.printStackTrace();
} finally {
// Matikan klien.
if (client != null) {
client.shutdown();
}
}
}
}
Tambahkan kunci utama
Anda dapat menambahkan kunci utama menggunakan metode addPrimaryKeyColumn atau addPrimaryKeyColumns. Contoh berikut menggunakan metode addPrimaryKeyColumn.
tableMeta.addPrimaryKeyColumn("name", PrimaryKeyType.STRING);Tambahkan kolom pradefinisi
Anda dapat menambahkan kolom pradefinisi menggunakan metode addDefinedColumn atau addDefinedColumns. Contoh berikut menggunakan metode addDefinedColumn.
tableMeta.addDefinedColumn("age", DefinedColumnType.INTEGER);Atur offset versi maksimum
Anda dapat mengatur offset versi maksimum menggunakan metode setMaxTimeDeviation.
tableOptions.setMaxTimeDeviation(86400);Atur apakah pembaruan diizinkan
Anda dapat menggunakan metode setAllowUpdate untuk menentukan apakah pembaruan data diizinkan di tabel.
tableOptions.setAllowUpdate(false);Tambahkan indeks sekunder
Anda dapat menambahkan indeks sekunder dengan menentukan parameter indexMetas saat membuat permintaan.
// Buat daftar indeks sekunder.
ArrayList<IndexMeta> indexMetas = new ArrayList<IndexMeta>();
// Buat indeks sekunder.
IndexMeta indexMeta = new IndexMeta("test_table_idx");
// Atur kunci utama indeks.
indexMeta.addPrimaryKeyColumn("id");
// Untuk menambahkan lebih banyak kolom kunci utama, definisikan terlebih dahulu kunci utama atau kolom pradefinisi yang sesuai di tabel data.
// indexMeta.addPrimaryKeyColumn("additional_column");
// Atur tipe indeks.
indexMeta.setIndexType(IndexType.IT_LOCAL_INDEX);
// Atur mode pembaruan indeks.
indexMeta.setIndexUpdateMode(IndexUpdateMode.IUM_SYNC_INDEX);
// Tambahkan indeks sekunder.
indexMetas.add(indexMeta);
// Buat permintaan.
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions, indexMetas);Atur informasi aliran
Anda dapat mengatur informasi aliran menggunakan metode setStreamSpecification dari permintaan.
StreamSpecification streamSpecification = new StreamSpecification(true, 168);
request.setStreamSpecification(streamSpecification);Aktifkan transaksi lokal
Anda dapat mengaktifkan transaksi lokal menggunakan metode setLocalTxnEnabled dari permintaan.
request.setLocalTxnEnabled(true);Atur throughput baca/tulis yang dicadangkan
Anda dapat mengatur throughput baca/tulis yang dicadangkan untuk tabel menggunakan metode setReservedThroughput dari permintaan.
// Tetapkan throughput baca yang dicadangkan ke 10000 dan throughput tulis yang dicadangkan ke 5000.
ReservedThroughput reservedThroughput = new ReservedThroughput(10000, 5000);
request.setReservedThroughput(reservedThroughput);Atur metode enkripsi tabel data
Anda dapat mengatur metode enkripsi tabel data menggunakan metode setSseSpecification dari permintaan.
Enkripsi KMS
SSESpecification sseSpecification = new SSESpecification(true, SSEKeyType.SSE_KMS_SERVICE); request.setSseSpecification(sseSpecification);Enkripsi BYOK
CatatanSebelum menjalankan kode, Anda harus mendapatkan ID kunci master pelanggan (CMK) dan ARN peran RAM. Untuk informasi lebih lanjut, lihat Enkripsi BYOK.
String keyId = "key-hzz6*****************"; String roleArn = "acs:ram::1705************:role/tabletorebyok"; SSESpecification sseSpecification = new SSESpecification(true, SSEKeyType.SSE_BYOK, keyId, roleArn); request.setSseSpecification(sseSpecification);