PartiQL untuk DynamoDB lewat Contoh
adalah bahasa query yang kompatibel-SQL untuk DynamoDB. Ia lebih ramah daripada API mentah untuk pekerjaan ad-hoc — tetapi ia berjalan di mesin yang sama, jadi aturan key yang sama (dan biaya yang sama) berlaku di baliknya, di bawah sintaks yang familiar.
Bagaimana cara menulis query PartiQL untuk DynamoDB?
PartiQL memberi DynamoDB empat pernyataan berbentuk-SQL — SELECT, INSERT, UPDATE,
dan DELETE — dijalankan lewat ExecuteStatement. Masing-masing dikompilasi menjadi
operasi native di baliknya, jadi memfilter pada tetap sebuah
Query sementara menghilangkannya menjadi full-table Scan. Penulisan tetap
menargetkan satu Item lewat -nya; tidak ada JOIN, GROUP BY, atau
agregat relasional.
SELECT
SELECT * FROM "AppData"
WHERE "PK" = 'CUSTOMER#42' AND begins_with("SK", 'ORDER#')Filter pada dan ini adalah sebuah Query. Hilangkan partition key dan
PartiQL secara diam-diam menjalankan full-table Scan — footgun
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'Melakukan query pada indeks
Gunakan nama indeks di 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 berparameter
Gunakan placeholder ? alih-alih menanam nilai secara inline — ini menghindari
masalah quoting/injection dan membiarkan SDK mem-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 round trip. Lebih cepat, tetapi tanpa atomisitas lintas-Item (masing-masing berhasil atau gagal sendiri-sendiri).ExecuteTransaction— hingga 100 pernyataan, semua-atau-tidak-sama-sekali. Gunakan saat beberapa penulisan harus commit bersama-sama.
Footgun PartiQL
PartiQL terlihat seperti SQL tetapi berjalan di mesin DynamoDB, jadi kebiasaan SQL menjadi bumerang:
- Sebuah
UPDATE/DELETEtunggal harus menargetkan satu Item lewat lengkapnya — tak ada mass updateUPDATE … WHERE status = 'x'(loop dengan sebuah batch sebagai gantinya). - Tanpa
JOIN, tanpaGROUP BY, tanpa agregat (COUNT/SUM/AVG). Lihat PartiQL vs SQL. - Menghilangkan partition key mengubah
SELECTapa pun menjadi full-table Scan — dibatasi hanya oleh tagihan Anda.
Saat Anda benar-benar butuh JOIN, GROUP BY, atau agregat, SQL Workbench DynoTable
menjalankannya di sisi klien atas baris-baris yang sudah Anda tarik — SQL yang tak bisa
diucapkan PartiQL, di dalam aturan pola akses DynamoDB.
PartiQL tidak mengubah tipe data yang mendasarinya — nilai tetap melintas di kabel sebagai DynamoDB-JSON, yang bisa Anda inspeksi dengan konverter.
Coba DynoTable untuk menjalankan pernyataan PartiQL dengan autocomplete sadar-skema dan menjelajahi hasilnya dalam tampilan tabel yang dapat diurutkan.