Topik ini menjelaskan cara membuat tabel data Tablestore menggunakan Tablestore SDK untuk Python.
Catatan penggunaan
Setelah membuat tabel data, tunggu hingga tabel dimuat sepenuhnya sebelum melakukan operasi terhadap data. Jika tidak, operasi tersebut akan gagal. Proses ini biasanya memerlukan beberapa detik.
Deskripsi metode
def create_table(self, table_meta, table_options, reserved_throughput, secondary_indexes=[], sse_spec)
Parameter
table_meta (wajib) TableMeta: informasi skema tabel, mencakup parameter berikut.
Nama | Tipe | Deskripsi |
table_name (wajib) | str | Nama tabel data. |
schema_of_primary_key (wajib) | List[Tuple] | Informasi mengenai kunci primer. Anda dapat mengonfigurasi 1 hingga 4 kolom kunci primer. Secara default, kolom-kolom tersebut diurutkan secara ascending. Kolom kunci primer pertama berfungsi sebagai kunci partisi. Tipe data kolom kunci primer meliputi STRING, INTEGER, dan BINARY. Anda dapat mengatur kolom kunci utama auto-increment pada kolom kunci primer yang bukan kunci partisi dan bertipe INTEGER.
|
defined_columns (opsional) | List[Tuple] | Informasi mengenai kolom pradefinisi. Kolom pradefinisi adalah kolom atribut yang telah didefinisikan sebelumnya dan dapat digunakan untuk membuat indeks sekunder dan indeks pencarian. Tipe data kolom pradefinisi meliputi STRING, INTEGER, BINARY, DOUBLE, dan BOOLEAN.
|
table_options (wajib) TableOptions: informasi konfigurasi tabel, mencakup parameter berikut.
Nama | Tipe | Deskripsi |
time_to_live (opsional) | int | Masa hidup data (TTL), dalam satuan detik. Nilai default adalah -1. Jika Anda mengatur parameter ini ke -1, data tidak pernah kedaluwarsa. Jika tidak, nilai minimum adalah 86400 (satu hari). Data yang melebihi periode retensi TTL akan dihapus secara otomatis. Jika Anda ingin menggunakan indeks pencarian atau indeks sekunder, Anda harus mengatur parameter ini ke -1 atau mengatur parameter allow_update ke False.
|
max_version (opsional) | int | Jumlah maksimum versi. Nilai default adalah 1. |
max_time_deviation (opsional) | int | Offset versi maksimum, dalam satuan detik. Nilai default adalah 86400 (satu hari). Selisih antara waktu sistem saat ini dan timestamp data yang ditulis harus berada dalam rentang offset versi maksimum. Jika tidak, penulisan data akan gagal. Rentang versi valid untuk data kolom atribut adalah [max(Waktu penulisan data - Offset versi maksimum, Waktu penulisan data - TTL), Waktu penulisan data + Offset versi maksimum).
|
allow_update (opsional) | bool | Menentukan apakah pembaruan diizinkan. Nilai default adalah True. |
secondary_indexes (opsional) List[SecondaryIndexMeta]: daftar indeks sekunder. Setiap indeks mencakup parameter berikut.
Nama | Tipe | Deskripsi |
index_name (wajib) | str | Nama indeks. |
primary_key_names (wajib) | List[str] | Kolom kunci primer indeks. Kolom tersebut dapat terdiri dari kolom kunci primer tabel data dan kolom pradefinisi. Jika Anda ingin membuat indeks sekunder lokal, kolom kunci primer pertama pada indeks harus sama dengan kolom kunci primer pertama pada tabel data.
|
defined_column_names (opsional) | List[str] | Kolom pradefinisi indeks. |
index_type (opsional) | SecondaryIndexType | Tipe indeks. Nilai yang valid: |
reserved_throughput (wajib) ReservedThroughput: throughput baca dan tulis yang dicadangkan, dalam satuan CU. Nilai default adalah 0. Anda dapat mengatur parameter ini ke nilai bukan nol, dan pengaturan ini hanya berlaku untuk tabel data pada instans kinerja tinggi dalam Mode CU.
sse_spec (opsional) SSESpecification: pengaturan enkripsi data, mencakup parameter berikut.
Penting Anda hanya dapat mengaktifkan dan mengonfigurasi enkripsi data saat membuat tabel data. Setelah tabel dibuat, Anda tidak dapat menonaktifkan enkripsi. Fitur ini didukung hanya pada Python SDK versi 6.4.0 dan yang lebih baru.
Nama | Tipe | Deskripsi |
enable (wajib) | boolean | Menentukan apakah enkripsi data diaktifkan. Nilai default adalah False. |
key_type (opsional) | SSEKeyType | Tipe enkripsi. Nilai yang valid untuk SSEKeyType: |
key_id (opsional) | str | ID kunci master pelanggan (CMK). Tentukan parameter ini hanya jika key_type bernilai SSE_BYOK. |
role_arn (opsional) | str | ARN Peran RAM. Tentukan parameter ini hanya jika key_type bernilai SSE_BYOK. |
Kode contoh
Kode contoh berikut membuat tabel bernama test_table yang berisi satu kolom kunci primer bertipe String.
# Membuat tabel data memerlukan setidaknya satu kolom kunci primer.
schema_of_primary_key = [('id', 'STRING')]
# Membangun informasi skema tabel data.
table_meta = TableMeta('test_table', schema_of_primary_key)
# Membangun informasi konfigurasi tabel data.
table_options = TableOptions(time_to_live=-1, max_version=1, max_time_deviation=86400, allow_update=True)
# Saat membuat tabel data, Anda harus menentukan throughput baca dan tulis yang dicadangkan, dengan nilai default 0 (Anda dapat mengatur parameter ini ke nilai bukan nol dan pengaturan ini hanya berlaku untuk tabel data pada instans kinerja tinggi dalam Mode CU).
reserved_throughput = ReservedThroughput(CapacityUnit(0,0))
try:
# Mengirim permintaan.
client.create_table(table_meta, table_options, reserved_throughput)
print("Create table succeeded.")
except Exception as e:
print("Create table failed. %s" % e)
Anda juga dapat merujuk ke kode contoh berikut untuk mengonfigurasi pengaturan tertentu saat membuat tabel data.
Tambahkan kolom pradefinisi
defined_columns = [('name', 'STRING')]
# Membangun informasi skema tabel data.
table_meta = TableMeta('test_table', schema_of_primary_key, defined_columns)
Tambahkan indeks sekunder
# Membangun daftar indeks sekunder.
secondary_indexes = [
# Menentukan nama indeks, kolom kunci primer indeks, kolom pradefinisi indeks, dan tipe indeks.
SecondaryIndexMeta('test_table_index', ['id', 'name'], [], index_type= SecondaryIndexType.LOCAL_INDEX)
]
# Mengirim permintaan.
client.create_table(table_meta, table_options, reserved_throughput, secondary_indexes)
Konfigurasikan enkripsi data
Gunakan metode SSESpecification untuk mengonfigurasi enkripsi data pada tabel data.
Enkripsi kunci rahasia KMS
sse_specification = SSESpecification(enable=True, key_type=SSEKeyType.SSE_KMS_SERVICE, key_id=None,
role_arn=None)
client.create_table(table_meta, table_option, reserved_throughput, sse_spec=sse_specification)
Enkripsi BYOK
Catatan Sebelum menjalankan kode, peroleh ID CMK dan ARN Peran RAM. Untuk informasi selengkapnya, lihat enkripsi BYOK.
key_id = "key-hzz6*****************"
role_arn = "acs:ram::1705************:role/tabletorebyok"
sse_specification = SSESpecification(enable=True, key_type=SSEKeyType.SSE_BYOK, key_id=key_id,
role_arn=role_arn)
client.create_table(table_meta, table_option, reserved_throughput, sse_spec=sse_specification)