Linuxday2013

Post on 07-Jul-2015

72 views 0 download

description

Node.js REST interface for MongoDB, we modified mongodb-rest (https://github.com/tdegrunt/mongodb-rest) to manage more operation: counting elements "distinct" operations excel/csv export list of available db collection list of keys of a specific query Multithreading support It's now also possible to search by date range and are managed sort operations.

Transcript of Linuxday2013

Case Study

MongoDB come collettore dilog

Mariano Fiorentino

● - Co fondatore Php User Group Torino

● Responsabile Tecnico su progetti legati . all'automotive per Eng it

Chi Sono

La velocita' in scrittura su mongodb si presta all'utilizzo in un costesto di questo

:tipo

● non viene eseguito un controllo di consistenza in fase di scrittura

● l'affidabilità dei dati è data dalla rindondanza dei server

MongoDB per collezionare log?

Una delle caratteristiche delle web application moderne e' di produrre un

. grande quantitativo di log :In un lamp stack classico abbiamo

● ( , )Apache error_log access_log● ( )Php php_errors● Le applicazioni

Contesto applicativo

Contesto applicativo

Contesto applicativo

● E' evidente che in un sistema di questo tipo centralizzare le informazioni è la

chiave per avere un accesso rapido ai dati in fase di troubleshotting

● Individuare uno strumento compatibile con gli standard di un LAMP Stack

Fluentd

’ Nell ambito delle soluzioni ri open di log, ( :// . /) collector fluentd http fluentd org è un

componente compatibile con gli standard dei log di apache e php

● Permette di collezionare molteplici , sorgenti verso una o più destinazioni compresi db non relazionali

● E' possibile scrivere plugin personalizzati

Architettura dellasoluzione

Cosa succede suMongoDB?

<source> type tail format apache2 path /var/log/apache2/access_log pos_file /var/log/td-agent/access_log.pos tag mongo.apache.access</source>

Le collezioni su vengono automaticamente in :base alla configurazione

Rendere i datidisponibi l i

● Si e' scelto di separare lo strato di , accessibilita' ai dati su MongoDB resi

, disponibili tramite rest service dalla webapp vera e propria che e' stata sviluppata in solo javascript

● In questo modo i dati eventualmente “ ” possono essere importati da server terzi

.per ulteriori analisi e operazioni

E' un framework event-driven per il motore Javascript V8, su piattaforme UNIX like.

Si tratta quindi di un framework relativo all'utilizzo server-side di Javascript

.Node js

● Driver nativi verso MongoDB● Librerie che facilitano la creazione diservizi

● Open Source● Una REST interface su MongoDB in

alpha● Ci ha permesso di lavorare su uno stack

completamente JavaScript

Un REST Service .con Node js

JavaScript Stack

AMID : - abbiamo forkato mongodb rest per : gestire un numbero maggiore di operazioni

● / / count distinct sort sulle collezioni● / excel csv export● lista delle db collection● -supporto al multi threads● ricerca per data

. Another js Mongo Internet Driver

Ritorna i documenti che soddisfano la condizione “ ” :specificata da query ordinati in modo ascendente

GET / /db collection?={“ ”: }& =[{" ": ," ":" "}]query isDone false sort property null direction ASC

:Lista delle collezioni disponibi l i sul db specificato

GET /db

:Ritorna il documento con id specificato

GET / / /db collection id

. Another js Mongo Internet Driver

:Conta gli elementi

GET / /db collection =% % % % %?query 7B 22isDone 22 3A 20false% & = 7D operation count

: Export in Excel

GET / /db collection?= & =& ={% % :-operation excel query sort 22$natural 22

}& =1 limit 15000

. Another js Mongo Internet Driver

( Inserisce un nuovo documento il JSON è nel POST):Body

POST / /db collection

( ):Aggiorna un documento il JSON è nel POST Body

PUT / / / db collection id

:Cancella un documento dato un id

DELETE / / /db collection id

. Another js Mongo Internet Driver

WebApp in Extjs 4

● Griglia autoconfigurante in base alle chiavi delle collection su MongoDB

● Campi di ricerca in base al tipo dicolonna

– Data– Numero– Stringa

WebApp in Extjs 4

Punti di attenzione

● Corruzione del db su mongo e indici sulle colonne

● .Out of memory Exception su node js● Gestione dei timeout su tutto lo stack

Documentazione

● :// . / -https github com mariano/fiorentino amid

● :// . /http nodejs org● :// . . /http www mongodb org● :// . . /http www sencha com

Domande?

mariano.fiorentino@gmail.com

andreakobal@gmail.com