DynamoDB索引和审核日志

时间:2017-04-25 19:08:35

标签: amazon-dynamodb

我想在DynamoDB数据库中存储映射,此映射位于帐户和帐户也可访问的事物列表之间。 (这是一个独立的系统,不处理身份验证,因此我的文档只包含此信息)

示例:

Kasper, have access to Room301 and Room302.
Peter, have access to Room301 and Room303.

示例

{
 account: "Kasper",
 rooms: ["Room301", "Room302"]
}

但我还想存储已完成更改的审核日志。 示例"Admin123 added Room302 to Kasper"

我的想法是将它存储在同一个文档中,因为您始终只希望将此信息与“Kasper”相关联。

一个例子:

{
 account: "Kasper",
 rooms: ["Room301", "Room302"]
 audit: [
  { 
    user: "Admin123",
    log: "Admin123 added Room302"
  }
  { 
    user: "Admin123",
    log: "Admin123 created account Kasper"
  }
 ]
}

但是我们正在讨论将审核日志添加到文档中会使数据库分段并使查找速度变慢。这是对的吗?

偶尔我们需要搜索有权访问给定房间的帐户,例如可以访问Room301的所有帐户。有没有一种方法可以将DynamoDB编入索引,还是这需要我使用RDS解决方案?

1 个答案:

答案 0 :(得分:2)

DynamoDB不支持在ListSet等复杂数据类型上创建索引。在上面的模型中,rooms属性可能已定义为ListSet。因此,无法在rooms属性上定义索引。

如果您可以更改下面提到的数据模型,则可以在room属性上定义 GSI ,并使用查询API 根据{获取帐户{1}}属性。

  

帐户 - 分区键

     

room - 排序键 - 使用room属性作为分区键定义GSI

     

审计 - 非关键属性

room