Source

dynamodb-mapper / docs / pages / overview.rst

Full commit

Overview of Dynamodb-mapper

Requirements

  • Boto = 2.6.0
  • AWS account

Features

  • Python <--> DynamoDB type mapping
  • dict and lists serialization
  • default values
  • Multi-target transaction support with auto-retry (new in 1.6.0)
  • Sub-transactions (new in 1.6.2)
  • Single object migration engine (new in 1.7.0)
  • Auto-inc hash_key
  • Protection against the 'lost update' syndrom (refactored in 1.7.0)
  • Full low-level chunking abstraction for scan, query and get_batch
  • New table creation
  • Framework agnostic
  • Log all successful database access

Logging

Dynamodb-mapper uses 3 "logging" loggers:

  • model
  • model.database-access
  • transactions

Known limitations

  • Dates nested in a dict or set can not be saved as datetime does not support JSON serialization. (issue #7)

Important performance notice

To avoid superfluous DescribeTable requests, Table objects are cached after their first request. As it removes an extra overhead of ~20ms that was before each requests, it might let you go faster than your provisioned throughput. This will trigger an exponential backoff retry algorithm in Boto. While this algorithm is well done, be informed that the resulting effective throughput will be up to 40% slower than what you could have expected with your configured throughput.

If you ever reach this situation, you have 2 options:

  • either increase (if bandwith allows) your provisioned throughput.
  • either introduce manual, carefully chosen sleeps.

With the second option, I have been able to reach the theoretical throughput on an extremely intensive and non representative benchmark.