0

我想存储 10 个网站的访问日志,在 DynamoDB 中每月总共接收 1000 万次访问。之后,我想创建一个后端来监控和检测欺诈操作。

DynamoDB 能否处理复杂查询,例如: - 在指定时间间隔内具有 X 跳出率的访问者列表 - 日期/时间和日期/时间之间的热门目的地 URI - 排序和分组依据

4

1 回答 1

1
  • 指定时间间隔内跳出率为 X 的访问者列表

DynamoDb 可以处理大量查询,但需要对您的访问模式进行一些规划。您必须按哈希键查询并按范围键或本地二级索引进行过滤。查询必须包含一个使用熟悉的 >=、BETWEEN、IN 等的比较运算符,并且还将对结果进行排序。如果您需要像 SELECT col1 FROM table1 WHERE condition1 > x AND condition2 > y AND condition3 > z 这样的查询,您不一定会卡住,但您需要计划一下。可以进行这些查询,但可能需要跨多个表顺序查询或将部分查询逻辑嵌入哈希键(例如 hashkey = BOUNCE_RATE:1 或 BOUNCE_RATE:2,...)其中 :N 将是某种有意义的跳出率等级。根据我自己的经验,这一点也不稀奇。

假设跳出率是一个精确的十进制值,您可以将它放在范围键或本地二级索引中,然后需要在哈希键中包含时间间隔。这将需要预先确定时间间隔(因为第一个示例需要预先确定跳出率“层”)。您需要考虑这些类型的权衡。

最后,您可以创建多个表,每个表保存单层跳出率或时间间隔的数据。还有其他基本方法,但值得深思……

于 2013-08-28T03:28:03.807 回答