Więc BuddyMedia używa niektórych z tego. Grupa Gilt zrobiła coś fajnego z Koliberem (node.js + MongoDB).
Pracując dla dużego reklamodawcy internetowego w przestrzeni Social Media, mogę potwierdzić, że raportowanie w czasie rzeczywistym jest naprawdę uciążliwe. Próba "roll-upu" 500 mln wyświetleń dziennie jest już wyzwaniem, ale próba zrobienia tego w czasie rzeczywistym zadziałała, ale niosła ze sobą pewne istotne ograniczenia. (jakby faktycznie było opóźnione o 5 minut :)
Szczerze mówiąc, tego typu problemy są jednym z powodów, dla których zacząłem korzystać z MongoDB. I nie tylko ja. Ludzie używają MongoDB do wszelkiego rodzaju analiz w czasie rzeczywistym:monitorowanie serwerów , scentralizowane rejestrowanie , a także raportowanie w panelu.
Prawdziwym kluczem do tego typu raportowania jest zrozumienie, że struktura danych jest zupełnie inna w MongoDB, unikniesz zapytań „agregacyjnych”, więc zapytania i wykresy wyjściowe będą się różnić. Po stronie klienta jest trochę dodatkowych prac związanych z kodowaniem.
Oto klucz, który może wskazać ci właściwy kierunek, aby zrobić to z MongoDB. Spójrz na następującą strukturę danych:
{
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, ... ],
...
}
Oczywiście są tu pewne poprawki, odpowiednie indeksy, być może połączenie danych+płeć+wiek w _id
. Ale to jest rodzaj podstawowej struktury analizy kliknięć w MongoDB. Aktualizacja wyświetleń i kliknięć jest naprawdę łatwa { $inc : { clicks_hour.0 : 1 } }
. Możesz zaktualizować cały dokument atomowo. I to całkiem naturalne, żeby o tym opowiadać. Masz już tablicę zawierającą punkty danych na poziomie godzinowym lub minutowym.
Mam nadzieję, że to wskazuje Ci właściwy kierunek.