Så BuddyMedia använder en del av detta. The Gilt Groupe har gjort något ganska coolt med Hummingbird (node.js + MongoDB).
Efter att ha arbetat för en stor onlineannonsör inom sociala medier kan jag intyga att realtidsrapportering verkligen är jobbigt. Att försöka "rulla upp" 500 miljoner visningar om dagen är redan en utmaning, men att försöka göra det i realtid fungerade, men det hade några betydande begränsningar. (som att den faktiskt var försenad med 5 minuter :)
Ärligt talat är den här typen av problem en av anledningarna till att jag började använda MongoDB. Och jag är inte den enda. Människor använder MongoDB för alla typer av realtidsanalyser:serverövervakning , centraliserad loggning , såväl som instrumentpanelsrapportering.
Den verkliga nyckeln när du gör den här typen av rapportering är att förstå att datastrukturen är helt annorlunda med MongoDB, du kommer att undvika "aggregering"-frågor, så frågorna och utdatadiagrammen kommer att vara annorlunda. Det finns en del extra kodningsarbete på klientsidan.
Här är nyckeln som kan peka dig i rätt riktning för att göra detta med MongoDB. Ta en titt på följande datastruktur:
{
date: "20110430",
gender: "M",
age: 1, // 1 is probably a bucket
impression_hour: [ 100, 50, ...], // 24 of these
impression_minute: [ 2, 5, 19, 8, ... ], // 1440 of these
clicks_hour: [ 10, 2, ... ],
...
}
Det finns uppenbarligen en del justeringar här, lämpliga index, kanske blanda data+kön+ålder till en _id
. Men det är typ den grundläggande strukturen för klickanalys med MongoDB. Det är väldigt enkelt att uppdatera visningar och klick { $inc : { clicks_hour.0 : 1 } }
. Du får uppdatera hela dokumentet atomärt. Och det är faktiskt ganska naturligt att rapportera om. Du har redan en array som innehåller dina datapunkter på tim- eller minutnivå.
Förhoppningsvis pekar det dig i rätt riktning.