我有一个每月有 15,000,000 次点击的网络小部件,并且我记录了每个会话。当我想生成报告时,我想知道有多少唯一 IP。在普通的 SQL 中,这很容易,因为我只需执行以下操作:
SELECT COUNT(*) FROM (SELECT DISTINCT IP FROM SESSIONS)
但由于应用程序引擎无法做到这一点,我现在正在研究如何做到这一点的解决方案。它不需要很快。
我正在考虑的一个解决方案是有一个空的唯一 IP 表,然后有一个 MapReduce 作业来遍历所有会话实体,如果实体的 IP 不在表中,我将添加它并将一个添加到计数器。然后我会有另一个 MapReduce 作业来清除表格。这会很疯狂吗?如果是这样,你会怎么做?
谢谢!