Örneklerle DynamoDB için PartiQL
PartiQL, DynamoDB için SQL uyumlu bir sorgu dilidir. Anlık iş için ham API'den daha kullanıcı dostudur — ancak aynı motor üzerinde çalışır, bu yüzden tanıdık sözdiziminin altında aynı anahtar kuralları (ve aynı maliyetler) geçerlidir.
SELECT
SELECT * FROM "AppData"
WHERE "PK" = 'CUSTOMER#42' AND begins_with("SK", 'ORDER#')Partition key üzerinde filtreleyin ve bu bir Query olur. Partition key'i
atlayın ve PartiQL sessizce tam tablo Scan çalıştırır —
aynı tuzak, sadece SELECT *'ın arkasına gizlenmiş.
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'Bir index sorgulama
FROM cümlesinde index adını kullanın:
SELECT * FROM "AppData"."GSI1" WHERE "GSI1PK" = 'STATUS#OPEN'WHERE ayrıca IN, contains() ve begins_with()'i de destekler:
SELECT * FROM "AppData"
WHERE "PK" = 'CUSTOMER#42' AND "SK" IN ['ORDER#1', 'ORDER#2']Parametreli ifadeler
Değerleri satır içine almak yerine ? yer tutucularını kullanın — bu, alıntılama/
enjeksiyon sorunlarını atlatır ve SDK'nın türleri sizin için marshal etmesine
olanak tanır:
SELECT * FROM "AppData" WHERE "PK" = ? AND begins_with("SK", ?)ExecuteStatement'a Parameters: [{ S: 'CUSTOMER#42' }, { S: 'ORDER#' }] geçirin.
Toplu işlem ve transaction'lar
BatchExecuteStatement— tek bir gidiş gelişte 25'e kadar ifade. Daha hızlı, ancak item'lar arası atomiklik yok (her biri kendi başına başarılı olur veya başarısız olur).ExecuteTransaction— 100'e kadar ifade, ya hep ya hiç. Birkaç yazma birlikte commit edilmesi gerektiğinde kullanın.
PartiQL tuzağı
PartiQL, SQL'e benzer ancak DynamoDB motoru üzerinde çalışır, bu yüzden SQL alışkanlıkları ters teper:
- Tek bir
UPDATE/DELETE, tam birincil anahtarıyla bir item'ı hedeflemelidir —UPDATE … WHERE status = 'x'toplu güncelleme yoktur (bunun yerine bir toplu işlemle döngü kurun). JOINyok,GROUP BYyok, toplama yok (COUNT/SUM/AVG). PartiQL ve SQL bölümüne bakın.- Partition key'i atlamak, herhangi bir
SELECT'i yalnızca faturanızla sınırlı bir tam tablo Scan'ine dönüştürür.
Gerçekten bir JOIN'e, bir GROUP BY'a veya bir toplamaya ihtiyacınız olduğunda,
DynoTable'ın SQL Workbench'i bunları çektiğiniz satırlar üzerinde istemci tarafında
çalıştırır — PartiQL'in konuşamadığı SQL, DynamoDB'nin erişim modeli kuralları
içinde.
PartiQL, temel veri türlerini değiştirmez — değerler yine de wire üzerinden DynamoDB-JSON olarak gider ve bunları dönüştürücü ile inceleyebilirsiniz.
Otomatik tamamlama ile PartiQL ifadelerini çalıştırmak ve her birinin tükettiği okuma birimlerini görmek için DynoTable'ı deneyin.