All Products
Search
Document Center

Tablestore:Buat tabel

Last Updated:Aug 05, 2026

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, ClientException

Contoh 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);
Catatan

Setelah membuat tabel, tunggu hingga tabel dimuat sepenuhnya sebelum melakukan operasi data.

Parameter

CreateTableRequest mencakup parameter berikut.

Name

Type

Description

tableMeta (required)

TableMeta

Skema tabel.

tableOptions (required)

TableOptions

Pengaturan versi data dan pembaruan tabel.

reservedThroughput (optional)

ReservedThroughput

Reserved read/write throughput, dalam capacity unit (CU). CU baca dan tulis default keduanya bernilai 0. Nilai bukan nol hanya berlaku untuk instans kinerja tinggi dalam Mode CU.

indexMeta (optional)

List<IndexMeta>

Indeks sekunder yang akan dibuat bersama tabel.

streamSpecification (optional)

StreamSpecification

Konfigurasi Stream.

enableLocalTxn (optional)

Boolean

Menentukan apakah akan mengaktifkan local transactions. Nilai default: false.

sseSpecification (optional)

SSESpecification

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)

String

Nama tabel.

primaryKey (required)

List<PrimaryKeySchema>

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)

List<DefinedColumnSchema>

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)

String

Nama kolom kunci primer.

type (required)

PrimaryKeyType

Tipe kolom kunci primer. Nilai yang valid: STRING, INTEGER, dan BINARY.

option (optional)

PrimaryKeyOption

Opsi kolom kunci primer. Untuk menggunakan auto-increment primary key column, atur kolom kunci primer bertipe INTEGER yang bukan kunci partisi ke nilai AUTO_INCREMENT.

Kolom pradefinisi

Setiap elemen dalam tableMeta.definedColumns[] adalah objek DefinedColumnSchema yang mencakup parameter berikut.

Name

Type

Description

name (required)

String

Nama kolom pradefinisi.

type (required)

DefinedColumnType

Tipe kolom pradefinisi. Nilai yang valid: STRING, INTEGER, BINARY, DOUBLE, dan BOOLEAN.

Konfigurasi tabel

tableOptions adalah objek TableOptions yang mencakup parameter berikut.

Name

Type

Description

timeToLive (required)

Integer

Masa hidup data (TTL), dalam 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 search index atau secondary index, atur parameter ini ke -1 atau atur allowUpdate ke false.

maxVersions (required)

Integer

Jumlah maksimum versi yang disimpan untuk setiap kolom atribut. Untuk menggunakan search index atau secondary index, atur parameter ini ke 1.

maxTimeDeviation (optional)

Long

Offset versi maksimum, dalam detik. Nilai default: 86400 (satu hari). Selisih antara timestamp data yang ditulis dan waktu sistem saat ini harus berada dalam rentang offset ini. Rentang versi yang valid adalah [max(waktu tulis data - offset versi maksimum, waktu tulis data - TTL), waktu tulis data + offset versi maksimum).

allowUpdate (optional)

Boolean

Menentukan apakah data dapat diperbarui dengan memanggil updateRow. Nilai default: true. Jika Anda mengatur parameter ini ke false, data tidak dapat diperbarui.

updateFullRow (optional)

Boolean

Menentukan apakah akan mengaktifkan pembaruan seluruh baris. Nilai default: false. Anda hanya dapat mengatur parameter ini saat membuat tabel. Anda tidak dapat mengubahnya dengan memanggil updateTable.

Reserved read/write throughput

reservedThroughput adalah objek ReservedThroughput yang mencakup parameter berikut.

Name

Type

Description

capacityUnit (required)

CapacityUnit

Konfigurasi reserved read/write throughput.

Capacity units

reservedThroughput.capacityUnit adalah objek CapacityUnit yang mencakup parameter berikut.

Name

Type

Description

readCapacityUnit (required)

Integer

Reserved read throughput, dalam CU.

writeCapacityUnit (required)

Integer

Reserved write throughput, dalam CU.

Secondary indexes

Setiap elemen dalam indexMeta[] adalah objek IndexMeta yang mencakup parameter berikut.

Name

Type

Description

indexName (required)

String

Nama indeks.

primaryKey (required)

List<String>

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)

List<String>

Kolom pradefinisi yang disertakan dalam indeks. Kolom tersebut harus merupakan kolom pradefinisi dari tabel.

indexType (optional)

IndexType

Tipe indeks. Nilai yang valid: IT_GLOBAL_INDEX (default, global secondary index) dan IT_LOCAL_INDEX (local secondary index).

indexUpdateMode (optional)

IndexUpdateMode

Mode pembaruan indeks. Global secondary index harus menggunakan IUM_ASYNC_INDEX (default, pembaruan asinkron). Local secondary index harus menggunakan IUM_SYNC_INDEX (pembaruan sinkron).

Konfigurasi Stream

streamSpecification adalah objek StreamSpecification yang mencakup parameter berikut.

Name

Type

Description

enableStream (required)

Boolean

Menentukan apakah akan mengaktifkan Stream. Nilai default: false.

expirationTime (optional)

Integer

Periode retensi log inkremental, dalam jam. Nilai maksimum: 168 (tujuh hari). Parameter ini wajib diisi jika enableStream diatur ke true.

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)

Boolean

Menentukan apakah akan mengaktifkan enkripsi data. Nilai default: false.

keyType (optional)

SSEKeyType

Jenis enkripsi. Nilai yang valid: SSE_KMS_SERVICE (enkripsi kunci layanan KMS) dan SSE_BYOK (enkripsi Bawa Kunci Anda Sendiri). Parameter ini wajib diisi saat enkripsi diaktifkan.

keyId (optional)

String

ID kunci master pelanggan. Parameter ini wajib diisi untuk enkripsi BYOK.

roleArn (optional)

String

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.

Penting

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

Catatan

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);