跳转到主要内容

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 (80.1 kB 查看哈希值)

上传时间

支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面