Story from the Trenches using
OrientDB as main database
Luigi Dell’Aquila
OrientDB Committer
Responsabile della OrientDB A...
Cosa vi racconto?
• Progetti reali, non PoC, non “teoria”
• No Logo (NDA, sorry…)
• Alcuni buoni motivi per scegliere (o m...
The Big Picture
Il modello dei dati:
• Poche tipologie di dato (~10 entita’)
• Time series
• ~20.000 record BASE (input) p...
The Big Picture
Il processo:
• Caricamento dati di N periodi
• Definizione funzioni di riaggregazione
– Matematiche
– Logi...
The Big Picture
I vincoli:
• Flessibile
– Cambia lo schema
– Cambiano le formule
• Veloce
– Riaggregazione singolo periodo...
Perchè OrientDB?
Perchè OrientDB?
Perché è figo ;-)
Perchè OrientDB?
Il modello dei dati
• Ho record con 1.500 attributi (variabili)!!!
• RDBMS? Una tabella “normale” non reg...
Perchè OrientDB?
Il modello di elaborazione: le formule di
riaggregazione le scrive il Cliente!
• Prima idea: DSL, ma…
– D...
Architettura (v. 1)
Applicazione
Storage
UI Reporting
Dominio (schemaless + metadati)
Framework
Calcolo
Factories, reposit...
Prima sfida: Import
L’import dei dati
• 1 periodo: 500 MB
• In Remote ci mette TROPPO!
File
500
MB
Import
Esiste?
No
Inser...
Soluzione 1
Scrivo una piccola libreria che fa l’import storage level
• Lavoro in Embedded Mode
• direttamente sui Documet...
Soluzione 1
Applicazione
Storage
UI Reporting
Dominio (schemaless + metadati)
Framework
Calcolo
Factories, repositories,
L...
Seconda sfida: JS
L’utente si deve scrivere le funzioni!
• Facile!
• Creo una piccola libreria js per astrarre un
po’ di c...
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...
Terza sfida: Calcolo
NO! BASTA!!!
Troviamo una soluzione
definitiva
Soluzione
Applicazione
Storage
UI Reporting
Dominio (schemaless + metadati)
Framework
Calcolo
Factories, repositories,
Log...
Soluzione
Applicazione
Storage
UI Reporting
Dominio (schemaless + metadati)
Framework
Calcolo
Factories, repositories,
Log...
Terza sfida: Calcolo
• Deploy di un subset dell’applicazione nello
storage
• Questo layer lavorerà in Embedded Mode
• VELO...
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 Mee...
Upcoming SlideShare
Loading in …5
×

OrientDB meetup roma 2014

582 views
487 views

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
582
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
6
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

OrientDB meetup roma 2014

  1. 1. Story from the Trenches using OrientDB as main database Luigi Dell’Aquila OrientDB Committer Responsabile della OrientDB Academy Twitter: @ldellaquila
  2. 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. 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. 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. 5. The Big Picture I vincoli: • Flessibile – Cambia lo schema – Cambiano le formule • Veloce – Riaggregazione singolo periodo in minuti – Report in real time
  6. 6. Perchè OrientDB?
  7. 7. Perchè OrientDB? Perché è figo ;-)
  8. 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. 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. 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. 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. 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. 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. 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!
  15. 15. Seconda sfida: JS
  16. 16. Seconda sfida: JS Naturalmente lo stesso codice viene riutilizzato 1:1 per il calcolo!
  17. 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. 18. Terza sfida: Calcolo NO! BASTA!!! Troviamo una soluzione definitiva
  19. 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. 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. 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.)
  22. 22. Terza sfida: Calcolo orientdb-server-config.xml
  23. 23. Terza sfida: Calcolo
  24. 24. Terza sfida: Calcolo • Lato Application: db.query(“select laMiaFunzione(‘a’, ‘b’)”); Blocking…
  25. 25. Conclusioni
  26. 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

×