在DynamoDB上管理开发/暂存/生产 - 冲突方法。使用DynamoDB Mapper使用一种方法吗?

时间:2014-11-05 15:39:25

标签: java amazon-dynamodb

这个问题在这里被问到2年:Managing dev/staging/production on DynamoDB? 也在这里:DynamoDB Staging/Production/Development versions

接受的答案是使用合并结算创建单独的帐户。似乎存在冲突的方法。 例如Peter Sankauskas在他的评论中表示,这不再是“标准方式”了。

他的建议是使用: “使用标签和命名约定来分隔登台和制作。”

使用Java SDK DynamoDBMapper时,他的解决方案是否仍然存在,因为表名被植入注释中?

感谢。 (PS:我会添加评论,但我没有声誉。)

2 个答案:

答案 0 :(得分:1)

DynamoDBMapper构造函数采用DynamdbMapperConfig,它可以具有“TableNameOverride”属性。可以将其配置为覆盖带注释的表名。请参阅此答案,了解如何执行此操作 - https://stackoverflow.com/a/25274713

DynamodbMapper API(查询/扫描等)也采用DynamodbMapperConfig对象。即使在操作级别,也可以使用它来覆盖表名。

所以,来找你的问题 - 我认为最好有单独的生产和测试帐户。这是因为如果您因代码中的错误而设法破坏生产表中的数据,除非您有声音备份/恢复机制,否则很难恢复。如果您仍希望进入此路由,则可以根据上面的示例配置基于阶段的表前缀。

答案 1 :(得分:0)

我将解释我们是如何在公司内完成的。

我们所有的DynamoDB表都有一个前缀(dev_TABLES / stage_TABLES / prod_TABLES)

我们有一个DBConstants.java文件,其中包含两组最终字符串。一个用于表名,一个用于PREFIX +" _" + TABLE_NAME。

所有Mapper文件都从DBConstans.ACTUAL_TABLE_NAME

获取该表的名称

我们在调试时在它们之间进行本地切换。

在Jenkins中,我们的Gradle构建知道在编译dev / stage / prod jar之前选择正确的前缀。