SlideShare una empresa de Scribd logo
1 de 26
Story from the Trenches using
OrientDB as main database
Luigi Dell’Aquila
OrientDB Committer
Responsabile della OrientDB Academy
Twitter: @ldellaquila
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
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
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
The Big Picture
I vincoli:
• Flessibile
– Cambia lo schema
– Cambiano le formule
• Veloce
– Riaggregazione singolo periodo in minuti
– Report in real time
Perchè OrientDB?
Perchè OrientDB?
Perché è figo ;-)
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…)
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
Architettura (v. 1)
Applicazione
Storage
UI Reporting
Dominio (schemaless + metadati)
Framework
Calcolo
Factories, repositories,
Logica di front-end,
profilatura …
Funzioni JS
Schema dei dati
(metadati)
Remote
Import
Prima sfida: Import
L’import dei dati
• 1 periodo: 500 MB
• In Remote ci mette TROPPO!
File
500
MB
Import
Esiste?
No
Insert into…
File System Application Storage
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
Import
Import
Application Storage
File
500
MB
nomeFile
Soluzione 1
Applicazione
Storage
UI Reporting
Dominio (schemaless + metadati)
Framework
Calcolo
Factories, repositories,
Logica di front-end,
profilatura …
Funzioni JS
Schema dei dati
(metadati)
Remote
Import
½ Import
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!
Seconda sfida: JS
Seconda sfida: JS
Naturalmente lo stesso codice viene
riutilizzato 1:1 per il calcolo!
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
Terza sfida: Calcolo
NO! BASTA!!!
Troviamo una soluzione
definitiva
Soluzione
Applicazione
Storage
UI Reporting
Dominio (schemaless + metadati)
Framework
Calcolo
Factories, repositories,
Logica di front-end,
profilatura …
Funzioni JS
Schema dei dati
(metadati)
Remote
Import
½ Import
Soluzione
Applicazione
Storage
UI Reporting
Dominio (schemaless + metadati)
Framework
Calcolo
Factories, repositories,
Logica di front-end,
profilatura …
Funzioni JS
Schema dei dati
(metadati)
Remote
Import
Dominio (schemaless + metadati)
Framework
Calcolo
Factories, repositories,
Logica di front-end, profilatura …
Import
Funzioni di controllo
importacalcola
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.)
Terza sfida: Calcolo
orientdb-server-config.xml
Terza sfida: Calcolo
Terza sfida: Calcolo
• Lato Application:
db.query(“select laMiaFunzione(‘a’, ‘b’)”);
Blocking…
Conclusioni
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

Más contenido relacionado

Similar a OrientDB meetup roma 2014

Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
DotNetCampus
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015
Codemotion
 

Similar a OrientDB meetup roma 2014 (20)

Thingspeak: integrazione
Thingspeak: integrazioneThingspeak: integrazione
Thingspeak: integrazione
 
iot Saturday 2019 - PoC iot in 1 ora
iot Saturday 2019 - PoC iot in 1 oraiot Saturday 2019 - PoC iot in 1 ora
iot Saturday 2019 - PoC iot in 1 ora
 
PoC IoT in 1 ora
PoC IoT in 1 oraPoC IoT in 1 ora
PoC IoT in 1 ora
 
OrientDB & Big Data
OrientDB & Big DataOrientDB & Big Data
OrientDB & Big Data
 
Tesi Triennale
Tesi TriennaleTesi Triennale
Tesi Triennale
 
MyTask
MyTaskMyTask
MyTask
 
Polyglot Persistence e Big Data: tra innovazione e difficoltà su casi reali -...
Polyglot Persistence e Big Data: tra innovazione e difficoltà su casi reali -...Polyglot Persistence e Big Data: tra innovazione e difficoltà su casi reali -...
Polyglot Persistence e Big Data: tra innovazione e difficoltà su casi reali -...
 
Sencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parteSencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parte
 
Repository pattern
Repository patternRepository pattern
Repository pattern
 
Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)
 
Nudo e crud - a Pimcore aperto
Nudo e crud - a Pimcore apertoNudo e crud - a Pimcore aperto
Nudo e crud - a Pimcore aperto
 
Microsoft Outlook for Domino (IMSMO)
Microsoft Outlook for Domino (IMSMO)Microsoft Outlook for Domino (IMSMO)
Microsoft Outlook for Domino (IMSMO)
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
Code Contracts and Generics: implementing a LINQ-enabled Repository
Code Contracts and Generics: implementing a LINQ-enabled RepositoryCode Contracts and Generics: implementing a LINQ-enabled Repository
Code Contracts and Generics: implementing a LINQ-enabled Repository
 
Data flow
Data flowData flow
Data flow
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015
 
#dd12 Applicazioni a tre voci (Android e Domino)
#dd12 Applicazioni a tre voci (Android e Domino)#dd12 Applicazioni a tre voci (Android e Domino)
#dd12 Applicazioni a tre voci (Android e Domino)
 
Portofino 4: Creare Webapp da Database Esistenti in 30 Secondi
Portofino 4: Creare Webapp da Database Esistenti in 30 SecondiPortofino 4: Creare Webapp da Database Esistenti in 30 Secondi
Portofino 4: Creare Webapp da Database Esistenti in 30 Secondi
 
WeWantWeb - WCF Data Services
WeWantWeb - WCF Data ServicesWeWantWeb - WCF Data Services
WeWantWeb - WCF Data Services
 

Más de Luigi Dell'Aquila

Más de Luigi Dell'Aquila (7)

OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016
 
Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016
Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016
Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016
 
OrientDB - the 2nd generation of (Multi-Model) NoSQL - J On The Beach 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL  - J On The Beach 2016OrientDB - the 2nd generation of (Multi-Model) NoSQL  - J On The Beach 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL - J On The Beach 2016
 
OrientDB - Voxxed Days Berlin 2016
OrientDB - Voxxed Days Berlin 2016OrientDB - Voxxed Days Berlin 2016
OrientDB - Voxxed Days Berlin 2016
 
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Devoxx Belgium 2015
OrientDB - the 2nd generation  of  (Multi-Model) NoSQL - Devoxx Belgium 2015OrientDB - the 2nd generation  of  (Multi-Model) NoSQL - Devoxx Belgium 2015
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Devoxx Belgium 2015
 
OrientDB - the 2nd generation of (Multi-Model) NoSQL
OrientDB - the 2nd generation  of  (Multi-Model) NoSQLOrientDB - the 2nd generation  of  (Multi-Model) NoSQL
OrientDB - the 2nd generation of (Multi-Model) NoSQL
 
Orient DB on the cloud - Cloud Party 2013
Orient DB on the cloud - Cloud Party 2013Orient DB on the cloud - Cloud Party 2013
Orient DB on the cloud - Cloud Party 2013
 

OrientDB meetup roma 2014

  • 1. Story from the Trenches using OrientDB as main database Luigi Dell’Aquila OrientDB Committer Responsabile della OrientDB Academy Twitter: @ldellaquila
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. The Big Picture I vincoli: • Flessibile – Cambia lo schema – Cambiano le formule • Veloce – Riaggregazione singolo periodo in minuti – Report in real time
  • 8. 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…)
  • 9. 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
  • 10. Architettura (v. 1) Applicazione Storage UI Reporting Dominio (schemaless + metadati) Framework Calcolo Factories, repositories, Logica di front-end, profilatura … Funzioni JS Schema dei dati (metadati) Remote Import
  • 11. Prima sfida: Import L’import dei dati • 1 periodo: 500 MB • In Remote ci mette TROPPO! File 500 MB Import Esiste? No Insert into… File System Application Storage
  • 12. 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 Import Import Application Storage File 500 MB nomeFile
  • 13. Soluzione 1 Applicazione Storage UI Reporting Dominio (schemaless + metadati) Framework Calcolo Factories, repositories, Logica di front-end, profilatura … Funzioni JS Schema dei dati (metadati) Remote Import ½ Import
  • 14. 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!
  • 16. Seconda sfida: JS Naturalmente lo stesso codice viene riutilizzato 1:1 per il calcolo!
  • 17. 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
  • 18. Terza sfida: Calcolo NO! BASTA!!! Troviamo una soluzione definitiva
  • 19. Soluzione Applicazione Storage UI Reporting Dominio (schemaless + metadati) Framework Calcolo Factories, repositories, Logica di front-end, profilatura … Funzioni JS Schema dei dati (metadati) Remote Import ½ Import
  • 20. Soluzione Applicazione Storage UI Reporting Dominio (schemaless + metadati) Framework Calcolo Factories, repositories, Logica di front-end, profilatura … Funzioni JS Schema dei dati (metadati) Remote Import Dominio (schemaless + metadati) Framework Calcolo Factories, repositories, Logica di front-end, profilatura … Import Funzioni di controllo importacalcola
  • 21. 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.)
  • 24. Terza sfida: Calcolo • Lato Application: db.query(“select laMiaFunzione(‘a’, ‘b’)”); Blocking…
  • 26. 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