引用数据的 DynamoDB 架构

DynamoDB schema for referral data

我想试用 DynamoDB 并将其用于由 nginx 生成的 access.logs,稍后将用于报告仪表板,其中包括 IP、推荐 url、推荐域名、浏览器等

初始设置将是 EC2 实例 运行 nginx 和 CloudWatch,它们将为 nginx 实例消耗 access.logs。

这个想法是 CloudWatch 条目将触发 lambda 函数,该函数将解析日志并将其放入 DynamoDB。

除了我读过的内容外,我对 DynamoDB 不太熟悉,但我是这样想的:

ID 将是 nginx 命中的 url,这就是我们要报告的内容。

引用域 (table)

推荐URL (table)

ReferralBrowser (table)

对于正在报告的其他项目,例如 IP 或 GEO 信息(ReferralCity、ReferralCountry 等),这将继续。

对于 Dynamo 中的此类数据,这似乎是一个很好的架构设计?最终,仪表板将针对具有日期范围操作的特定 ID,它将显示 URL、浏览器等的总计(聚合)列表,并实际列出数据。此外,其中一份报告可能列出了带有计数的独特项目。例如,对于 ReferralDomain "Facebook",特定 ID 在日期范围内的计数可能为 550。这可能需要在 EMR 中完成?

对于此类数据,是否有更好的模式可供使用或 Dynamo 应考虑的任何其他注意事项?谢谢

主键看起来很可靠,您的体系结构可以很好地工作和扩展。

如果我正确理解 nginx/你的用例 - 我不确定你为什么要根据属性拆分你的 tables。

你可以拥有一个table:

链接 (table)

  • ID(主哈希键)
  • 已创建(主要范围键)
  • referralUrl(S 属性)
  • referralDomain(S 属性)
  • referralBrowser(S 属性)
  • ...

并且由于 DynamoDB 是无模式的,您可以保留其中的一些。