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!
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
11. •
Small Core, vibrant community
•
Extreme modularity
•
Reimplement everything in Javascript
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
17. 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.
18. 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
20. 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'
25. 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