Crea il TUO database con LevelDB e Node.js

3,846 views

Published on

Avete mai pensato di scrivere un vostro database? Un Key/Value store, o un database documentale? Oppure un Graph DB? O magari volete un database che si sincronizzi fra Browser e Server in modo trasparente? Nodebase è il movimento che fa per voi!
Un gruppo di mad scientist nella comunità Node.js hanno preso l'ultraveloce LevelDB e hanno sviluppato decine di piccole librerie che consentono di aggiungerci tutte le funzionalità di cui avete bisogno, dalla replicazione all'indicizzazione: stiamo parlando di LevelUp!

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

No Downloads
Views
Total views
3,846
On SlideShare
0
From Embeds
0
Number of Embeds
2,458
Actions
Shares
0
Downloads
14
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Crea il TUO database con LevelDB e Node.js

  1. 1. Problemi con il Database? @matteocollina http://500px.com/photo/27874937
  2. 2. Chiami un consulente? http://500px.com/photo/22823315
  3. 3. Costruisci il TUO database con
  4. 4. Costruisci il TUO database con Level*
  5. 5. * Not a Database Storia
  6. 6. Storia dei DB • 1960s: Dai nastri ai dischi per raggiungere accesso condiviso e interattività • Late 1960s: Navigational Databases, links • Early 1970s: Modello relazionale, content • Late 1970s: SQL • Early 1980s: Un database sul mio Desktop • Late 1980s: Object Oriented Database • 2000s: velocità e scalabilità, NoSQL • Early 2010s: non perdiamo una bella astrazione, NewSQLs
  7. 7. La tirannia delle belle astrazioni
  8. 8. Che cos’è un DB?
  9. 9. Uno strumento per interagire con dati strutturati, all’esterno del core della nostra Applicazione
  10. 10. Core DB features • Persistenza • Prestazione • Semplificazione dell’accesso ai dati complessi
  11. 11. • Small Core, vibrant community • Extreme modularity • Reimplement everything in Javascript
  12. 12. Il Node.js dei DB? • Small Core: LevelUp - http://npm.im/levelup • TUTTO è un modulo, scaricabile da NPM • Sperimentazione di molti aspetti sia della teorica che della pratica dei database e dei sistemi distribuiti • Soluzioni specifiche
  13. 13. http://500px.com/photo/50810860
  14. 14. LevelDB • Open-source, embedded key/value store di Google • Chiavi ordinate • Valori compressi da Snappy • Operazioni basilari: Get(), Put(), Del() • Batch() Atomica • Iterazioni bi-direzionali
  15. 15. LevelDB
  16. 16. LevelUP • Ispirato da LevelDB • Supportato da un a key/value store per dati arbitrari, ordinati per chiave • put(), get(), del() • Scritture atomiche via batch() • ReadStream: l’ingrediente segreto • WriteStream: per comodità • Encoding: UTF-8, HEX, Binary, JSON, Typewise, your encoding.
  17. 17. ReadStream • La primitiva essenziale per tutte le feature più complesse, ad esempio LevelGraph la usa per realizzare i JOIN. • E’ la primitiva fondamentale per accedere ai dati ordinati. • E’ possibile limitare il range tramite start e end
  18. 18. ReadStream db.createReadStream({ start: 'Bol', end: 'Bolxff' }) .on('data', function (entry) { console.log(entry.key) }) ! // → Bologna // → Bolzano
  19. 19. Key Structure • L’ordinamento e il recupero delle chiavi richiede un key design • Le chiavi sono un descrittore gerarchico del contenuto: 'countries~Ireland' 'countries~Italy' ... 'towns~Italy~Bologna' 'towns~Italy~Bolzano' ... 'streets~Italy~Bologna~Via Indipendenza' 'streets~Italy~Bologna~Via Rizzoli'
  20. 20. http://npm.im/levelmeup
  21. 21. levelmeup @ nodeconf.eu
  22. 22. BDFL: @rvagg
  23. 23. Level* Committers
  24. 24. RocksDB • Rilasciato Open Source il 14 Novembre 2013. • Il 14 Novembre 2013 è già disponibile il “driver” per LevelUp, http://npm.im/rocksdb • RocksDB è un fork di LevelDB per gestire terabyte di dati
  25. 25. @matteocollina
  26. 26. LevelGraph
  27. 27. LevelGraph db.join([{ subject: db.v(“a"), predicate: “friend",object: db.v(“x") }, { subject: db.v(“x"), predicate: “friend", object: db.v(“y") }], function(err, results) { // this will print all the 'friend of a friend triples..' });
  28. 28. - Francesco Fullone - Enrico Zimuel - Federico Galassi - Matteo Collina - JavaScript best practices http://www.jsbestpractices.it/
  29. 29. @matteocollina @rvagg

×