DynamoDB ile Amazon S3

DynamoDB ve Amazon S3 farklı problemleri çözer, bu yüzden "hangisi" sorusunun dürüst cevabı genellikle ikisi dedir. DynamoDB, anahtarla aradığınız, sorguladığınız ve güncellediğiniz yapılandırılmış kayıtlar için bir anahtar-değer ve belge veritabanıdır. Amazon S3 ise dosyalar ve blob'lar için — görüntüler, yedekler, günlükler, videolar — bütün olarak depolayıp aldığınız nesne depolamadır. Bunlar birbirini tamamlar, ya biri ya diğeri değil.

DynamoDB mi yoksa S3 mi kullanmalıyım?

Anahtarla tek haneli milisaniye gecikmesiyle sorguladığınız, filtrelediğiniz ve güncellediğiniz çok sayıda küçük yapılandırılmış kaydınız olduğunda DynamoDB'yi kullanın. Bütün dosyaları veya blob'ları — görüntüler, yedekler, dışa aktarımlar — depolayıp adla aldığınızda Amazon S3'ü kullanın. Bunlar birbirini tamamlar: çok yaygın bir desen nesneyi S3'te, meta verisini ise DynamoDB'de saklar.

Bir bakışta DynamoDB ile Amazon S3

ÖzellikDynamoDBAmazon S3
Birincil amaçYapılandırılmış kayıtlar için NoSQL anahtar-değer / belge veritabanıDosyalar, blob'lar ve yapılandırılmamış veri için nesne depolama
Veri birimiÖğe (bir tipli öznitelikler kümesi), birincil anahtarla adreslenirNesne (byte'lar + meta veri), bir bucket içinde bir anahtarla adreslenir
Birim başına maksimum boyutÖğe başına 400 KB (öznitelik adları + değerleri)Nesne başına 5 TB (5 GB'ye kadar tek PUT; daha büyük yüklemeler multipart kullanır)
Sorgu / erişimGetItem, Query, Scan, BatchGetItem, PartiQL, ikincil indeksler (GSI/LSI)Anahtarla GET / PUT / DELETE, bir bucket'ı LIST; Amazon Athena ile yerinde sorgulama (veya mevcut müşteriler için S3 Select)
Gecikme profiliHerhangi bir ölçekte tek öğeler için tek haneli milisaniye okuma/yazmaKalıcı nesne verimi; bir anahtar-değer veritabanından daha yüksek istek başına gecikme, milisaniyelik kayıt aramaları değil
TutarlılıkVarsayılan olarak nihai tutarlı; istek başına güçlü tutarlı okumalar mevcutTüm nesneler ve tüm istekler için güçlü yazma-sonrası-okuma tutarlılığı (2020'den beri)
Fiyatlandırma modeliOkuma/yazma kapasitesi (RCU/WCU — on-demand veya sağlanan) + GB-ay başına veri depolamaGB-ay başına depolama (depolama sınıfına göre) + istek ücretleri (PUT/GET/LIST) + veri alma / transfer
En uygun iş yükleriKullanıcı profilleri, oturumlar, sepetler, olay/durum kayıtları, meta veri, yüksek verimli OLTP tarzı erişimMedya, yedekler, veri gölü dosyaları, statik varlıklar, büyük dışa aktarımlar, arşivleme

Yukarıdaki her hücre resmi AWS dokümantasyonundan alınmıştır (bu dosyanın başındaki provenance notuna bakın).

DynamoDB'yi ne zaman kullanmalı

Veriniz anahtarla eriştiğiniz yapılandırılmış kayıtlar olduğunda DynamoDB'ye başvurun:

  • Ayrı ayrı okuyup yazdığınız ve güncellediğiniz çok sayıda küçük öğe (her biri 400 KB limitinin altında).
  • Öngörülebilir, düşük gecikmeli aramalar — DynamoDB, herhangi bir ölçekte tek öğeler için tek haneli milisaniye okuma ve yazma hedefler.
  • Bir birincil anahtar ve ikincil indekslerle ifade edebileceğiniz erişim desenleri: id-ile-al, bir-bölümü-sorgula, bir-bölüm-içinde-filtrele.
  • İnce ayarlı güncellemelerle yüksek yazma verimi (tüm kaydı yeniden yazmadan tek bir özniteliği değiştirin).

Kendinizi bir öğenin içine 5 MB'lık bir dosya koymaya çalışırken bulursanız, bu DynamoDB'nin sınırına ulaştığınızın işaretidir — DynamoDB öğe boyutu limiti'ne bakın.

S3'ü ne zaman kullanmalı

Veriniz adla aldığınız bütün bir dosya veya blob olduğunda Amazon S3'e başvurun:

  • Görüntüler, PDF'ler, videolar, ses ve diğer ikili varlıklar.
  • Yedekler, veritabanı dışa aktarımları ve daha sonra Amazon Athena gibi bir araçla sorgulanan veri gölü dosyaları (Parquet, CSV, JSON).
  • Büyük nesneler — S3, herhangi bir tek veritabanı kaydının çok ötesinde, her biri 5 TB'ye kadar nesne depolar.
  • Statik web sitesi varlıkları ve doğrudan kullanıcılara sunulan içerik.

S3 bir veritabanı değildir: rastgele nesnelerin içeriğini DynamoDB öğelerini sorguladığınız gibi zengin indekslerle sorgulayamazsınız. Bir nesne üzerinde yerinde SQL tarzı filtreleme Amazon Athena aracılığıyla kullanılabilir (S3 Select mevcut müşteriler için kullanılabilir kalmaya devam eder ancak 2024'te yeni müşterilere kapatıldı).

İkisini birlikte kullanmak

İki hizmet birleştirildiğinde en güçlü halindedir. AWS'in bir DynamoDB öğesi için fazla büyük veriye dair kendi rehberliği, nesneyi S3'te saklamak ve DynamoDB'de bir işaretçi tutmaktır:

  • Büyük dosyayı (görüntü, belge, video) S3'te bir nesne olarak saklayın.
  • Meta verisini — S3 nesne anahtarı, içerik tipi, sahip, etiketler, zaman damgaları — ucuza sorgulanabildiği yerde, DynamoDB'de bir öğe olarak saklayın.
  • Kaydı DynamoDB'de anahtarla arayın, ardından saklanan tanımlayıcıyı kullanarak nesneyi S3'ten alın.

AWS'in dikkat çektiği bir uyarı: DynamoDB ile S3 arasında işlem yayılımı yoktur, bu yüzden uygulamanız kısmi hataları yönetir (örneğin, DynamoDB yazması başarısız olursa yetim kalan bir S3 nesnesini temizlemek).

DynamoDB ile çalışmak

Verinizin yapılandırılmış yarısı için DynamoDB'yi seçtikten sonra, DynoTable macOS, Windows ve Linux genelinde tablolara göz atmak, düzenlemek ve sorgulamak için bir masaüstü DynamoDB istemcisidir. Standart AWS kimlik bilgisi zincirinizi okur, bu yüzden taşınacak DynamoDB'ye özgü hiçbir şey yoktur — bölgenize ve tablolarınıza yönlendirin, veriniz DynamoDB'de kalsın.

Yukarıdaki DynamoDB'de-meta-veri desenini destekleyen GetItem, Query, Update veya koşul ifadelerini elle oluşturmanız gerektiğinde, ücretsiz DynamoDB Expression Builder isteği AWS SDK, CLI ve boto3 biçimlerinde üretir. Neyin S3'e ait olduğuna karar vermeden önce bir öğeyi 400 KB limitine göre boyutlandırmak için öğe boyutu hesaplayıcısı bir kaydın byte boyutunu ölçer.

SSS

DynamoDB dosya veya görüntü saklayabilir mi?

Küçük olanları, limitler dahilinde. Bir DynamoDB öğesi ikili veri tutabilir, ancak tüm öğe — her öznitelik adı ve değeri — 400 KB'nin altında kalmalıdır. Daha büyük her şey için, AWS'in belgelenmiş en iyi uygulaması, dosyayı Amazon S3'te bir nesne olarak saklamak ve S3 nesne anahtarını (artı meta veriyi) bir DynamoDB öğesinde tutmaktır.

S3, DynamoDB'den daha mı ucuz?

Farklı fiyatlandırırlar, bu yüzden düz bir cevaptan çok iş yüküne bağlıdır. S3, GB-ay başına depolama artı istek başına ve alma ücretleri alır ve genellikle sık erişilmeyen büyük hacimli byte'lar için daha ucuz bir yuvadır. DynamoDB, okuma/yazma kapasitesi artı depolama alır ve çok sayıda küçük kayda yüksek verimli, düşük gecikmeli erişim için inşa edilmiştir. DynamoDB'de büyük blob'lar saklamak hem boyut sınırlı hem de nispeten pahalıdır — bu yüzden S3-nesne-artı-DynamoDB-meta-veri bölünmesi standart desendir.

JSON için DynamoDB mi S3 mi?

JSON, anahtarla sorguladığınız ve güncellediğiniz yapılandırılmış bir kayıt ise — bir kullanıcı, bir sipariş, bir oturum — DynamoDB uyar ve JSON'u tipli özniteliklere eşler ve PartiQL'i destekler. JSON, depolayıp daha sonra toplu olarak taradığınız bütün bir belge veya veri gölü dosyası ise (örneğin Amazon Athena ile sorgulamak), S3 uyar. Sık görülen bir hibrit, sorgulanabilir alanları DynamoDB'de, tam JSON yükünü ise S3'te bir nesne olarak tutar.

İlgili

Son doğrulama 2026-07-12, resmi AWS DynamoDB ve Amazon S3 dokümantasyonuna göre yapıldı. Amazon S3, DynamoDB ve Athena, Amazon Web Services hizmetleridir; burada yalnızca tanımlama amacıyla anılmıştır.

Console olmadan DynamoDB ile çalışın

DynoTable, DynamoDB için hızlı bir masaüstü istemcisidir — tablolara göz atın, SQL tarzı sorgular çalıştırın ve item'ları yerel olarak düzenleyin.