Big Data, Prof. Torlone a.a. 2013-2014 Davide Feltoni Gurini CEO & Co-Founder [email protected] Summary • Datalytics: Chi siamo • MongoDB: perché • MongoDB: esempio architettura • MongoDB: vantaggi e svantaggi dell’approccio What we do? Brand Reputation What we do? Event Monitoring How we do? Artificial Intelligence Products Dashboard SaaS Products Widget aggiornati real-time MongoDB Perché MongoDB Perché 1. NoSQL 2.Ottimizzato per dati JSON (Twitter e Social) 3. Semplice da configurare: Primary e Replica set e scalabile orizzontalmente: sharding. 4. Inserimento dati efficace per read rapide da frontend per analitiche real-time. Architecture WebService Crawler Crawler Dashboard Analyzer Client Analyzer Caso D’uso 1: Analisi Volumetrica Datalytics Dashboard Caso D’uso 1: Analisi Volumetrica Analitiche su time-series Caso D’uso 1: Analisi Volumetrica Analitiche su time-series Pre-aggregazione dei dati 1 documento per giorno per tipo di analisi: 1 doc per settimana 1 doc per mese Si può aumentare granularità: 1 doc per ora, etc.. Caso D’uso 1: Analisi Volumetrica Caso D’uso 1: Analisi Volumetrica Update db.daily_analysis_531612369750dc242cc0f243.findAndModify(! {"_id" : "10-03-2014/metric-1/entity-1/keywordMonitoring”}, ! {"$inc" : { "minute.14.15" : 1, "daily" : 1}}! ,false) Caso D’uso 2: Top Contributors Pre-aggregazione dei dati: CHIAVE-VALORE. Aggregato per giorno, oppure per un doc per ogni ora a seconda delle esigenze Caso D’uso 2: Top Contributors Pre-aggregazione dei dati: CHIAVE-VALORE. Aggregato per giorno, oppure per un doc per ogni ora a seconda delle esigenze Caso D’uso 2: Top Contributors Insert: caso base findAndModify(query, update, upsert) Caso D’uso 2: Top Contributors Insert: caso base findAndModify(query, update, upsert) query: controlla se in daily.key non esiste quel ID { "_id" : "13-5-2014/metric-6/entity-0/keywordMonitoring" , "daily.key" : { "$ne" : “ID”}}, Caso D’uso 2: Top Contributors Insert: caso base findAndModify(query, update, upsert) query: controlla se in daily.key non esiste quel ID { "_id" : "13-5-2014/metric-6/entity-0/keywordMonitoring" , "daily.key" : { "$ne" : “ID”}}, update: push nell’array il valore iniziale 1 { "$push" : { "daily" : { "key" : "ID" , "value" : 1}}} Caso D’uso 2: Top Contributors Insert: caso generico findAndModify(query, update, upsert) Caso D’uso 2: Top Contributors Insert: caso generico findAndModify(query, update, upsert) query: la push del caso precedente riporta una eccezione quindi Key già esistente Caso D’uso 2: Top Contributors Insert: caso generico come facciamo a fare una increment su un elemento dell’array che non conosciamo?? findAndModify (query,update) Caso D’uso 2: Top Contributors Insert: caso generico come facciamo a fare una increment su un elemento dell’array che non conosciamo?? findAndModify (query,update) query: { "_id" : “13-5-2014/metric-5/entity-2/", "daily.key" : "ID"} Caso D’uso 2: Top Contributors Insert: caso generico come facciamo a fare una increment su un elemento dell’array che non conosciamo?? findAndModify (query,update) query: { "_id" : “13-5-2014/metric-5/entity-2/", "daily.key" : "ID"} update { "$inc" : { "daily.$.value" : 1}} l’operatore $ dopo la query ci riporta la posizione dell’elemento con chiave ID Caso D’uso 2: Top Contributors find Top Contributors: frontend query db.daily_analysis_53523218e4b0e700f3b12942.aggregate( { "$match" : { "_id" : "13-5-2014/metric-6/entity-0/keywordMonitoring"}} , { "$unwind" : "$daily"} , { "$sort" : { "daily.value" : -1}} , { "$project" : { "key" : "$daily.key" , "tweet" : "$daily.value"}} , { "$limit" : 10} ) Vantaggi Query Dinamiche: permettere ai clienti di analizzare i dati nel dettaglio Query veloci da frontend (in proporzione la velocità delle read aumenta molto) Minimizzare delay tra dato acquisito e dato visibile dal cliente Svantaggi Write Lock su collezioni: risolto dalla 2.8 Write annidate più lente: aumento in velocità delle read in proporzione è maggiore Contacts Davide Feltoni Gurini CEO davidefeltoni [email protected] twitter.com/datalyticsIT facebook.com/datalyticsIT plus.google.com/+DatalyticsIt/
© Copyright 2024 Paperzz