BuddyMedia tedy něco z toho používá. Gilt Groupe udělala něco pěkného s Kolibřík (node.js + MongoDB).
Protože jsem pracoval pro velkého online inzerenta v prostoru sociálních médií, mohu potvrdit, že hlášení v reálném čase je opravdu utrpení. Pokus o „srolování“ 500 milionů zobrazení denně je již výzvou, ale pokusit se o to v reálném čase fungovalo, ale neslo to určitá významná omezení. (jako by to bylo ve skutečnosti o 5 minut zpožděno :)
Upřímně řečeno, tento typ problému je jedním z důvodů, proč jsem začal používat MongoDB. A nejsem jediný. Lidé používají MongoDB pro všechny druhy analýz v reálném čase:monitorování serverů , centralizované protokolování a také přehledy na hlavním panelu.
Skutečným klíčem při provádění tohoto typu hlášení je pochopit, že struktura dat je u MongoDB zcela odlišná, vyhnete se „agregačním“ dotazům, takže dotazy a výstupní grafy se budou lišit. Na straně klienta je nějaká další kódovací práce.
Zde je klíč, který vás může nasměrovat správným směrem, jak to udělat s MongoDB. Podívejte se na následující datovou strukturu:
{
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, ... ],
...
}
Zjevně jsou zde nějaké úpravy, vhodné indexy, možná převedení dat+gender+věk do _id
. Ale to je taková základní struktura analýzy kliknutí s MongoDB. Aktualizace zobrazení a kliknutí je opravdu snadné { $inc : { clicks_hour.0 : 1 } }
. Získáte atomickou aktualizaci celého dokumentu. A vlastně je docela přirozené o tom referovat. Již máte své pole obsahující vaše hodinové nebo minutové datové body.
Doufám, že vás to nasměruje správným směrem.