Buat tabel Model Kolom Lebar menggunakan Tablestore SDK for Java dan konfigurasikan skema, versi data, indeks, Stream, serta 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 masa hidup data (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 sebelum melakukan operasi data.
Parameter
CreateTableRequest mencakup parameter berikut.
tableMeta (wajib)
TableMeta: Skema tabel, yang mencakup parameter berikut.Nama
Tipe
Deskripsi
tableName (wajib)
String
Nama tabel.
primaryKey (wajib)
List<PrimaryKeySchema>
Skema kunci primer tabel.
Anda dapat mengonfigurasi satu hingga empat kolom kunci primer. Data diurutkan secara ascending berdasarkan kunci primer. Kolom kunci primer pertama merupakan kunci partisi.
Kolom kunci primer mendukung tipe data
STRING,INTEGER, danBINARY. Kolom kunci primer bertipe integer yang bukan kunci partisi dapat dikonfigurasi sebagai kolom kunci utama auto-increment.
definedColumns (opsional)
List<DefinedColumnSchema>
Kolom pradefinisi tabel.
Kolom pradefinisi adalah kolom atribut yang digunakan untuk membuat indeks sekunder dan indeks pencarian.
Tipe data yang didukung:
STRING,INTEGER,BINARY,DOUBLE, danBOOLEAN.
tableOptions (wajib)
TableOptions: Pengaturan versi data dan pembaruan tabel, yang mencakup parameter berikut.Nama
Type
Deskripsi
timeToLive (wajib)
OptionalValue<Integer>
Masa hidup data (TTL). Satuan: detik.
Atur parameter ini ke -1 untuk menyimpan data tanpa batas waktu. Untuk nilai lainnya, minimum adalah 86400 (satu hari). Data yang melebihi TTL-nya akan dihapus secara otomatis.
Untuk menggunakan indeks pencarian atau indeks sekunder, atur TTL ke -1 atau atur parameter
allowUpdatekefalse.
maxVersions (wajib)
OptionalValue<Integer>
Jumlah maksimum versi data yang disimpan.
Untuk menggunakan indeks pencarian atau indeks sekunder, atur parameter ini ke 1.
maxTimeDeviation (opsional)
OptionalValue<Long>
Offset versi maksimum. Satuan: detik. Nilai default: 86400 (satu hari).
Selisih antara timestamp data yang ditulis dan waktu sistem saat ini harus berada dalam rentang offset versi maksimum. Jika tidak, operasi penulisan gagal.
Rentang versi valid untuk data kolom atribut adalah
[max(Waktu penulisan data - Offset versi maksimum, Waktu penulisan data - Masa hidup data), Waktu penulisan data + Offset versi maksimum).
allowUpdate (opsional)
OptionalValue<Boolean>
Menentukan apakah data dapat diperbarui menggunakan metode
updateRow. Nilai default:true.Jika parameter ini diatur ke
false, data tidak dapat diperbarui.indexMeta (opsional)
List<IndexMeta>: Indeks sekunder yang dibuat bersamaan dengan tabel. Setiap indeks mencakup parameter berikut.Nama
Type
Deskripsi
indexName (wajib)
String
Nama indeks.
primaryKey (wajib)
List<String>
Kolom kunci primer indeks.
Kunci primer indeks dapat terdiri dari kolom kunci primer dan kolom pradefinisi dari tabel.
Untuk indeks sekunder lokal, kolom kunci primer pertama pada indeks harus sesuai dengan kolom kunci primer pertama pada tabel.
definedColumns (opsional)
List<String>
Kolom pradefinisi indeks. Kolom tersebut harus merupakan kolom pradefinisi dari tabel.
indexType (opsional)
IndexType
Tipe indeks. Nilai yang valid:
IT_GLOBAL_INDEX(default): indeks sekunder global.IT_LOCAL_INDEX: indeks sekunder lokal.
indexUpdateMode (opsional)
IndexUpdateMode
Mode pembaruan indeks. Nilai yang valid:
IUM_ASYNC_INDEX(default): pembaruan asinkron. Indeks sekunder global harus menggunakan pembaruan asinkron.IUM_SYNC_INDEX: pembaruan sinkron. Mode pembaruan untuk indeks sekunder lokal harus sinkron.
streamSpecification (opsional)
OptionalValue<StreamSpecification>: Konfigurasi Stream, yang mencakup parameter berikut.Nama
Tipe
Deskripsi
enableStream (wajib)
boolean
Menentukan apakah Stream diaktifkan. Nilai default:
false.expirationTime (opsional)
OptionalValue<Integer>
Periode retensi log inkremental. Satuan: jam. Nilai maksimum: 168 (7 hari).
Parameter
expirationTimewajib diisi jikaenableStreamdiatur ketrue.enableLocalTxn (opsional)
OptionalValue<Boolean>: Menentukan apakah transaksi lokal diaktifkan. Nilai default:false.Transaksi lokal hanya didukung pada Tablestore SDK for Java versi 5.11.0 dan yang lebih baru.
Transaksi lokal dan kolom kunci utama auto-increment saling eksklusif. Jika kolom kunci utama auto-increment dikonfigurasi, transaksi lokal tidak berlaku meskipun diaktifkan.
Untuk mengaktifkan transaksi lokal pada tabel yang sudah ada, kirim tiket.
sseSpecification (opsional)
OptionalValue<SSESpecification>: Pengaturan enkripsi data. Anda hanya dapat mengonfigurasi enkripsi saat membuat tabel. Parameter dijelaskan dalam tabel berikut.Nama
Tipe
Deskripsi
enable (wajib)
boolean
Menentukan apakah enkripsi data diaktifkan. Nilai default:
false.keyType (opsional)
OptionalValue<SSEKeyType>
Tipe enkripsi. Nilai yang valid:
SSE_KMS_SERVICE: enkripsi yang menggunakan kunci layanan KMS.SSE_BYOK: enkripsi bawa-kunci-sendiri (BYOK).
keyId (opsional)
OptionalValue<String>
ID kunci master pelanggan (CMK). Parameter ini wajib diisi ketika
keyTypediatur keSSE_BYOK.roleArn (opsional)
OptionalValue<String>
Nama Sumber Daya Alibaba Cloud (ARN) dari peran Resource Access Management (RAM). Parameter ini wajib diisi ketika
keyTypediatur keSSE_BYOK.reservedThroughput (opsional)
ReservedThroughput: throughput baca/tulis yang dicadangkan. Satuan: Unit kapasitas (CU). Nilai default: 0. Hanya berlaku untuk instans komputasi-teroptimalkan dalam Mode CU.
Contoh
Konfigurasi 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 indeks sekunder bersamaan dengan tabel
Contoh berikut membuat indeks sekunder global bernama example_table_index bersamaan dengan 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 enkripsi.
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 selengkapnya, lihat enkripsi BYOK.
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);