Başlangıç4 dakikalık okuma

DynamoDB Veri Türleri

Her DynamoDB attribute'u, wire formatında bir veya iki harfli bir tür koduyla etiketlenir. Bu kümeyi bilmek önemlidir çünkü tür, hem bir değerin nasıl depolandığını hem de bir item'ın boyutuna nasıl katkıda bulunduğunu belirler.

DynamoDB hangi veri türlerini destekler?

DynamoDB, üç kategoriye yayılan on veri türünü destekler. Skalerler; String (S), Number (N), Binary (B), Boolean (BOOL) ve Null (NULL)'dur. Dokümanlar; başka türleri iç içe barındıran Map (M) ve List (L)'dir. Set'ler; String Set (SS), Number Set (NS) ve Binary Set (BS)'tir — sırasız, homojen ve boş olamaz. Yalnızca S, N ve B bir anahtar olabilir.

KodTürKategoriJSON / JS karşılığıÖrnek (DynamoDB-JSON)
SStringSkalerstring{"S": "Ada"}
NNumberSkalernumber{"N": "37"}
BBinarySkalerUint8Array / base64{"B": "ZGF0YQ=="}
BOOLBooleanSkalerboolean{"BOOL": true}
NULLNullSkalernull{"NULL": true}
MMapDokümanobject{"M": {"k": {"S": "v"}}}
LListDokümanarray{"L": [{"N": "1"}]}
SSString setSet— (JSON türü yok){"SS": ["a", "b"]}
NSNumber setSet{"NS": ["1", "2"]}
BSBinary setSet{"BS": ["ZA=="]}

Skalerler

  • S — string (UTF-8; karakter sayısıyla değil, bayt uzunluğuyla boyutlandırılır).
  • N — number, hassasiyet için string olarak gönderilir; 38 basamağa kadar.
  • B — binary, base64 kodlu gönderilir.
  • BOOLtrue / false.
  • NULL — açık bir null işaretçisi.

Dokümanlar

  • M — map (nesne). İç içe attribute'ların her biri kendi tür etiketini korur.
  • L — list. Elemanlar karışık türlerde olabilir.
{"profile": {"M": {"name": {"S": "Ada"}, "age": {"N": "37"}}}}

Set'ler

  • SS — string set, NS — number set, BS — binary set.

Set'ler sırasız, homojendir ve boş olamaz. Kritik olarak, düz JSON'un set türü yoktur — bir dizi, asla bir SS/NS olarak değil, bir list (L) olarak gidip gelir. Bu bir hata değil, gerçek bir dönüştürme sınırlamasıdır; DynamoDB-JSON dönüştürücüsü notuna bakın.

Hangi türler anahtar olabilir?

ve anahtarları — tabloda ve herhangi bir index'te — bir skaler olmalı ve yalnızca S, N veya B olabilir. Bir boolean, set, map veya list üzerinde anahtarlama yapamazsınız. Değerleri tek bir S içinde birleştirerek "bileşik" bir anahtar modelleyin (ör. ORDER#2026#42).

Bilinmeye değer sınırlar

  • Bir item en fazla 400 KB olur — iç içe olanlar dahil her attribute adı artı değeri.
  • Sayılar 38 basamağa kadar hassasiyet taşır (pozitif veya negatif).
  • Map'ler ve list'ler 32 seviyeye kadar iç içe girer.
  • Set'ler boş olamaz ve homojendir — boş set yok, S ile N'i karıştırmak yok.

Türün maliyeti neden etkilediği

Item boyutu, attribute-adı baytları artı değer baytlarının toplamıdır ve her tür farklı boyutlanır — sayılar sıkıştırılır, boolean'lar ve null'lar 1 bayttır, map'ler ve list'ler eleman başına ek yük ekler. Bu boyut, okuma/yazma kapasite birimlerine yukarı yuvarlanır. Gerçek bir item'ı item boyutu hesaplayıcısıyla ölçün.

DynoTable'da yapın

Yukarıdaki set-vs-list ayrımı, araçların genellikle gizlediği şeydir. DynoTable'ın item düzenleyicisi bunu bir format değiştirici ile açık hale getirir:

  • Düz JSON — ilkeller düz kalır ("age": 30), ancak set'ler, gidiş-dönüşten sağ çıkabilmeleri için tür sarmalayıcılarını korur: "tags": { "SS": ["a", "b"] }, "scores": { "NS": ["1.5", "2.5"] }. Bu, günlük düzenleme için okunabilir biçimdir.
  • DynamoDB JSON — kanonik AWS biçimi; burada her değer kendi tür etiketini taşır: "age": { "N": "30" }, "name": { "S": "alice" }.

İkisi arasında geçiş yapmak, her skaler, doküman ve set türünün wire üzerinde tam olarak nasıl temsil edildiğini gösterir — ve set türlerinin düz-JSON karşılığı olmadığı için, bu değiştirici, tüm item'ı elle marshal etmeden bir SS/NS/BS'yi elle yazmanın tek yoludur.

DynoTable'ın bir number set ve bir string set içeren bir item'ı gösteren item düzenleyicisi ve Düz-JSON / DynamoDB-JSON değiştiricisi.
DynoTable'ın bir number set ve bir string set içeren bir item'ı gösteren item düzenleyicisi ve Düz-JSON / DynamoDB-JSON değiştiricisi.

Bir item'ı düzenlerken her attribute'un türünü ve canlı bayt sayısını görmek — ve her tür etiketini sizin için okuyan SQL Workbench'te türlü attribute'lar arasında filtrelemek veya toplamak — için DynoTable'ı deneyin. Marshal edilmiş bir blob'u uygulama olmadan dönüştürmek için, DynamoDB-JSON dönüştürücüsü aynı gidiş-dönüşü tarayıcıda yapar.

Güncellendi