DynamoDB Veri Türleri
Her DynamoDB attribute'ı, wire formatında bir veya iki harfli bir tür koduyla etiketlenir. Bu seti bilmek önemlidir, çünkü tür hem bir değerin nasıl saklandığını hem de bir item'ın boyutuna nasıl katkıda bulunduğunu belirler.
Bir bakışta
| Code | Tür | Kategori | JSON / JS karşılığı | Örnek (DynamoDB-JSON) |
|---|---|---|---|---|
S | String | Skaler | string | {"S": "Ada"} |
N | Number | Skaler | number | {"N": "37"} |
B | Binary | Skaler | Uint8Array / base64 | {"B": "ZGF0YQ=="} |
BOOL | Boolean | Skaler | boolean | {"BOOL": true} |
NULL | Null | Skaler | null | {"NULL": true} |
M | Map | Belge | object | {"M": {"k": {"S": "v"}}} |
L | List | Belge | array | {"L": [{"N": "1"}]} |
SS | String set | Set | — (JSON türü yok) | {"SS": ["a", "b"]} |
NS | Number set | Set | — | {"NS": ["1", "2"]} |
BS | Binary set | Set | — | {"BS": ["ZA=="]} |
Skalerler
S— string (UTF-8; karakter sayısıyla değil, bayt uzunluğuyla boyutlandırılır).N— sayı, hassasiyet için string olarak gönderilir; 38 basamağa kadar.B— binary, base64 kodlanmış olarak gönderilir.BOOL—true/false.NULL— açık bir null işaretçisi.
Belgeler
M— map (nesne). İç içe attribute'ların her biri kendi tür etiketini tutar.L— list. Elemanlar karışık türde 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. En önemlisi, düz JSON'da set türü
yoktur — bir dizi, asla 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?
Partition ve sort key'ler — tabloda ve herhangi bir index'te — bir skaler
olmalı ve yalnızca S, N veya B olmalıdır. Bir boolean, set, map veya list
üzerinden anahtar oluşturamazsınız. Değerleri tek bir S içinde birleştirerek bir
"bileşik" anahtar modelleyin (örn. ORDER#2026#42).
Bilmeye değer sınırlar
- Bir item en fazla 400 KB'tır — 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 geçer.
- Set'ler boş olmayan ve homojendir — boş set yok,
SileNkarışımı yok.
Tür neden maliyeti etkiler
Item boyutu, attribute-adı baytları artı değer baytlarının toplamıdır ve her tür farklı boyutlandırılı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ı ile ölçün.
Bir item'ı düzenlerken her attribute'ın türünü ve canlı bayt sayısını görmek için — 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.