orientdb meetup roma 2014

26
Story from the Trenches using OrientDB as main database Luigi Dell’Aquila OrientDB Committer Responsabile della OrientDB Academy Twitter: @ldellaquila

Upload: luigi-dellaquila

Post on 10-May-2015

232 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: OrientDB meetup roma 2014

Story from the Trenches using OrientDB as main database

Luigi Dell’AquilaOrientDB CommitterResponsabile della OrientDB AcademyTwitter: @ldellaquila

Page 2: OrientDB meetup roma 2014

Cosa vi racconto?

• Progetti reali, non PoC, non “teoria”• No Logo (NDA, sorry…)• Alcuni buoni motivi per scegliere (o meno)

OrientDB• Il bello dello Schema(less)• BigData == tanti calcoli• Mixare i layer applicativi• Quando la logica la scrive il Cliente

Page 3: OrientDB meetup roma 2014

The Big Picture

Il modello dei dati:• Poche tipologie di dato (~10 entita’)• Time series• ~20.000 record BASE (input) per singolo

periodo• Ogni record ha in media 1.500 attributi su

>50.000 possibili• Da questi discendono le altre entita’, che

sono riaggregazioni dei dati secondo logiche CUSTOM

Page 4: OrientDB meetup roma 2014

The Big Picture

Il processo:• Caricamento dati di N periodi• Definizione funzioni di riaggregazione– Matematiche– Logiche– Lookup– …

• Riaggregazione dei dati in base a tali funzioni• Reportistica dinamica su singolo periodo o su

time series

Page 5: OrientDB meetup roma 2014

The Big Picture

I vincoli:• Flessibile– Cambia lo schema– Cambiano le formule

• Veloce– Riaggregazione singolo periodo in minuti– Report in real time

Page 6: OrientDB meetup roma 2014

Perchè OrientDB?

Page 7: OrientDB meetup roma 2014

Perchè OrientDB?

Perché è figo ;-)

Page 8: OrientDB meetup roma 2014

Perchè OrientDB?

Il modello dei dati

• Ho record con 1.500 attributi (variabili)!!!• RDBMS? Una tabella “normale” non regge:

tabella chiave-valore• Key/Value store? La località dei dati…• Document – Schemaless!• (Column based? Forse…)

Page 9: OrientDB meetup roma 2014

Perchè OrientDB?

Il modello di elaborazione: le formule di riaggregazione le scrive il Cliente!• Prima idea: DSL, ma…

– Doppio lavoro per me– Doppio lavoro per il cliente

• Javascript!– Non devo “inventare” un linguaggio– Orient lo esegue nativamente– Lo posso eseguire

• Sull’application layer• Nel DB

– Il cliente trova tutta la documentazione che vuole - casualmente (?) già lo conosce

Page 10: OrientDB meetup roma 2014

Architettura (v. 1)

Applicazione

Storage

UI Reporting

Dominio (schemaless + metadati)

FrameworkCalcolo

Factories, repositories,Logica di front-end,

profilatura …

Funzioni JS

Schema dei dati (metadati)

Remote

Import

Page 11: OrientDB meetup roma 2014

Prima sfida: Import

L’import dei dati• 1 periodo: 500 MB• In Remote ci mette TROPPO!

File500MB

Import

Esiste?

No

Insert into…

File System Application Storage

Page 12: OrientDB meetup roma 2014

Soluzione 1

Scrivo una piccola libreria che fa l’import storage level• Lavoro in Embedded Mode• direttamente sui Documetn• Rinuncio alla logica applicativa “di contorno”• Tempi 1:5

ImportImport

Application Storage

File500MB

nomeFile

Page 13: OrientDB meetup roma 2014

Soluzione 1

Applicazione

Storage

UI Reporting

Dominio (schemaless + metadati)

FrameworkCalcolo

Factories, repositories,Logica di front-end,

profilatura …

Funzioni JS

Schema dei dati (metadati)

Remote

Import

½ Import

Page 14: OrientDB meetup roma 2014

Seconda sfida: JS

L’utente si deve scrivere le funzioni!• Facile! • Creo una piccola libreria js per astrarre un

po’ di concetti di dominio• Sviluppo una maschera (simile a Studio) in

cui il cliente scrive il codice (CodeMirror) e lo TESTA!

Page 15: OrientDB meetup roma 2014

Seconda sfida: JS

Page 16: OrientDB meetup roma 2014

Seconda sfida: JS

Naturalmente lo stesso codice viene riutilizzato 1:1 per il calcolo!

Page 17: OrientDB meetup roma 2014

Terza sfida: Calcolo

L’import dei dati• In Remote ci mette TROPPO!• Mi scrivo un ½ calcolo sullo storage?

Calcolo

Select…

Data

Update…

User Application Storage

Page 18: OrientDB meetup roma 2014

Terza sfida: Calcolo

NO! BASTA!!!Troviamo una soluzione

definitiva

Page 19: OrientDB meetup roma 2014

Soluzione

Applicazione

Storage

UI Reporting

Dominio (schemaless + metadati)

FrameworkCalcolo

Factories, repositories,Logica di front-end,

profilatura …

Funzioni JS

Schema dei dati (metadati)

Remote

Import

½ Import

Page 20: OrientDB meetup roma 2014

Soluzione

Applicazione

Storage

UI Reporting

Dominio (schemaless + metadati)

FrameworkCalcolo

Factories, repositories,Logica di front-end,

profilatura …

Funzioni JS

Schema dei dati (metadati)

Remote

Import

Dominio (schemaless + metadati)

FrameworkCalcolo

Factories, repositories,Logica di front-end, profilatura …

Import

Funzioni di controllo

importacalcola

Page 21: OrientDB meetup roma 2014

Terza sfida: Calcolo

• Deploy di un subset dell’applicazione nello storage

• Questo layer lavorerà in Embedded Mode• VELOCE!• Riutilizzo TUTTO il lavoro fatto (factories,

repositories, application logic, controlli vari)• Posso scegliere a RUN TIME dove eseguire ogni

singola operazione• Devo creare uno strato di funzioni di controllo

per lanciare le funzionalità server-side e ottenere i risultati (functions, ma volendo WS, RPC ecc.)

Page 22: OrientDB meetup roma 2014

Terza sfida: Calcolo

orientdb-server-config.xml

Page 23: OrientDB meetup roma 2014

Terza sfida: Calcolo

Page 24: OrientDB meetup roma 2014

Terza sfida: Calcolo

• Lato Application:

db.query(“select laMiaFunzione(‘a’, ‘b’)”);

Blocking…

Page 25: OrientDB meetup roma 2014

Conclusioni

Page 26: OrientDB meetup roma 2014

OrientDB Academy

Corsi e Certificazioni

http://www.orientechnologies.com/training

Sconto del 30% per i partecipanti al Meetup sul corso OrientDB Master Developer di giugno

Codice OrientDBSuperDiscount30