我正在为云中托管的应用程序制作审计跟踪。我正在考虑使用DynamoDB创建一个审计跟踪,记录由用户ID和序列ID索引的内容。如果我要在SQL DB上实现它,我会使用一个序列。我使用的一个选项是使用时间戳,但实际上有可能在同一毫秒内发生多个事件。什么是一个很好的解决方案?或者DynamoDB是否是解决此问题的错误工具?
答案 0 :(得分:3)
我觉得DynamoDB很适合时间序列数据。它当然是可能的,当您的应用程序符合散列键/范围键配置时,它可以很好地工作,其中范围键是日期时间或时间戳。在Amazon's example中,这可能是客户的事件,您可以将CustomerID用作哈希键,并仅查询一个客户范围内的事件。不幸的是,查询哈希键(客户)很困难。
此外,DynamoDB项目不会过期,因此您必须以自己的吞吐量费用删除它们,轮换表格或只保留它们。
答案 1 :(得分:0)
我正在考虑同一件事。用户ID可以是分区键。排序键可以是ISO 8601格式的时间戳,精确到毫秒。
由于我的用例具有每个组织的审核记录,因此我实际上将使用组织ID作为分区键。用户ID只是另一个属性。
为确保其唯一性,可以使用写条件。因此,请确保该用户的时间戳不存在。如果出现错误,则必须再次“尝试”。希望不会发生这种情况,但是您需要考虑到这一点。
DynamoDB现在具有TTL(生存时间)。因此,无论需要多长时间,我都会将过期记录添加到审核日志中。