我正在寻找在django应用程序中跟踪事件的方法(事件通常是与特定的唯一用户id相关的点击)。
这些事件本质上包含一个类似" click“的事件类型,然后每个click事件都会被分配给一个唯一的id (许多事件可以使用一个id),并且每个事件都会有一个数据集,其中包括referrer等项目。
我已经尝试过mixpanel,但现在他们提供的数据api似乎太有限了,因为我似乎找不到一种方法来通过一个唯一的id (除了事件本身)来获取我所有的数据。
我正在考虑使用django-eventracker,但也很好奇是否有人想过最好的办法。mongo或CouchDb似乎是一个很好的选择,但芹菜/rabbitmq看起来与Mongo非常吸引人。在这一点上,将这些事件注入到现有应用db中似乎是有限的。
无论如何,这只是一个线索,看看其他人对此有什么想法,以及他们是如何实现这样的东西的……
拍摄
发布于 2010-07-16 16:50:18
如果我从头开始设计,我将有一个简单的JS收集有关点击的信息,并通过Ajax (使用您已经使用的任何JS框架)将其发送回服务器,而在服务器端,我只需将该信息附加到一个日志文件中,以便稍后进行“脱机”处理--因此,本质上这将独立于django或其他服务器端框架。
添加到日志文件是一个非常轻量级的操作,而web使用的数据库通常是针对读密集型(而不是写密集型)操作进行优化的,所以我同意您的观点,强制将信息(当它慢慢进入)放入现有应用的DB中不太可能提供良好的性能。
发布于 2010-07-16 19:17:43
您可能希望为日志保留一种灵活的格式,以预测未来的需求或更改。从这个意义上说,无模式的面向文档的数据库很好。一个优点是,无论您稍后执行什么分析,您的数据结构都将接近您的应用程序的需求(因此,避免了一些不可避免的解析/数据转换工作)。
如果你正在考虑使用mysql,postgresql或类似的东西,那么你应该考虑像rsyslog这样的东西来缓冲写操作,避免繁重的日志记录带来的性能损失。(我不能说太多关于芹菜和这类东西的其他排队机制,但它们听起来很有希望。)
Mongodb有一些很好的特性,可以让它适应日志记录,比如capped collections。摘要可以在this post中找到。
发布于 2010-07-16 17:30:35
如果单击是指单击加载新页面(或执行AJAX请求)的链接,那么您的目标相当简单。Web服务器倾向于保存有关请求的纯文本日志--包括用户、时间/日期、推荐人、请求的页面等信息。您可以检查这些日志并挖掘所需的统计信息。
另一方面,如果你有一个点击不一定会产生服务器请求的web应用程序,那么用javascript收集点击信息是你最好的选择。
https://stackoverflow.com/questions/3267081
复制相似问题