DynamoDB JSON depolayabilir mi?

Evet. DynamoDB, JSON'ı kendi belge türlerine eşleyerek depolayabilir: nesneler için map (M) ve diziler için list (L), 32 seviye derinliğe kadar iç içe. Her öğe 400 KB'a kadar tutar. DynamoDB'nin tür sistemi JSON'ın üst kümesidir, dolayısıyla herhangi bir JSON belgesi bir öğe olarak depolanabilir, sonra filtrelenebilir, güncellenebilir ve okunabilir.

JSON, DynamoDB türlerine nasıl eşlenir

  • JSON nesnesi → Map (M)
  • JSON dizisi → List (L)
  • dize / sayı / boole / null → S / N / BOOL / NULL

Listeler ve map'ler 32 seviye derinliğe kadar iç içe geçebilir, dolayısıyla tam bir JSON belgesi tek bir öğe olur.

Depolanan boyut JSON'dan küçüktür

Tür etiketli kablo biçimi savurgan görünür ve insanlar bunun için faturalandırıldıklarını sanır. Öyle değil. DynamoDB, öğe boyutu üzerinden ücretlendirir; bu da her öznitelik adının artı her değerin toplamıdır — JSON'ın tırnakları, iki noktaları, virgülleri ya da süslü parantezleri olmadan.

İç içe bir adres, iki satırlık bir öğe dizisi ve iki elemanlı bir etiket listesi içeren dokuz öznitelikli bir sipariş belgesi üç farklı şekilde ölçülür:

ÖlçümBayt
Kabloda gönderildiği hâliyle DynamoDB JSON607
Aynı belge, düz küçültülmüş JSON olarak447
Faturalandırılan öğe boyutu350

Yani depolanan öğe, başladığınız JSON'dan %22, onu taşıyan istekten ise %42 daha küçüktür. İşin çoğunu sayılar yapar: 149.97, 6 karakterlik metne karşılık yaklaşık 4 baytta depolanır. Dizeler ve adlar tam olarak sayılır; AWS sayı kodlamasını kabaca iki anlamlı basamak başına bir bayt olarak belgeler, dolayısıyla 350'yi tek bayta değil, birkaç bayta kadar doğru okuyun.

Asıl size pahalıya mal olan şey adlandırmadır. Öznitelik adları ve map anahtarları o 350 baytın 148'ini oluşturur — öğenin %42'si — ve bunları her kopyada ödersiniz. shippingAddress'i milyarlarca öğe genelinde addr'a kısaltmak gerçek bir tasarruftur. Herhangi bir belgeyi öğe boyutu hesaplayıcısında boyutlandırabilirsiniz; onu motorun kendi faturalandırma sınırına karşı denetledik: 1.024 bayt olarak hesapladığı öğeler bir yazma birimi tüketir, 1.025 ise iki.

JSON gidiş-dönüşte ne kaybeder

DynamoDB sayıları 38 basamak duyarlıkla ondalık olarak depolar, dolayısıyla bir JSON sayısı korunmaz, normalleştirilir. Yazılıp doğrudan geri okununca:

{"price": 19.90}             ->  {"price": {"N": "19.9"}}
{"qty": 1.0}                 ->  {"qty": {"N": "1"}}
{"limit": 1e5}               ->  {"limit": {"N": "100000"}}
{"id": 9007199254740993}     ->  {"id": {"N": "9007199254740993"}}

İşe yarar olan son satırdır. DynamoDB tam sayıyı olduğu gibi korur, Node'da JSON.parse('{"id":9007199254740993}') ise size 9007199254740992 verir. Kimlikler önemliyse onları dize olarak depolayın.

DynamoDB'nin hiç kabul etmeyeceği iki JSON belgesi: boş bir anahtar ({"": "x"}, ValidationException: Empty attribute name fırlatır ve aynısı iç içe bir map için de geçerlidir) ve duyarlık sınırını aşan bir sayı; o da ValidationException: DynamoDB only supports precision up to 38 digits fırlatır.

Tek uyarı

DynamoDB'nin türleri JSON'ınkinin üst kümesidir. Binary (B) ve Set (SS/NS/BS) öznitelikleri doğrudan bir JSON karşılığına sahip değildir, dolayısıyla düz JSON'a geri dönüştürdüğünüzde kümeler dizilere, ikili veri ise base64'e serileşir.

Onunla çalışmak

İç içe JSON öznitelikleri üzerinde doğrudan işlem yapabilirsiniz — bir map alanında filtreleyebilir, tek bir liste elemanını güncelleyebilirsiniz — öğenin tamamını yeniden yazmadan.

Daha derine inin

Bkz. DynamoDB JSON ve marshalling ve düz JSON ile DynamoDB JSON arasında JSON dönüştürücü ile dönüştürün. JSON öğelerini görsel olarak düzenlemek için DynoTable'ı indirin.

Kaynaklar

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

2026-07-28 tarihinde ölçüldü ve yeniden üretildi. Üç bayt sayımı kendi öğe boyutu hesaplayıcımızdan ve serileştirilmiş istekten gelir; sayı gidiş-dönüşleri ile her iki ValidationException dizesi, mesaj ifadesi canlı hizmetten farklı olabilen DynamoDB Local 3.3.0'ın @aws-sdk/client-dynamodb 3.1095.0 üzerinden alınmış birebir çıktısıdı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.