Novice, Practiced, Mastered

    dynalite

    3.2.2 • Public • Published

    dynalite

    Build Status

    An implementation of Amazon's DynamoDB built on LevelDB (well, @rvagg's awesome LevelUP to be precise) for fast in-memory or persistent usage.

    This project aims to match the live DynamoDB instances as closely as possible (and is tested against them in various regions), including all limits and error messages.

    What about Amazon's DynamoDB Local?

    This project was created before DynamoDB Local existed, and when it did, it differed a lot from the live instances in ways that caused my company issues. Since then it's had a lot more development and resources thrown at it, and is probably more up-to-date than dynalite is. I'd recommend using it over dynalite if you don't mind the overhead of starting the JVM (or docker) each time. If you need a fast in-memory option that you can start up in milliseconds, then dynalite might be more suitable for you.

    Example

    $ dynalite --help
    
    Usage: dynalite [--port <port>] [--path <path>] [options]
    
    A DynamoDB http server, optionally backed by LevelDB
    
    Options:
    --help                Display this help message and exit
    --port <port>         The port to listen on (default: 4567)
    --path <path>         The path to use for the LevelDB store (in-memory by default)
    --ssl                 Enable SSL for the web server (default: false)
    --createTableMs <ms>  Amount of time tables stay in CREATING state (default: 500)
    --deleteTableMs <ms>  Amount of time tables stay in DELETING state (default: 500)
    --updateTableMs <ms>  Amount of time tables stay in UPDATING state (default: 500)
    --maxItemSizeKb <kb>  Maximum item size (default: 400)
    
    Report bugs at github.com/mhart/dynalite/issues

    Or programmatically:

    // Returns a standard Node.js HTTP server
    var dynalite = require('dynalite')
    var dynaliteServer = dynalite({ path: './mydb', createTableMs: 50 })
    
    // Listen on port 4567
    dynaliteServer.listen(4567, function(err) {
      if (err) throw err
      console.log('Dynalite started on port 4567')
    })

    Once running, here's how you use the AWS SDK to connect (after configuring the SDK):

    var AWS = require('aws-sdk')
    
    var dynamo = new AWS.DynamoDB({ endpoint: 'http://localhost:4567' })
    
    dynamo.listTables(console.log.bind(console))

    Installation

    With npm, to install the CLI:

    npm install -g dynalite

    Or to install for development/testing in your project:

    npm install -D dynalite

    TODO

    • Implement Transactions
    • Implement DynamoDB Streams
    • Implement ReturnItemCollectionMetrics on all remaining endpoints
    • Implement size info for tables and indexes
    • Add ProvisionedThroughput checking
    • See open issues on GitHub for any further TODOs

    Install

    npm i dynalite

    DownloadsWeekly Downloads

    38,823

    Version

    3.2.2

    License

    MIT

    Unpacked Size

    348 kB

    Total Files

    54

    Last publish

    Collaborators

    • hichaelmart