dynamoDBのitem size計算

dynamoDBのitem sizeを計算する方法を調べたのでメモ

基本式はこれで求まる

属性名のbyte数 + 属性値のbyte数

属性名はstringであり、stringはUTF-8 バイナリエンコードUnicodeで保持されている
なのでasciiの文字を使っていれば1文字1byte

属性値として使えるデータ型はnumber, string, binary, Boolean, null
Booleanとnull型の場合は常に1byte
それ以外の場合はstringとして数えた場合と同じになる

numberについてはint, doubleなどの型はないため4byte, 8byteなどではなく、
桁数=byte数として計算することができる

example

"Item":{
  "name":{"S":"amazon"},
  "age":{"N":"20"},
  "own_it":{"BOOL":true}
}

この場合
name(4) + amazon(6) + age(3) + 20(2) + own_it(6) + true(1)
= 22 bytes