Amazon dynamodb 用于引用数据的DynamoDB模式

Amazon dynamodb 用于引用数据的DynamoDB模式,amazon-dynamodb,elastic-map-reduce,Amazon Dynamodb,Elastic Map Reduce,我想试用DynamoDB并将其用于access.logs,由nginx生成,稍后将用于报告仪表板,其中包括IP、引用url、引用域、浏览器等 初始设置将是运行nginx和CloudWatch的EC2实例,它们将使用nginx实例的access.log 其思想是CloudWatch条目将触发lambda函数,该函数将解析日志并将其放入DynamoDB 除了我所读到的以外,我对DynamoDB不太熟悉,但下面是我如何考虑为其创建模式: ID将是nginx命中的url,这是我们将要报告的内容 参考域(

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

初始设置将是运行nginx和CloudWatch的EC2实例,它们将使用nginx实例的access.log

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

除了我所读到的以外,我对DynamoDB不太熟悉,但下面是我如何考虑为其创建模式:

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

参考域(表)

  • 身份证(钥匙)
  • 域名
  • 已创建(范围)
参考URL(表)

  • 身份证(钥匙)
  • 网址
  • 已创建(范围)
参考浏览器(表格)

  • 身份证(钥匙)
  • 浏览器
  • 已创建(范围)
对于正在报告的其他项目,如IP或地理信息(ReferralCity、ReferralCountry等),这将继续进行

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


对于这种类型的数据,Dynamo是否有更好的模式可供使用,或者是否有其他需要考虑的因素?谢谢

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

如果我正确理解nginx/您的用例,我不确定您为什么要基于属性拆分表

您可以有一张桌子:

链接(表)

  • ID(主哈希键)
  • 已创建(主范围键)
  • referralUrl(S属性)
  • 引用域(S属性)
  • referralBrowser(S属性)

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

我们在这里讨论的URL有多少?(对于散列主键部分)数百万,对于nginxI应该添加的图像,我不一定要将实际URL作为ID,但可能会创建URL(md5)的散列,相当于nginx中的一个条目?每个请求都将在一个“行”中表示?创建的是一个日期,它仅表示图像的服务时间。基本上,这是将nginx access.log映射到可以查询报告的dynamo。基于此设计示例,访问日志中的每个变量(用户代理、ip、引用域等)都将是此处一行中的一个值。