Apakah DynamoDB mendukung SQL?
Sebagian. DynamoDB mendukung PartiQL, bahasa kueri yang kompatibel dengan SQL untuk pernyataan SELECT, INSERT, UPDATE, dan DELETE. Ini bukan SQL penuh: tidak ada GABUNG, tidak ada GROUP BY, dan tidak ada agregasi sewenang-wenang, dan kueri yang efisien masih memerlukan penargetan kunci utama atau indeks. Jika Anda menginginkan bagian yang hilang tersebut, Workbench SQL DynoTable menjalankan JOIN, GROUP BY, dan kueri agregat nyata pada tabel DynamoDB Anda dari desktop.
Apa yang PartiQL berikan kepada Anda
Sintaks SQL yang familiar untuk empat operasi data. Anda dapat menulis SELECT * FROM "Orders" WHERE ... alih-alih membuat panggilan API tingkat rendah, yang nyaman dan mudah dibaca.
Apa yang tidak diberikannya kepada Anda
- Tanpa GABUNG — DynamoDB tidak bersifat relasional; Anda malah melakukan denormalisasi.
- Tidak ada GROUP BY / agregat — pengelompokan dan penjumlahan terjadi di aplikasi Anda.
- Tidak ada pemindaian bentuk bebas dengan harga murah —
SELECTtanpa syarat kunci tetap menjalankan Pemindaian dan biayanya sesuai.
Tempat parser berhenti
Ini bukan fitur yang dapat Anda jangkau dengan sintaks berbeda. Jalankan mereka dan pernyataannya tidak akan pernah sampai pada membaca item:
SELECT "region", SUM("total") FROM "Orders" GROUP BY "region"
ValidationException: Unsupported clause: GROUP BY
SELECT COUNT(*) FROM "Orders"
ValidationException: Unexpected path component at 1:8:5
SELECT SUM("total") FROM "Orders"
ValidationException: Unexpected path component at 1:8:3
SELECT DISTINCT "region" FROM "Orders"
ValidationException: Unsupported token in expression: DISTINCTLihatlah apa yang dikatakan oleh kesalahan agregat. Tidak ada fungsi agregat yang dapat ditolak oleh parser, jadi COUNT(*) dibaca sebagai jalur atribut dan jatuh ke *, di kolom 8. Setipis itulah permukaan SQL.
ORDER BY adalah yang perlu diketahui, karena sepertinya berfungsi:
SELECT * FROM "Orders" WHERE "pk" = 'U#1' ORDER BY "total"
ValidationException: Variable reference total in ORDER BY clause must be part of the primary keyAnda dapat mengurutkan berdasarkan tombol pengurutan, naik atau turun, dan tidak berdasarkan yang lain. Menyortir berdasarkan atribut lain adalah tugas aplikasi Anda, setelah dibaca.
Model mental
Pikirkan PartiQL sebagai lapisan sintaksis di atas operasi Kueri, Pemindaian, dan penulisan DynamoDB yang ada; aturan pola akses yang sama berlaku di bawahnya.
SQL asli (GABUNG, GROUP BY, agregat) dengan DynoTable
PartiQL berhenti di SELECT tabel tunggal. SQL Workbench DynoTable melangkah lebih jauh: ia menjalankan fungsi JOIN, GROUP BY, dan agregat aktual (COUNT, SUM, AVG, MIN, MAX) pada tabel DynamoDB Anda. Ia membaca item melalui DynamoDB API normal, kemudian mengeksekusi bagian relasional dari kueri di klien: SQL dalam aturan pola akses DynamoDB, karena setiap gabungan masih membaca kunci atau indeks sebenarnya. Jadi tiga hal yang tidak dapat dilakukan PartiQL, Anda menulis sebagai satu pernyataan:
SELECT c.region, COUNT(*) AS orders, SUM(o.total) AS revenue
FROM Orders o
JOIN Customers c ON o.customerId = c.id
GROUP BY c.regionItu tetap jujur tentang kendala yang mendasarinya (gabungan tak terbatas adalah pembacaan tak terbatas), jadi kueri tercepat adalah kueri yang gabungan atau WHERE-nya mengenai kunci partisi atau indeks. Detail lengkap di SQL untuk DynamoDB dan manual produk di /docs/dynamodb-sql-workbench.
Prototipe sisi PartiQL dari model data yang sama dengan
Pembuat kueri DynamoDB — memancarkan cakupan partisi
Program Query yang tetap berada di jalur efisien PartiQL SELECT menggunakan kunci
kondisi ada.
Pelajari lebih lanjut
Bandingkan keduanya di PartiQL vs SQL, lihat Contoh PartiQL, dan baca SQL untuk DynamoDB. Unduh DynoTable untuk menulis PartiQL, dan JOIN, GROUP BY, dan agregat nyata, pada tabel Anda.
Referensi
- PartiQL - bahasa kueri yang kompatibel dengan SQL untuk Amazon DynamoDB — Panduan Pengembang Amazon DynamoDB
- Pernyataan pilihan PartiQL untuk DynamoDB — Panduan Pengembang Amazon DynamoDB
- Data kueri dalam DynamoDB (SQL hingga NoSQL) — Panduan Pengembang Amazon DynamoDB
Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.
Setiap ValidationException di atas direproduksi pada 28-07-2026 terhadap DynamoDB Lokal 3.3.0 melalui @aws-sdk/client-dynamodb 3.1095.0 dan dikutip kata demi kata, termasuk offset kolom.