我们计划将DynamoDB用作在AWS中运行的不同应用程序的noSQL数据库,并计划使用AWS Identity and Access Management(IAM)连接到DynamoDB.
通常,您拥有一个AWS账户,并且您可以为每个应用程序创建新用户,并且可以授予他们访问DynamoDB中各自表的权限,以确保他们无法访问/修改其他应用程序数据.
我的问题是,应用程序可以在DynamoDB中使用相同的名称表吗?例如LOG,所以每个应用程序在DynamoDB中都有自己的LOG表,但数据是不是共享的?(我们可以在基于SQL的数据库中通过定义每个应用程序的模式并创建需要访问它的模式的用户来实现这一点)
注意:我们不打算使用不同的DynamoDB区域,并且想知道是否可以使用一个区域?
DynamoDB不提供命名空间级别Database
,Schema
例如常见的SQL RDBMS,例如PostgreSQL,Oracle.
[hostname > ] database > schema > table
使用DynamoDB更像这样
[aws-region > aws-account-id > ] table
因此,您有两种分离访问DynamoDB的应用程序的选择:
1)只需使用表名前缀来分隔特定于应用程序的表和使用IAM,以确保"App A"只能访问它需要访问的表.
优点:
易于使用,只需要分开需要分开的东西
如果需要,可以在应用程序之间共享DynamoDB表
缺点:
结算,报告
要么
2)使用separat AWS账户.
优点:
分离计费,使用统计等
缺点:
可能很烦人管理,例如AWS Console的登录/注销
注意:通常,您不应在应用程序中对DynamoDB表名进行硬编码.使用逻辑表名称到实际表名称的一些映射.例如一些变量tableName_LOG = 'AppA_LOG'
.