Başlangıç2 dakikalık okuma

Ö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).
  • ExecuteTransaction100'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).
  • JOIN yok, GROUP BY yok, 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.

Güncellendi