Amazon DynamoDB mock implementation
Project description
ddbmock – a DynamoDB mock implementation.
Presentation
DynamoDB is a minimalistic NoSQL engine provided by Amazon as a part of their AWS product.
DynamoDB allows you to store documents composed of unicode, number or binary data as well are sets. Each tables must define a hash_key and may define a range_key. All other fields are optional.
DynamoDB is really awesome but is terribly slooooow with managment tasks. This makes it completly unusable in test environements
ddbmock brings a nice, tiny, in-memory implementation of DynamoDB along with much better and detailed error messages. Among its niceties, it features a double entry point:
regular network based entry-point with 1:1 correspondance with stock DynamoDB
embeded entry-point with seamless boto intergration 1, ideal to avoid spinning yet another server.
What is/will ddbmock be useful for ?
running unit test FAST. DONE
running functional test FAST. DONE
experiment with DynamoDB API. DONE
plan Throughput usage. WIP (low level foundation done)
plan actual storage space requirements. DONE (describe table returns accurate size !)
perform simulations with accurate limitations. Even some undocumented “features” are accurate :)
Current status
ddbmock is an experimental project and is currently under heavy development. It also may be discontinued at any time.
support full table life-cycle
support full item life-cycle
support for all item limitations
accurate size and date reporting
Query, Scan, BatchGetItem and BatchWriteItem support is preliminary
no limits on concurent table operations
no limits for request/response size nor item count in those
See http://ddbmock.readthedocs.org/en/latest/pages/status.html for detailed up-to-date status.
Example usage
Run as Regular client-server
Ideal for test environment. For stage and production I highly recommend using DynamoDB servers. ddbmock comes with no warranty and will loose your data(tm).
Launch the server
$ pserve development.ini # launch the server on 0.0.0.0:6543
Start the client
import boto from ddbmock import connect_ddbmock # Use the provided helper to connect your *own* endpoint db = connect_ddbmock() # Done ! just use it wherever in your project as usual. db.list_tables() # get list of tables (empty at this stage)
Note: if you do not want to import ddbmock only for the helper, here is a reference implementation:
def connect_ddbmock(host='localhost', port=6543): import boto from boto.regioninfo import RegionInfo endpoint = '{}:{}'.format(host, port) region = RegionInfo(name='ddbmock', endpoint=endpoint) return boto.connect_dynamodb(region=region, port=port, is_secure=False)
Run as a standalone library
Ideal for unit testing or small scale automated functional tests. Nice to play around with boto DynamoDB API too :)
import boto from ddbmock import connect_boto # Wire-up boto and ddbmock together db = connect_boto() # Done ! just use it wherever in your project as usual. db.list_tables() # get list of tables (empty at this stage)
Requirements
Python 2.7.x
Pyramid >= 1.3
Boto >= 2.5.0 (optional)
NO AWS account :)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file ddbmock-0.3.2.tar.gz
.
File metadata
- Download URL: ddbmock-0.3.2.tar.gz
- Upload date:
- Size: 43.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b5cf8ab2a8a570ac30328aef825590e4d1aef8300332bb0fe2647a18046b4d1 |
|
MD5 | d2aaaf8123ee7f9b82573f7818cf3920 |
|
BLAKE2b-256 | 97217768d445ffab6b079116e3d638116849f23f165a8927181a6f1d2a0a444c |