DynamoDB bir anahtar-değer deposu mu?
Evet — DynamoDB bir anahtar-değer deposudur, aynı zamanda bir doküman deposudur. Her öğe birincil anahtarıyla (bir bölüm anahtarı, isteğe bağlı olarak bir sıralama anahtarıyla) alınır ve bu da hızlı, anahtar tabanlı aramalar verir. Ayrıca doküman türlerini — iç içe list ve map'leri — destekler; dolayısıyla hem anahtar-değer hem de doküman veritabanı olarak çalışır.
Anahtar-değer modeli
Her öğenin onu benzersiz olarak tanımlayan bir birincil anahtarı vardır. O anahtar üzerinde bir GetItem, doğrudan, tek haneli milisaniyelik bir aramadır — tarama yok. Bu klasik anahtar-değer erişim desenidir.
Doküman tarafı
Anahtarın ötesinde değerler zengin dokümanlar olabilir: 400 KB'lık öğe sınırı içinde, 32 seviyeye kadar iç içe geçen map'ler (nesneler) ve list'ler (diziler). Bu da DynamoDB'yi JSON benzeri doküman değerlerine sahip bir anahtar-değer deposu yapar.
Doküman yarısı nerede durur
32 seviye üst sınırı gerçektir (33. seviye düpedüz reddedilir, tam hatası burada), ama canınızı yakan nadiren derinliktir. Adresleme yakar.
Alana göre değil, anahtara göre okursunuz. Bir ProjectionExpression, DynamoDB'nin ne okuduğunu değil, telden ne geçtiğini daraltır. Uzun bir bio ve 100 elemanlı bir tags listesi tutan ~30 KB'lık tek bir öğede, güçlü tutarlı bir GetItem üç şekilde de aynı faturayı çıkarır:
| İstek | Dönen | ConsumedCapacity |
|---|---|---|
GetItem, öğenin tamamı | her şey | 8 |
ProjectionExpression: 'status' | 6 baytlık tek değer | 8 |
ProjectionExpression: 'profile.tags[0]' | tek liste elemanı | 8 |
Dokümanları bir anahtar-değer deposunda saklayarak kabul ettiğiniz takas budur: erişimin ve faturalamanın birimi öğenin tamamıdır. Bir öznitelik sürekli okunuyorsa ve komşuları büyükse, farklı öğelere aittirler.
Anahtar neden bu kadar önemli
Okumalar anahtarlı olduğu için, verimli bir arama tek bir bölüm anahtarı değerini sabitlemekle başlar. İyi anahtar tasarlamak DynamoDB modellemesinin özüdür.
Yalnızca anahtarı değil, değeri de boyutlandırın
Anahtar-değer hızı, değerin erişim desenine sığdığını varsayar. 400 KB'lık bir öğeyi okumak, tek bir alanı da tüm dokümanı da projekte etseniz aynı maliyettedir — yukarıdaki bölümdeki tablo ~30 KB'lık bir öğe için zaten 8 kapasite birimi göstermişti. Dokümanın yalnızca bir kısmı sıcaksa, büyük blob'ları S3'te tutun ve DynamoDB'de bir işaretçi bırakın.
Öğe boyutu hesaplayıcısı, attribute adlarını ve değerlerini DynamoDB'nin faturalandırdığı şekilde toplar.
DynoTable'da: USER#123 gibi bileşik partition anahtarları ızgarada çözülür, böylece varlık önekini bir bakışta okuyabilirsiniz; Satır Hızlı Görünümü (Space) ise yerinizi kaybetmeden tam dokümanı açar. Bkz. Tabloları sorgulama.
Daha derine inin
Anahtarları DynamoDB bileşik birincil anahtar ve DynamoDB bölüm anahtarları nasıl çalışır sayfalarında anlayın. Anahtara göre sorgulamak için DynoTable'ı indirin.
Kaynaklar
- Fast NoSQL Key-Value Database — Amazon DynamoDB — AWS
- Core components of Amazon DynamoDB — Amazon DynamoDB Developer Guide
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.
Kapasite rakamları 2026-07-28 tarihinde @aws-sdk/client-dynamodb 3.1095.0 üzerinden DynamoDB Local 3.3.0'a (amazon/dynamodb-local:latest) karşı ölçüldü, tahmin edilmedi.