Skip to content

Latest commit

 

History

History
155 lines (124 loc) · 3.22 KB

File metadata and controls

155 lines (124 loc) · 3.22 KB

DynamoDB-ItemSizeCalculator

Utility tool to calculate the size of DynamoDB items.

NPM Version Downloads Stats

Utility tool to gain item size information in Bytes for DynamoDB JSON items. This allows us to understand capacity consumption and ensure items are under the 400KB DynamoDB item size limit.

DynamoDB SDKs cater for both DDB-JSON and Native JSON. This package can be used to calculate both. By default, it uses DDB-JSON but you can alter methods to take Native JSON by passing boolean value true as a parameter to the method:

CalculateSize(item, true)

DynamoDB Icon

Installation

OS X & Linux:

npm install ddb-calc --save

Usage example

Require

const CALC = require('ddb-calc')

Sample DynamoDB JSON item

const item = {
        "Id": {
            "N": "101"
        },
        "Title": {
            "S": "Book 101 Title"
        },
        "ISBN": {
            "S": "111-1111111111"
        },
        "Authors": {
            "L": [
                {
                    "S": "Author1"
                }
            ]
        },
        "Price": {
            "N": "2"
        },
        "Dimensions": {
            "S": "8.5 x 11.0 x 0.5"
        },
        "PageCount": {
            "N": "500"
        },
        "InPublication": {
            "BOOL": true
        },
        "ProductCategory": {
            "S": "Book"
        }
    }

Calculate Size

const size = CALC.CalculateSize(item);
{ 
    rcu: 1, 
    wcu: 1, 
    size: 137 // in Bytes
}

Understand if an item is under the 400KB limit

const isValid = CALC.IsUnderLimit(item);

Sample Native JSON item

const item = {
    "Id": 101,
    "Title": "Book 101 Title",
    "ISBN": "111-1111111111",
    "Authors": [
        "Author1"
    ],
    "Price": 2,
    "Dimensions": "8.5 x 11.0 x 0.5",
    "PageCount": 500,
    "InPublication": true,
    "ProductCategory": "Book"
}

Calculate Size

const size =  CALC.CalculateSize(item, true);
{ 
    rcu: 1, 
    wcu: 1, 
    size: 137 // in Bytes
}

Understand if an item is under the 400KB limit

const isValid = CALC.IsUnderLimit(item, true);

Release History

  • 0.0.4
    • Alter: Native JSON now supported by bool value: CalculateSizeJson(item, true)
  • 0.0.3
    • ADD: Added native JSON functions CalculateSizeJson() and IsUnderLimitJson()
  • 0.0.2
    • ADD: Added marshalling capability for native JSON
  • 0.0.1
    • The first proper release
    • ADD: Added isUnderLimit() function
  • 0.0.0
    • Work in progress

Contributing

  1. Fork it (https://github.com/awslabs/amazon-dynamodb-tools/fork)
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Commit your changes (git commit -am 'Add some fooBar')
  4. Push to the branch (git push origin feature/fooBar)
  5. Create a new Pull Request