【发布时间】:2015-11-01 17:43:45
【问题描述】:
我想试用 DynamoDB 并将其用于 nginx 生成的 access.logs,稍后将用于报告仪表板,其中包括 IP、引荐 url、引荐域、浏览器等。
初始设置将是运行 nginx 和 CloudWatch 的 EC2 实例,它将使用 nginx 实例的 access.logs。
这个想法是 CloudWatch 条目将触发一个 lambda 函数,该函数将解析日志并将其放入 DynamoDB。
除了我读过的内容之外,我对 DynamoDB 不太熟悉,但我是这样考虑为此做架构的:
ID 将是 nginx 命中的 url,这是我们将报告的内容。
ReferralDomain(表格)
- ID(密钥)
- 域 (S)
- 已创建(范围)
ReferralURL(表格)
- ID(密钥)
- 网址(S)
- 已创建(范围)
ReferralBrowser(表格)
- ID(密钥)
- 浏览器 (S)
- 已创建(范围)
对于报告的其他项目,例如 IP 或 GEO 信息(ReferralCity、ReferralCountry 等),这将继续。
对于 Dynamo 中的此类数据,这似乎是一个好的架构设计吗?最终,仪表板将用于具有日期范围操作的特定 ID,它将按 URL、浏览器等显示总计(聚合)列表,并实际列出数据。此外,其中一份报告可能列出了带有计数的唯一项目。例如,对于 ReferralDomain,“Facebook”在特定 ID 的日期范围内可能有 550 个计数。这可能需要在 EMR 中完成?
对于此类数据,Dynamo 是否有更好的架构可供使用或任何其他应考虑的因素?谢谢
【问题讨论】:
-
我们在这里讨论了多少个 URL? (对于哈希主键部分)
-
数百万,将用于从 nginx 提供的图像
-
我应该补充一下,我不一定将实际 URL 作为 ID,但可能是 url (md5) 的哈希
-
创建等于 nginx 中的条目?每个请求都将在一个“行”中表示?
-
Created 是一个日期,它只代表图像的投放时间。基本上,这样做是将 nginx access.log 映射到可以查询以进行报告的 dynamo。基于此设计示例,访问日志中的每个变量(用户代理、ip、推荐域等)在此处将是一行中的值。
标签: amazon-dynamodb elastic-map-reduce