amazon-dynamodb - Dynamodb 表上的聚合统计信息
问题描述
我有一个 DynamoDB 表,每天接收约 1500 万条浏览记录,例如:
{"domain": "google.com", "url": "https://google.com/search?q=test1", "user_id": 10, "action": "allowed"}
{"domain": "google.com", "url": "https://google.com/search?q=test2", "user_id": 10, "action": "allowed"}
{"domain": "facebook.com", "url": "https://www.facebook.com/feed", "user_id": 10, "action": "blocked"}
个人记录的历史并不那么重要,有一个 30 天的 TTL 来保存它们。我正在努力思考的是聚合 和 的顶级域的最佳allowed
方式blocked
。
如果是每天的基本计数,我可以为一天创建一个唯一的分区键,然后计数和递增:
User-10-Totals, "2019-11-16", { "count": 2 }
但问题是每个域都有自己的计数,每天可能有数千个独特的域以及它们的计数。
我最终希望在可配置的时间段内拥有前 10 个域。
Allowed for the last 30 days:
1. google.com
2. other.com
...
Blocked for the last 30 days:
1. facebook.com
2. other2.com
...
有没有一种很好的方法来存储它而不必在客户端上筛选潜在的数千条记录和组?
解决方案
您是否看过使用全局二级索引进行物化聚合查询
您似乎有一个用于 Streams + lambda 函数的教科书用例来计算和更新聚合计数。
如果我没记错的话,AWS reInvent 视频Amazon DynamoDB 的高级设计模式更详细地介绍了包括“十大”功能在内的一些细节。
推荐阅读
- spring-batch - 使用 KafkaItemReader 从特定日期范围内的 Kafka 主题中获取记录(Spring 批处理作业以读取 kafka 流)
- puppet - puppet master 找不到 configdir,如何解决这个问题?
- python - 如果使用多个路由,则 url_for 将变量映射到 URL 会出现问题
- android - 嵌套滚动视图中的 recyclerview 不是 scolling
- java - http url 的 Http 失败响应:401 Unauthorized
- c# - 套接字在第一次接收后停止
- wordpress - 博客分页未显示在我的自定义模板中
- excel - 如何在 Excel 中提取某些以某个单词开头的字符串,该行包含多个用逗号分隔的字符串?
- ios - 在 iOS 中移除 UISplitViewController 中的 displayModeButton
- javascript - 如何使用“表单数据”上传“八位字节流”CryptoJS-AES 加密 PDF?