Thu 1500 lacoul_shamod_color

22
NodeJS + NoSQL Shamod Lacoul NoSQLNow 2011

Transcript of Thu 1500 lacoul_shamod_color

Page 1: Thu 1500 lacoul_shamod_color

NodeJS + NoSQL

Shamod Lacoul

NoSQLNow 2011

Page 2: Thu 1500 lacoul_shamod_color

whoami

CEO of Netoprise - we make social B2B Collaboration platform

NodeJS fan

Java coder

BPM integration consultant

Co-organizer of Silicon Valley Semantic Technology meetup

Page 3: Thu 1500 lacoul_shamod_color

NodeJS: Server-side Javascript

Evented I/O framework

V8 javascript by Google

Page 4: Thu 1500 lacoul_shamod_color

Node code

var http = require('http'); 

http.createServer(function (req, res) {  res.sendHeader(200, {'Content-Type': 'text/plain'});  res.sendBody('Hello World!');  res.finish(); }).listen(8000); 

console.log('Listening on port 8000');

Page 5: Thu 1500 lacoul_shamod_color

MVC in NodeJS

ExpressJS - Sinatra-like (in Ruby on Rails) web framework 

Jade - html template 

Page 6: Thu 1500 lacoul_shamod_color

Useful NodeJS Development Packages

Node Package Manager (npm) - package installer

Nodemon - auto-detection node watcher

Node-inspector - browser-based debugger

Vows.js - Behavior-Driven Development (BDD)

Page 7: Thu 1500 lacoul_shamod_color

More useful packages

Backbone.js - provides models, collections and views to Javascript

Underscore.js - utility library to add functional programming to Javascript: "a tie to JQuery's tux"

Socket.io - a package to help make realtime apps

Find more at http://search.npmjs.org/

Page 8: Thu 1500 lacoul_shamod_color

Benefits of NodeJS

Extremely fast

Event-driven

2 years old and already a huge community

Javascript all the way down

Page 9: Thu 1500 lacoul_shamod_color

Pitfalls of Node

Boomerang-shaped code (solution: Step or Flow.js)

Javascript thinking-curve

Page 10: Thu 1500 lacoul_shamod_color

Demo

Page 11: Thu 1500 lacoul_shamod_color

NoSQL

* Document Database

* Key-Value Database

* Columnar Database

* Graph Database

Page 12: Thu 1500 lacoul_shamod_color

Document DB - CouchDB/MongoDB

Page 13: Thu 1500 lacoul_shamod_color

Key-Value Store - Riak/Redis

Page 14: Thu 1500 lacoul_shamod_color

Column Store - Cassandra

Page 15: Thu 1500 lacoul_shamod_color

Graph DB - Neo4J

Page 16: Thu 1500 lacoul_shamod_color

Cradle = CouchDB + NodeJS 

http://cloudhead.io/cradle

Page 17: Thu 1500 lacoul_shamod_color

Mongoose = MongoDB + NodeJS

http://mongoosejs.com/

Page 18: Thu 1500 lacoul_shamod_color

Riak.js = Riak + NodeJS

http://riakjs.org/

Page 19: Thu 1500 lacoul_shamod_color

node_redis = Redis + NodeJS

https://github.com/mranney/node_redis

Page 20: Thu 1500 lacoul_shamod_color

node-cassandra-client = Cassandra + NodeJS

https://github.com/racker/node-cassandra-client

Page 21: Thu 1500 lacoul_shamod_color

node-neo4j = Neo4J + NodeJS

https://github.com/bobby/node-neo4j

Page 22: Thu 1500 lacoul_shamod_color

Questions?

Demo code:

https://github.com/shamod/nosqlnow2011demo

Thank you for listening!