All Products
Search
Document Center

Tablestore:Buat tabel

Last Updated:Jul 23, 2026

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, 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 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, dan BINARY. 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, dan BOOLEAN.

  • 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 allowUpdate ke false.

    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 expirationTime wajib diisi jika enableStream diatur ke true.

  • 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 keyType diatur ke SSE_BYOK.

    roleArn (opsional)

    OptionalValue<String>

    Nama Sumber Daya Alibaba Cloud (ARN) dari peran Resource Access Management (RAM). Parameter ini wajib diisi ketika keyType diatur ke SSE_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.

Penting

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

Catatan

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