Tipe Data DynamoDB
Setiap atribut DynamoDB ditandai dengan kode tipe satu atau dua huruf dalam format wire. Mengetahui kumpulan tipe ini penting karena tipe menentukan baik bagaimana sebuah nilai disimpan maupun bagaimana ia dihitung terhadap ukuran sebuah Item.
Sekilas
| Kode | Tipe | Kategori | Setara JSON / JS | Contoh (DynamoDB-JSON) |
|---|---|---|---|---|
S | String | Skalar | string | {"S": "Ada"} |
N | Number | Skalar | number | {"N": "37"} |
B | Binary | Skalar | Uint8Array / base64 | {"B": "ZGF0YQ=="} |
BOOL | Boolean | Skalar | boolean | {"BOOL": true} |
NULL | Null | Skalar | null | {"NULL": true} |
M | Map | Dokumen | object | {"M": {"k": {"S": "v"}}} |
L | List | Dokumen | array | {"L": [{"N": "1"}]} |
SS | String set | Set | — (tanpa tipe JSON) | {"SS": ["a", "b"]} |
NS | Number set | Set | — | {"NS": ["1", "2"]} |
BS | Binary set | Set | — | {"BS": ["ZA=="]} |
Skalar
S— string (UTF-8; diukur berdasarkan panjang byte-nya, bukan jumlah karakter).N— angka, dikirim sebagai string untuk presisi; hingga 38 digit.B— biner, dikirim dengan pengkodean base64.BOOL—true/false.NULL— penanda null eksplisit.
Dokumen
M— map (objek). Setiap atribut bersarang menyimpan tag tipenya sendiri.L— list. Elemen boleh bertipe campuran.
{"profile": {"M": {"name": {"S": "Ada"}, "age": {"N": "37"}}}}Set
SS— string set,NS— number set,BS— binary set.
Set bersifat tidak terurut, homogen, dan tidak boleh kosong. Yang terpenting,
JSON biasa tidak punya tipe set — sebuah array selalu pulang-pergi sebagai
list (L), tidak pernah sebagai SS/NS. Itu adalah batasan konversi yang
nyata, bukan bug; lihat catatan
konverter DynamoDB-JSON.
Tipe mana yang bisa menjadi key?
Partition key dan sort key — pada tabel maupun pada index mana pun — harus berupa
scalar, dan hanya S, N, atau B. Anda tidak bisa membuat key dari
boolean, set, map, atau list. Modelkan key "komposit" dengan menggabungkan nilai
ke dalam satu S (mis. ORDER#2026#42).
Batasan yang perlu diketahui
- Sebuah Item maksimal 400 KB — setiap nama atribut ditambah nilai, termasuk yang bersarang.
- Angka membawa hingga 38 digit presisi (positif atau negatif).
- Map dan list bersarang hingga 32 tingkat dalam.
- Set tidak kosong dan homogen — tidak ada set kosong, tidak boleh mencampur
SdanN.
Mengapa tipe memengaruhi biaya
Ukuran Item adalah jumlah byte nama atribut ditambah byte nilai, dan setiap tipe diukur secara berbeda — angka dipadatkan, boolean dan null adalah 1 byte, map dan list menambahkan overhead per elemen. Ukuran itu dibulatkan ke atas menjadi read/write capacity unit. Ukur sebuah Item nyata dengan kalkulator ukuran Item.
Coba DynoTable untuk melihat tipe setiap atribut dan hitungan byte live saat Anda mengedit sebuah Item — dan untuk mem-Filter atau mengagregasi di seluruh atribut bertipe di SQL Workbench, yang membaca setiap tag tipe untuk Anda.