PartiQL untuk DynamoDB lewat Contoh
PartiQL adalah bahasa query yang kompatibel dengan SQL untuk DynamoDB. Ia lebih ramah daripada API mentah untuk pekerjaan ad-hoc — tetapi ia berjalan pada mesin yang sama, jadi aturan key (dan biaya) yang sama berlaku di balik sintaks yang familier itu.
SELECT
SELECT * FROM "AppData"
WHERE "PK" = 'CUSTOMER#42' AND begins_with("SK", 'ORDER#')Filter pada partition key dan ini menjadi sebuah Query. Hilangkan partition
key dan PartiQL diam-diam menjalankan full-table Scan —
jebakan yang sama, hanya tersembunyi di balik SELECT *.
INSERT
INSERT INTO "AppData" VALUE {'PK': 'CUSTOMER#42', 'SK': 'PROFILE', 'plan': 'pro'}UPDATE
UPDATE "AppData" SET "plan" = 'enterprise'
WHERE "PK" = 'CUSTOMER#42' AND "SK" = 'PROFILE'DELETE
DELETE FROM "AppData"
WHERE "PK" = 'CUSTOMER#42' AND "SK" = 'ORDER#2026-001'Mem-query sebuah index
Gunakan nama index dalam klausa FROM:
SELECT * FROM "AppData"."GSI1" WHERE "GSI1PK" = 'STATUS#OPEN'WHERE juga mendukung IN, contains() dan begins_with():
SELECT * FROM "AppData"
WHERE "PK" = 'CUSTOMER#42' AND "SK" IN ['ORDER#1', 'ORDER#2']Pernyataan terparameterisasi
Gunakan placeholder ? alih-alih menanam nilai secara inline — ini menghindari
masalah quoting/injection dan membiarkan SDK me-marshal tipe untuk Anda:
SELECT * FROM "AppData" WHERE "PK" = ? AND begins_with("SK", ?)Berikan Parameters: [{ S: 'CUSTOMER#42' }, { S: 'ORDER#' }] ke ExecuteStatement.
Batch dan transaksi
BatchExecuteStatement— hingga 25 pernyataan dalam satu perjalanan pulang-pergi. Lebih cepat, tetapi tanpa atomisitas lintas Item (masing-masing berhasil atau gagal sendiri).ExecuteTransaction— hingga 100 pernyataan, semua-atau-tidak-sama-sekali. Gunakan saat beberapa penulisan harus di-commit bersama.
Jebakan PartiQL
PartiQL terlihat seperti SQL tetapi berjalan pada mesin DynamoDB, jadi kebiasaan SQL menjadi bumerang:
- Satu
UPDATE/DELETEharus menargetkan satu Item berdasarkan primary key penuhnya — tidak ada mass updateUPDATE … WHERE status = 'x'(lakukan loop dengan batch sebagai gantinya). - Tidak ada
JOIN, tidak adaGROUP BY, tidak ada agregat (COUNT/SUM/AVG). Lihat PartiQL vs SQL. - Menghilangkan partition key mengubah
SELECTapa pun menjadi full-table Scan — hanya dibatasi oleh tagihan Anda.
Saat Anda benar-benar membutuhkan JOIN, GROUP BY, atau agregat, SQL Workbench
DynoTable menjalankannya di sisi klien atas baris yang telah Anda tarik — SQL yang
tidak bisa diucapkan PartiQL, di dalam aturan pola akses DynamoDB.
PartiQL tidak mengubah tipe data yang mendasarinya — nilai tetap melintas di wire sebagai DynamoDB-JSON, yang dapat Anda periksa dengan konverter.
Coba DynoTable untuk menjalankan pernyataan PartiQL dengan autocomplete dan melihat read unit yang dikonsumsi masing-masing.