node.js e Postgresql

  • 3,005 views
Uploaded on

Introduction to Node.js and how to use it in conjuction with Postgresql

Introduction to Node.js and how to use it in conjuction with Postgresql

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
3,005
On Slideshare
0
From Embeds
0
Number of Embeds
18

Actions

Shares
Downloads
15
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Lavorare con Node.js e PostgreSQL Grenzi Lucio [email_address]
  • 2. Mi presento
    • Lucio Grenzi
    • Sviluppatore Delphi dal 1999
    • Consulente
    • Attualmente sviluppatore Asp.net
    • Postgresql addicted
    • Nonantolando.blogspot.com
    • lucio.grenzi
    • lucio grenzi
  • 3. Agenda
      • Cos' e' Node.js
      • Node.js ed i databases
      • Postgres.js
      • Live Coding
  • 4. Node.js is an event-driven I/O server-side JavaScript environment based on V8. It is intended for writing scalable network programs such as web servers. (Wikipedia)
  • 5. Node.js
      • Creato nel 2009 da Ryan Dahl
      • Sponsorizzato da Joyent
  • 6. Javascript
      • Node.js e' un web server basato su V8
      • Javascript e' single thread
      • Node.js gira in ambienti Unix-like
      • Dalla versione 0.6 gira anche su Windows
      • Libreria con chiamate non bloccanti
  • 7. Node.js performance?
    • Single thread ma consente migliaia di connessioni
    • Processa velocemente le task veloci
    • Non si blocca in attesa delle task lente
    • Prevede strumenti per la gestione di software scalabili in rete
  • 8. Perche usarlo?
    • Esistono web server molto piu' blasonati (Apache Nginix, ecc.)
    • Node.js risponde piu' velocemente rispetto ad Apache
    • Trasfer rate piu' elevato e minori richieste fallite
    • Pero' necessita di piu' memoria
  • 9. Installare Node.js su Ubuntu
    • sudo apt-get install g++ curl libssl-dev apache2-utils
    • wget http://nodejs.org/dist/node -v0.6.2.tar.gz
    • gunzip node-v0.6.2.tar.gz
    • tar -xf node-v0.6.2.tar
    • cd node
    • ./configure
    • make
    • sudo make install
    • node -v
  • 10. Http Server var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello Worldn'); }).listen(8000); $curl localhost:8000 Hello World
  • 11. Async I/O
    • La lettura del file non e' bloccante
    fs.readFile(“file.txt”, "text", function(data) { dosomething(data); }); doSomethingelse(data);
  • 12. Anche se ..
    • Concettualmente semplice, in pratica pessimo
    fs.readFile(“file.txt”, "text", function(data) { dosomething(data); } ); while (true) { // Il processo si blocca }
  • 13. Node.Js npm
    • npm is a package manager for Node.js
    • that is run through the command line and
    • manages dependencies for an application.
    • It is the predominant package manager for Node.js (Wikipedia)
  • 14. Installiamo mpn $ curl http://npmjs.org/install.sh | sudo sh $npm -v $npm search
  • 15. Node.Js npm repository
    • https://github.com/joyent/node/wiki/modules
    • Repository contenente tutti i moduli per Node.js
  • 16. Postgresql vs NoSQL
    • Progetti giovani, non sempre c'è un supporto commerciale
    • Dati risiedono in memoria .. si deve forzare la scrittura
    • Indicizzazione non sempre efficiente
    • Driver verso i linguaggi di programmazione?
  • 17. Postgresql vs NoSQL
    • Crisi per CouchDB ( http://www.internetnews.com/blog/skerner/is-couchdb-in-trouble-.html )
  • 18. &
  • 19. Postgresql e Node.js
    • postgres.js: implementazione in puro JS
    • https://github.com/creationix/postgres-js
    • node.postgres: libq binding o puro JS
    • https://github.com/brianc/node-postgres
    • Installiamo postgres.js:
    Npm install pg
  • 20. postgres.js
    • Postgres.js non usa la libq
    • E' scritto in Javascript, quindi si deve conoscere il linguaggio
    • Un solo comando per volta verso Postgresql
    • Internamente crea una coda di comandi
  • 21. Postgres.js inizializzazione /* setup di Node.js e Postgres.js */ // postgres.js code var sys = require("sys"); var pg = require("./lib/postgres-pure"); var db = new pg.connect("pgsql://test:lucio@localhost:5432/returning_test");
  • 22. Esempio pratico db.prepare("INSERT INTO returning_test (val) VALUES (?) RETURNING id", function (sth) { sth.execute("text value", function(rs) { if (rs === undefined) { console.log("No data in table."); } else { console.log(sys.inspect(rs)); } }); }); // output: $ node demo.js [ { id: 4 } ]
  • 23. Pero' ..
    • Postgresql si basa su request/response in modalita' sincrona
    • Non possiamo bloccare il thread principale di Node.js
  • 24. Quindi?
    • Le richieste verso Postgresql vengono bufferizzate
    • Node.Js non attende le risposte dal database
    • L'utente vede un'applicazione responsiva
  • 25. Risorse
      • www.Nodejs.org
      • https://github.com/creationix/postgres-js
      • www.postgresql.org
  • 26. Q & A
    • ?
  • 27. Grazie
    • http://www.slideshare.net/lucio_grenzi/nodejs-e-postgresql