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)
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) |
|
Skema tabel. |
|
table_options (required) |
|
Konfigurasi tabel. |
|
reserved_throughput (required) |
|
Throughput yang dicadangkan. |
|
secondary_indexes (optional) |
|
Indeks sekunder yang akan dibuat bersama tabel. |
|
sse_spec (optional) |
|
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) |
|
Nama tabel. |
|
schema_of_primary_key (required) |
|
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 |
|
defined_columns (optional) |
|
Kolom pradefinisi. Kolom pradefinisi mendukung tipe |
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) |
|
Nama kolom kunci primer. |
|
type (required) |
|
Tipe kolom kunci primer. Nilai yang valid adalah |
|
option (optional) |
|
Opsi kunci primer. Atur kolom kunci primer non-partisi bertipe |
Kolom pradefinisi
Setiap tupel dalam table_meta.defined_columns[] mengonfigurasi satu kolom pradefinisi dan berisi elemen berikut.
|
Name |
Type |
Description |
|
name (required) |
|
Nama kolom pradefinisi. |
|
type (required) |
|
Tipe kolom pradefinisi. Nilai yang valid adalah |
Konfigurasi tabel
Parameter table_options bertipe TableOptions dan memiliki parameter berikut.
|
Name |
Type |
Description |
|
time_to_live (optional) |
|
Masa hidup data (TTL) dalam detik. Nilai default-nya adalah |
|
max_version (optional) |
|
Jumlah maksimum versi yang disimpan untuk setiap kolom atribut. Nilai default-nya adalah |
|
max_time_deviation (optional) |
|
Selisih waktu maksimum versi dalam detik. Nilai default-nya adalah |
|
allow_update (optional) |
|
Menentukan apakah data dapat diperbarui dengan memanggil |
Throughput yang dicadangkan
Parameter reserved_throughput bertipe ReservedThroughput dan memiliki parameter berikut.
|
Name |
Type |
Description |
|
capacity_unit (required) |
|
Throughput yang dicadangkan dalam Unit kapasitas (CUs). CU baca dan tulis default keduanya bernilai |
Unit kapasitas
Parameter reserved_throughput.capacity_unit bertipe CapacityUnit dan memiliki parameter berikut.
|
Name |
Type |
Description |
|
read (optional) |
|
Throughput baca yang dicadangkan dalam CUs. Nilai default-nya adalah |
|
write (optional) |
|
Throughput tulis yang dicadangkan dalam CUs. Nilai default-nya adalah |
Indeks sekunder
Setiap elemen dalam secondary_indexes[] bertipe SecondaryIndexMeta dan memiliki parameter berikut.
|
Name |
Type |
Description |
|
index_name (required) |
|
Nama indeks. |
|
primary_key_names (required) |
|
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) |
|
Kolom pradefinisi yang disertakan dalam indeks. Kolom-kolom tersebut harus sudah didefinisikan dalam tabel. |
|
index_type (optional) |
|
Tipe indeks. Nilai yang valid adalah |
Pengaturan enkripsi sisi server
Parameter sse_spec bertipe SSESpecification dan memiliki parameter berikut.
|
Name |
Type |
Description |
|
enable (optional) |
|
Menentukan apakah enkripsi data diaktifkan. Nilai default-nya adalah |
|
key_type (optional) |
|
Tipe enkripsi. Nilai yang valid adalah |
|
key_id (optional) |
|
ID kunci master pelanggan. Parameter ini wajib ditentukan untuk enkripsi BYOK. |
|
role_arn (optional) |
|
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.
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,
)