MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Podejścia MongoDB do przechowywania dużych ilości metryk / danych analitycznych

Zaktualizowana odpowiedź

Zhakowane razem w powłoce mongo:

use pagestats;

// a little helper function
var pagePerHour = function(pagename) {
    d = new Date();
    return {
        page : pagename,
        year: d.getUTCFullYear(),
        month: d.getUTCMonth(),
        day : d.getUTCDate(),
        hour: d.getUTCHours(),
    }
}

// a pageview happened
db.pagestats.update(
    pagePerHour('Hello'),
    { $inc : { views : 1 }},
    true ); //we want to upsert

// somebody tweeted our page twice!
db.pagestats.update(
    pagePerHour('Hello'),
    { $inc : { tweets : 2 }},
    true ); //we want to upsert

db.pagestats.find();
// { "_id" : ObjectId("4dafe88a02662f38b4a20193"),
//   "year" : 2011, "day" : 21, "hour" : 8, "month" : 3,
//   "page" : "Hello",
//   "tweets" : 2, "views" : 1 }

// 24 hour summary 'Hello' on 2011-4-21
for(i = 0; i < 24; i++) {
    //careful: days (1-31), month (0-11) and hours (0-23)
    stats = db.pagestats.findOne({ page: 'Hello', year: 2011, month: 3, day : 21, hour : i})
    if(stats) {
        print(i + ': ' + stats.views + ' views')
    } else {
        print(i + ': no hits')
    };
}

W zależności od aspektów, które chcesz śledzić, możesz rozważyć dodanie większej liczby kolekcji (np. kolekcji do śledzenia zorientowanego na użytkownika). Mam nadzieję, że to pomoże.

Zobacz też

Wpis na blogu o danych Analytics



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Aktualizacja/Upsert vs Insert

  2. Czy istnieje możliwość wygenerowania duplikatu Mongo ObjectId w dwóch różnych kolekcjach?

  3. Mongodb $graphWyszukaj hierarchię kompilacji

  4. mongodb nie zapisuje wszystkich danych

  5. różnica między agregacją ($match) a znajdowaniem w MongoDB?