Така че BuddyMedia използва част от това. Gilt Groupe направи нещо доста страхотно с Hummingbird (node.js + MongoDB).
След като съм работил за голям онлайн рекламодател в пространството на социалните медии, мога да потвърдя, че отчитането в реално време е наистина болка. Опитът да се „съберат“ 500 милиона импресии на ден вече е предизвикателство, но опитът да се направи това в реално време проработи, но имаше някои значителни ограничения. (сякаш всъщност се забави с 5 минути :)
Честно казано, този тип проблем е една от причините да започна да използвам MongoDB. И не съм единственият. Хората използват MongoDB за всякакъв вид анализи в реално време:наблюдение на сървъра , централизирано регистриране , както и отчитане на таблото за управление.
Истинският ключ, когато правите този тип отчитане, е да разберете, че структурата на данните е напълно различна с MongoDB, ще избегнете заявки за „обединяване“, така че заявките и изходните диаграми ще бъдат различни. Има допълнителна работа по кодиране от страна на клиента.
Ето ключът, който може да ви насочи в правилната посока за това с MongoDB. Разгледайте следната структура от данни:
{
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, ... ],
...
}
Очевидно има някои настройки тук, подходящи индекси, може би смесване на данни+пол+възраст в _id
. Но това е нещо като основна структура на анализа на кликванията с MongoDB. Наистина е лесно да актуализирате импресии и кликвания { $inc : { clicks_hour.0 : 1 } }
. Можете да актуализирате целия документ атомарно. И всъщност е доста естествено да се докладва. Вече имате масив, съдържащ вашите точки с данни на ниво час или минута.
Надяваме се, че това ви насочва в правилната посока.