sql >> Databáze >  >> NoSQL >> MongoDB

Statistiky v reálném čase:MySQL (/Drizzle) nebo MongoDB?

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.



  1. Shoda dvou různých polí v Mongoose, Aggregate?

  2. Extrahování, modelování a změna datového modelu pomocí mongoidu/mongodb

  3. Jak přidat automatický přírůstek do existující kolekce v mongodb/node.js?

  4. Můžete mít oprávnění na úrovni kolekce v MongoDB?