DynamoDB Dynomite Model Data Types

Important: These docs are for the outdated Jets 5 versions and below. For the latest Jets docs: docs.rubyonjets.com

Data Types

DynamoDB has data types. They are quite flexible.

  • S – String
  • N – Number
  • B – Binary
  • BOOL – Boolean
  • NULL – Null
  • M – Map
  • L – List
  • SS – String Set
  • NS – Number Set
  • BS – Binary Set

You can store whatever data-type value you wish in the “columns” when you add data. It’s up to you. Dynomite typecasts base on the value that’s assigned to the attribute. The aws-sdk-dynamodb underlying library handles most of the typecast heavy lifting.

Note: If you’re using aws dynamodb put-item CLI, you have to provide a raw API payload schema format.

item.json

{
    "Artist": {"S": "No One You Know"},
    "SongTitle": {"S": "Call Me Today"},
    "AlbumTitle": {"S": "Greatest Hits"}
}

With the Ruby SDK though, you simply assign the values and the SDK infers the type from the values.

Type Matching

Generally, you can store any value for any field on per-item level. However, there is one example where the type must match. An error will be raised from the AWS DynamoDB API if you try to save the wrong type for the partition_key and sort_key. They must match with the attribute_type. An example is provided in Saving. This type enforcement also applies for indexes.