DynamoDB join destekliyor mu?

Veritabanının kendisinde değil. İlişkisel olmayan bir veritabanı olarak DynamoDB'nin JOIN işlemi yoktur ve PartiQL de bir tane eklemez; dolayısıyla üretim okumaları için ilişkili veriyi modellersiniz: denormalize edin (her erişim deseni tek sorgu olsun diye kopyalayın ya da gömün) ya da ilişkili öğeleri tek bir bölüm anahtarı altında bir araya getirmek için tek tablo tasarımı kullanın. Yine de bir istemciden DynamoDB tablolarınız üzerinde gerçek bir join çalıştırabilirsiniz: DynoTable'ın SQL Workbench'i canlı verinizde gerçek JOIN, GROUP BY ve toplama sorguları yürütür.

Veritabanının neden join'i yok

DynamoDB, her ölçekte öngörülebilir, tek haneli milisaniyelik okumalar için kurulmuştur. Okuma anında join yapmak, gecikmeyi ne kadar ilişkili veri olduğuna bağlı kılardı; bu da o güvenceyi bozar. Dolayısıyla modellediğiniz erişim desenleri için join, yazma anında ve senin tarafınızdan yapılır.

Denerseniz ne olur

PartiQL deyimi hiçbir şey okumadan önce ayrıştırıcıda reddeder. Hem açık join hem de virgüllü çapraz join aynı şekilde başarısız olur:

SELECT o."total", c."name" FROM "Orders" o JOIN "Customers" c ON o."pk" = c."id"
SELECT * FROM "Orders", "Customers"
ValidationException: Only select from a single table or index is supported.
HTTP 400

Yani üretimde keşfedilecek yavaş-ama-çalışan bir geri dönüş yoktur. İki tabloyu adlandıran bir deyim söz dizimi hatasıdır ve işin başka bir yere taşınması gerekir: ya veri modelinize ya da ilişkisel kısmı kendisi yapan bir istemciye.

Modellenmiş erişim desenleri için ne yaparsınız

  • Denormalizasyon — birlikte okuduğunuz ilişkili veriyi kopyalayın ya da gömün.
  • Tek tablo tasarımı — birden çok varlık türünü aşırı yüklenmiş anahtarlarla tek bir tabloda saklayın; böylece bir öğe koleksiyonu onları tek bir Query'de birlikte okur.
  • Komşuluk listeleri — çoktan çoğa ilişkileri anahtarla Query edeceğiniz öğeler olarak modelleyin.

Bunlar üretim okumalarını tek istek olarak tutar. Tam anlatım: DynamoDB join'leri.

DynoTable ile gerçek bir JOIN çalıştırın

Modellemediğiniz, anlık ve tablolar arası soru için — bir Orders ve bir Customers tablosunda "geçen ay 500 doların üzerinde harcayan AB müşterileri hangileri?" — DynoTable o join'i senin için çalıştırır. Bir masaüstü DynamoDB istemcisidir ve SQL Workbench'i gerçek JOIN, GROUP BY ve toplama sorguları yürütür: öğeleri normal DynamoDB API'si üzerinden okur, sonra sorgunun ilişkisel kısmını istemcide çalıştırır. Dolayısıyla bu, tanımlı hiçbir ilişkisi olmayan tablolara ve JOIN anahtar sözcüğü olmayan bir sorgu motoruna karşı işe yarar:

SELECT   c.name, SUM(o.total) AS spend
FROM     Customers c
JOIN     Orders o ON o.customerId = c.id
WHERE    c.region = 'EU'
GROUP BY c.name

SQL yazmayı tercih etmiyor musunuz? Smart Table'lar aynı join motorunun görsel şerididir: bir tuval üzerinde iki tablo arasına bir ilişki çizgisi çizin ve birleştirilmiş satırlara göz atın.

Dürüst çekince, "DynamoDB'nin erişim deseni kuralları içinde": Workbench yine DynamoDB üzerinden okur, dolayısıyla en hızlı join'ler ON özniteliği ya da WHERE yan tümcesi en az bir tarafta bir bölüm anahtarına ya da GSI'ya isabet edenlerdir — bu da DynamoDB'nin tam tarama yerine bir Query çalıştırmasını sağlar. Workbench davranışı için /docs/dynamodb-sql-workbench, görsel join tuvali için /docs/smart-tables sayfalarına bakın. DynoTable, sonuçları kodda elle dikmek yerine join sorusunu sormanıza izin verir; yukarıdaki kısıtları ortadan kaldırmaz. DynamoDB GUI istemcileri arasında gerçekten doğru olan tek "evet, join yapabilirsiniz" odur: PartiQL de AWS'nin kendi NoSQL Workbench'i de tek tablo duvarında durur.

Join'lerden tümüyle kaçınan tek tablo okumaları için, ilişkili verinin denormalize kopyalarını modellemeden önce overload edilmiş anahtarları tek tablo tasarımı aracında taslaklayın.

Takas

Üretim okuma yollarında, okumaları ucuz ve sabit zamanlı kılmak için yazmalarda daha dikkatli iş yaparsınız.

Daha derine inin

DynamoDB join'leri, tek tablo tasarımı ve birden çoğa ilişkiler sayfalarını okuyun. Tablolarınız üzerinde SQL ile ya da görsel olarak Smart Table'larla gerçek bir JOIN çalıştırmak için DynoTable'ı indirin.

Kaynaklar

En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.

Yukarıdaki ValidationException, 2026-07-28 tarihinde @aws-sdk/client-dynamodb 3.1095.0 üzerinden DynamoDB Local 3.3.0'a karşı yeniden üretildi ve birebir alıntılanmıştır.

Console olmadan DynamoDB ile çalış

DynamoDB’nin çalıştıramadığı gerçek SQL’i çalıştıran hızlı bir DynamoDB masaüstü istemcisi — JOINs, GROUP BY, toplamalar — görsel düzenleme ve kendi Bedrock anahtarların üzerinde bir yapay zekâ aracısıyla.

30 günlük ücretsiz deneme, kredi kartı yok — ardından süre sınırı olmayan Ücretsiz plan.