I agree with both Sergiu and Vincent: - it should use the activity stream - in the future the activity stream should use a queue system to write it's data (the stats system already does that) - the stats should be rewritten to aggregate the activity stream
So I have written an Activity Stream patch to record view events. It works pretty well, except that I have the same issue than with the stats with AJAX calls: http://jira.xwiki.org/jira/browse/XWIKI-4590 It would be really great to have this fixed for 2.2.1. For the activity stream patch I would like to propose it for review for 2.2.1 inclusion too. It's not dangerous as it's behind a setting that is off by default. I'll open a jira task soon. Ludovic Le 22/02/10 09:17, Vincent Massol a écrit : > On Feb 22, 2010, at 8:11 AM, Vincent Massol wrote: > > >> On Feb 21, 2010, at 11:18 PM, Ludovic Dubost wrote: >> >> >>> Hi XWiki devs, >>> >>> We have a project where it is needed to show what users has seen which >>> page, in addition to aggregate statistics. >>> >>> Now there are multiple ways to implement this, namely either using the >>> Activity Stream module (which records page level edit activity) or to use >>> the Statistics module (which records aggregate level view activity). >>> >>> Which of the two systems would be best to use ? >>> >> IMO, in some near future the Stats module will be rewritten to use the >> activity stream module and perform computations to store aggregated data. >> > Some more details. I believe we have only 2 genera choices: > 1) Decide to save raw data and then perform any aggregated computations > (allowing OLAP-based queries, business reporting, data mining) > 2) Decide to perform aggregation in memory and only save a few metrics > > Obviously option 1) is much more powerful and from an architectural POV is > the best. > > For option 1) the main issue is write performance. The solution I have put in > place in the past for this kind of architecture is the following: > * Have the application write to a local queue (JMS queue to be standard) > * Have several physical servers poll the queue and get data from it as fast > as they can and then save the data in a database different from the main > application database. Note that the scalability is perfect since servers get > data from the queue as fast as they can process it but not more and you just > need to add more servers to get better throughput (in addition the servers > don't need to be of the same type). > * Have some separate application querying the raw data database and perform > computations on it and store the result in different tables/database. > > The key point for option 1) is to ensure that the performance or your app is > not impacted at all by the storage of the raw events. > > So we'll need to decide if we want option 1 or 2. > > Thanks > -Vincent > > >> -Vincent >> >> >>> In any case, I would like to implement this as a patch to the standard >>> module with a setting to activate it at a Wiki level. >>> >>> My first choice would be to use the Activity Stream module but I see that >>> we have some code to clean-up the activity stream (is it active ?). I don't >>> think I would want this data to be deleted. >>> >>> WDYT ? >>> >>> Ludovic >>> > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > > -- Ludovic Dubost Blog: http://blog.ludovic.org/ XWiki: http://www.xwiki.com Skype: ldubost GTalk: ldubost _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

