Amazon DynamoDB模拟实现
项目描述
ddbmock – DynamoDB模拟实现。
介绍
DynamoDB 是亚马逊作为其AWS产品的一部分提供的最小化NoSQL引擎。
DynamoDB 允许您存储由Unicode、数字或二进制数据以及集合组成的文档。每个表必须定义一个 hash_key,可以定义一个 range_key。所有其他字段都是可选的。
DynamoDB 确实很棒,但在管理任务方面非常慢。这使得它在测试环境中完全不可用。
ddbmock 提供了一个小巧、内存或 SQLite 实现的 DynamoDB,并附带更详尽的错误信息。在众多优点中,它具有双重入口点
基于常规网络入口点,与库存 DynamoDB 1:1 对应
嵌入入口点,与 boto 的无缝集成 1,非常适合避免再启动另一个服务器。
ddbmock 并不适用于生产环境。它 会丢失 您的数据。已经提醒您了!我目前建议使用“boto 扩展”模式进行单元测试,以及“服务器”模式进行功能测试。
安装
$ pip install ddbmock
开发
$ hg clone ssh://hg@bitbucket.org/Ludia/dynamodb-mock $ pip install nose nosexcover coverage mock webtest boto $ python setup.py develop $ nosetests # --no-skip to run boto integration tests too
ddbmock 不适用于哪些场景?
不要在生产环境中或作为便宜的 DynamoDB 替代品使用。我永远不会强调得足够。
所有精力都集中在简单性/可破解性和模拟质量上。没有其他。
ddbmock 适用于哪些场景?
快速且可靠的单元测试
快速且可靠的函数测试
实验 DynamoDB API。
可靠的吞吐量规划
可靠的磁盘空间规划
几乎任何 DynamoDB 模拟!
ddbmock 还可以将您的数据持久化到 SQLITE。这又开辟了广阔的可能性:)
当前状态
通过所有 boto 集成测试
支持完整表生命周期
支持完整项生命周期
支持所有项限制
精确的大小、吞吐量报告
无并发表操作限制
请求/响应大小以及这些项的数量没有限制
有关详细且最新的状态,请参阅 http://ddbmock.readthedocs.org/en/latest/pages/status.html。
历史
v1.0.0 (*): 完整文档和错误修复
v0.4.1: 模式持久化 + 线程安全,错误修复
v0.4.0: SQLite 后端 + 吞吐量统计 + 重构,更多文档,更多测试
v0.3.2: 支持批处理写入项 + 通过 boto 集成测试
v0.3.1: 项/表大小精确度 + 完整测试覆盖率
v0.3.0: 首次公开发布。完整表生命周期 + 大多数项操作
(?) 表示未来版本。这些只是想法或“想要拥有的”。
示例用法
作为常规客户端-服务器运行
非常适合测试环境。对于预发布和生产,我强烈建议使用 DynamoDB 服务器。ddbmock 不提供任何保修,并且 会 丢失 您的数据(tm)。
启动服务器
$ pserve development.ini # launch the server on 0.0.0.0:6543
启动客户端
import boto from ddbmock import connect_boto_network # Use the provided helper to connect your *own* endpoint db = connect_boto_network() # Done ! just use it wherever in your project as usual. db.list_tables() # get list of tables (empty at this stage)
注意:如果您只想导入 ddbmock 的辅助工具,这里有一个参考实现
def connect_boto_network(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)
作为独立库运行
非常适合单元测试或小规模自动化功能测试。还可以玩 boto DynamoDB API:)
import boto from ddbmock import connect_boto_patch # Wire-up boto and ddbmock together db = connect_boto_patch() # Done ! just use it wherever in your project as usual. db.list_tables() # get list of tables (empty at this stage)
注意,为了清除在 boto.dynamodb.layer1 中进行的修补,您可以调用同一模块中的 clean_boto_patch()。
要求
Python 2.7.x
Pyramid >= 1.3
Boto >= 2.5.0(可选)
无需 AWS 账户:)
项目详情
ddbmock-1.0.3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b2c89c5e220bd50e8469c602c463a3beb74917cc5f5a0c7aa7609429781747c3 |
|
MD5 | 6d47515701ca5801fad2da98e473e882 |
|
BLAKE2b-256 | eef85b44968249b534cbe8d61558491b28b76358e9fcc666b361cc25ab76ce8e |