All Products
Search
Document Center

Tablestore:Buat tabel

Last Updated:Aug 05, 2026

Gunakan Tablestore SDK untuk Python untuk membuat tabel dan, secara opsional, mengonfigurasi skema, pengaturan, indeks sekunder, serta enkripsi data.

Prasyarat

Instal Tablestore SDK untuk Python dan inisialisasi klien.

Deskripsi fungsi

Panggil metode create_table untuk membuat tabel.

def create_table(
    self,
    table_meta,
    table_options,
    reserved_throughput,
    secondary_indexes=None,
    sse_spec=None,
)

Contoh berikut membuat tabel example_table dengan id sebagai kolom kunci primernya. Data dalam tabel tidak pernah kedaluwarsa, dan hanya satu versi yang disimpan untuk setiap kolom atribut.

table_meta = TableMeta(
    "example_table",
    [("id", "STRING")],
)
table_options = TableOptions(
    time_to_live=-1,
    max_version=1,
    max_time_deviation=86400,
    allow_update=True,
)
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))

client.create_table(table_meta, table_options, reserved_throughput)
Catatan

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

Parameter

Metode create_table memiliki parameter berikut.

Name

Type

Description

table_meta (required)

TableMeta

Skema tabel.

table_options (required)

TableOptions

Konfigurasi tabel.

reserved_throughput (required)

ReservedThroughput

Throughput yang dicadangkan.

secondary_indexes (optional)

List[SecondaryIndexMeta]

Indeks sekunder yang akan dibuat bersama tabel.

sse_spec (optional)

SSESpecification

Pengaturan enkripsi sisi server. Enkripsi hanya dapat diaktifkan saat tabel dibuat dan tidak dapat dinonaktifkan setelahnya. Fitur ini memerlukan Tablestore SDK untuk Python versi 6.4.0 atau lebih baru.

Skema tabel

Parameter table_meta bertipe TableMeta dan memiliki parameter berikut.

Name

Type

Description

table_name (required)

str

Nama tabel.

schema_of_primary_key (required)

List[Tuple]

Skema kunci primer. Sebuah tabel dapat memiliki satu hingga empat kolom kunci primer. Kolom kunci primer pertama merupakan kunci partisi, dan kolom kunci primer diurutkan secara ascending. Kolom kunci primer mendukung tipe STRING, INTEGER, dan BINARY. Kolom kunci primer non-partisi bertipe INTEGER dapat dikonfigurasi sebagai kolom kunci utama auto-increment.

defined_columns (optional)

List[Tuple]

Kolom pradefinisi. Kolom pradefinisi mendukung tipe STRING, INTEGER, BINARY, DOUBLE, dan BOOLEAN, serta dapat digunakan untuk membuat indeks sekunder dan indeks pencarian.

Kolom kunci primer

Setiap tupel dalam table_meta.schema_of_primary_key[] mengonfigurasi satu kolom kunci primer dan berisi elemen berikut.

Name

Type

Description

name (required)

str

Nama kolom kunci primer.

type (required)

str

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

option (optional)

PrimaryKeyOption

Opsi kunci primer. Atur kolom kunci primer non-partisi bertipe INTEGER ke PK_AUTO_INCR agar menjadi kolom kunci utama auto-increment.

Kolom pradefinisi

Setiap tupel dalam table_meta.defined_columns[] mengonfigurasi satu kolom pradefinisi dan berisi elemen berikut.

Name

Type

Description

name (required)

str

Nama kolom pradefinisi.

type (required)

str

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

Konfigurasi tabel

Parameter table_options bertipe TableOptions dan memiliki parameter berikut.

Name

Type

Description

time_to_live (optional)

int

Masa hidup data (TTL) dalam detik. Nilai default-nya adalah -1, yang menunjukkan bahwa data tidak pernah kedaluwarsa. Jika Anda menentukan nilai lain, nilai minimumnya adalah 86400 (satu hari). Data yang kedaluwarsa akan dihapus secara otomatis. Untuk menggunakan indeks pencarian atau indeks sekunder, atur parameter ini ke -1 atau atur allow_update ke False.

max_version (optional)

int

Jumlah maksimum versi yang disimpan untuk setiap kolom atribut. Nilai default-nya adalah 1. Untuk menggunakan indeks pencarian atau indeks sekunder, atur parameter ini ke 1.

max_time_deviation (optional)

int

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

allow_update (optional)

bool

Menentukan apakah data dapat diperbarui dengan memanggil update_row. Jika Anda tidak menentukan parameter ini, server secara default mengizinkan pembaruan. Jika Anda mengatur parameter ini ke False, data tidak dapat diperbarui dengan memanggil update_row.

Throughput yang dicadangkan

Parameter reserved_throughput bertipe ReservedThroughput dan memiliki parameter berikut.

Name

Type

Description

capacity_unit (required)

CapacityUnit

Throughput yang dicadangkan dalam Unit kapasitas (CUs). CU baca dan tulis default keduanya bernilai 0. Hanya instans kinerja tinggi dalam Mode CU yang mendukung nilai bukan nol.

Unit kapasitas

Parameter reserved_throughput.capacity_unit bertipe CapacityUnit dan memiliki parameter berikut.

Name

Type

Description

read (optional)

int

Throughput baca yang dicadangkan dalam CUs. Nilai default-nya adalah 0.

write (optional)

int

Throughput tulis yang dicadangkan dalam CUs. Nilai default-nya adalah 0.

Indeks sekunder

Setiap elemen dalam secondary_indexes[] bertipe SecondaryIndexMeta dan memiliki parameter berikut.

Name

Type

Description

index_name (required)

str

Nama indeks.

primary_key_names (required)

List[str]

Kolom kunci primer indeks. Anda dapat menggunakan kolom kunci primer dan kolom pradefinisi dari tabel. Untuk indeks sekunder lokal, kolom kunci primer pertama pada indeks harus sama dengan kolom kunci primer pertama pada tabel.

defined_column_names (optional)

List[str]

Kolom pradefinisi yang disertakan dalam indeks. Kolom-kolom tersebut harus sudah didefinisikan dalam tabel.

index_type (optional)

SecondaryIndexType

Tipe indeks. Nilai yang valid adalah GLOBAL_INDEX (nilai default untuk indeks sekunder global) dan LOCAL_INDEX (untuk indeks sekunder lokal).

Pengaturan enkripsi sisi server

Parameter sse_spec bertipe SSESpecification dan memiliki parameter berikut.

Name

Type

Description

enable (optional)

bool

Menentukan apakah enkripsi data diaktifkan. Nilai default-nya adalah False.

key_type (optional)

SSEKeyType

Tipe enkripsi. Nilai yang valid adalah SSE_KMS_SERVICE untuk enkripsi dengan kunci yang dikelola KMS dan SSE_BYOK untuk enkripsi bring-your-own-key (BYOK). Parameter ini wajib ditentukan saat enkripsi diaktifkan.

key_id (optional)

str

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

role_arn (optional)

str

Nama Sumber Daya Alibaba Cloud (ARN) dari peran RAM. Parameter ini wajib ditentukan untuk enkripsi BYOK.

Contoh

Konfigurasi skema tabel dan versi data

Contoh berikut menambahkan kolom pradefinisi name dan menyimpan hingga tiga versi untuk setiap kolom atribut.

table_meta = TableMeta(
    "example_table",
    [("id", "STRING")],
    [("name", "STRING")],
)
table_options = TableOptions(
    time_to_live=-1,
    max_version=3,
    max_time_deviation=86400,
    allow_update=True,
)
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))

client.create_table(table_meta, table_options, reserved_throughput)

Buat indeks sekunder bersama tabel

Contoh berikut membuat indeks sekunder lokal bersama tabel. Kolom kunci primer pertama baik pada tabel maupun indeks sekunder adalah id.

table_meta = TableMeta(
    "example_table",
    [("id", "STRING"), ("device_id", "INTEGER")],
    [("status", "STRING")],
)
table_options = TableOptions(time_to_live=-1, max_version=1)
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
secondary_indexes = [
    SecondaryIndexMeta(
        "example_local_index",
        ["id", "device_id"],
        ["status"],
        index_type=SecondaryIndexType.LOCAL_INDEX,
    )
]

client.create_table(
    table_meta,
    table_options,
    reserved_throughput,
    secondary_indexes=secondary_indexes,
)

Enkripsi tabel

Contoh berikut menggunakan kunci yang dikelola KMS dan kunci yang dikelola pelanggan untuk mengenkripsi tabel.

Penting

Enkripsi hanya dapat diaktifkan saat tabel dibuat dan tidak dapat dinonaktifkan setelahnya.

Kunci yang dikelola KMS

sse_spec = SSESpecification(
    enable=True,
    key_type=SSEKeyType.SSE_KMS_SERVICE,
)

client.create_table(
    table_meta,
    table_options,
    reserved_throughput,
    sse_spec=sse_spec,
)

Enkripsi BYOK

Sebelum menggunakan enkripsi BYOK, peroleh ID kunci master pelanggan dan ARN peran RAM. Untuk informasi selengkapnya, lihat enkripsi data.

sse_spec = SSESpecification(
    enable=True,
    key_type=SSEKeyType.SSE_BYOK,
    key_id="key-example",
    role_arn="acs:ram::1234567890123456:role/example-role",
)

client.create_table(
    table_meta,
    table_options,
    reserved_throughput,
    sse_spec=sse_spec,
)