SlideShare a Scribd company logo
Introduction to
M. Khurrum Qureshi
Sr. Software Engineer
Node’s Goal is to provide an
easy way to build scalable
network programs.
Node.js is NOT another
web framework!
But you can create a web framework using NPM modules.
Node.js is…
Web Server
TCP Server
Awesome Robot Controller
Command Line Application
Proxy Server
Streaming Server
VoiceMail Server
Music Machine
Anything that has to deal with high I/O
Node.js is
Server Side JavaScript!
Node.js is
FUN!
Why Node.js?
• Non Blocking I/O
• Based on Chrome’s V8 Engines (FAST!)
• 15,000+ Modules
• Active Community (IRC, Mailing Lists, Twitter,
Github)
• Mac, Linux and Windows (all first class citizens)
• One Language for Frontend and Backend
• JavaScript is the Language of the Web
Node.js Good Use Cases
• JSON APIs
Building light-weight REST / JSON api's is something where node.js
really shines. Its non-blocking I/O model combined with JavaScript
make it a great choice for wrapping other data sources such as
databases or web services and exposing them via a JSON interface.
• Single Page Apps
If you are planning to write an AJAX heavy single page app (think
gmail), node.js is a great fit as well. The ability to process many
requests / seconds with low response times, as well as sharing things
like validation code between the client and server make it a great
choice for modern web applications that do lots of processing on the
client.
Node.js Good Use Cases
• Shelling out to Unix Tools
With node.js still being young, it's tempting to re-invent all kinds of
software for it. However, an even better approach is tapping into the
vast universe of existing command line tools. Node's ability to spawn
thousands of child processes and treating their outputs as a stream
makes it an ideal choice for those seeking to leverage existing
software.
• Streaming Data
Traditional web stacks often treat http requests and responses as
atomic events. However, the truth is that they are streams, and many
cool node.js applications can be built to take advantage of this fact.
One great example is parsing file uploads in real time, as well as
building proxies between different data layers.
Node.js Good Use Cases
• Soft Real Time Applications
Another great aspect of node.js is the ease at which you can develop
soft real time systems. By that I mean stuff like twitter, chat software,
sport bets or interfaces to instant messaging networks.
Basic HTTP Server
var http = require('http');
var server = http.createServer(function (req, res) {
res.writeHead(200);
res.end('Hello World');
});
server.listen(4000);
Some people use the
core http module to
build their web apps,
most use a framework
like Express
or Connect or Flatiron or Tako or Derby or Geddy or Mojito or …
Visit
http://expressjs.com/guide.html
for a detailed guide
on using Express
What is Non-Blocking I/O?
And why should I care?
Blocking I/
270ms = SUM(user, activities, leaderboard)
// Get User – 20ms
$query = 'SELECT * FROM users WHERE id = ?';
$users = query($query, array($id));
print_r($users);
// Get Activities – 100ms
$query = 'SELECT * FROM activities ORDER BY timestamp LIMIT 50';
$activities = query($query);
print_r($activities);
// Get Leader Board – 150ms
$query = 'SELECT count(points) as total, user_id FROM activities LIMIT 50';
$leader_board = query($query);
Non-Blocking I/
150ms = MAX(user, activities, leaderboard)
// Get User – 20ms
var query = 'SELECT * FROM users WHERE id = ?';
db.query(query, [userId], function (err, results) {
console.log(results);
});
// Get Activities – 100ms
var query = 'SELECT * FROM activities ORDER BY timestamp LIMIT 50';
db.query(query, function (err, results) {
console.log(results);
});
// Get Leader Board – 150ms
var query = 'SELECT count(points) as total, user_id FROM activities LIMIT 50';
db.query(query, function (err, results) {
console.log(results);
});
The most jarring thing
about Server Side JavaScript
is thinking in callbacks
The Node Callback Pattern
awesomeFunction(arg, function (err, data) {
if (err) {
// Handle Error
}
// Do something awesome with results.
});
• Error first then success… ALWAYS!
• Because this is the de-facto standard 99.99999% of the time
you will be able to guess how a Node library will work.
Callbacks are the Devil’s Work!
Don’t go down this rabbit hole…
One of the biggest mistakes is to get yourself in
to callback hell by nesting callbacks inside of
callbacks inside of more callbacks.
var userQuery = 'SELECT * FROM users WHERE id = ?';
var activityQuery = 'SELECT * FROM activities ORDER BY timestamp LIMIT 50';
var leaderBoardQuery = 'SELECT count(points) as total, user_id FROM activities LIMIT 50';
db.query(userQuery, [id], function (userErr, userResults) {
db.query(activityQuery, function (activityErr, activityResults) {
db.query(leaderBoardQuery, function (leaderBoardErr, leaderBoardResults) {
// Do something here
});
});
});
Avoiding Callback Hell
• Keep your code shallow
• Break up your code into small chunks
• Use a sequential library like async
• Visit http://callbackhell.com
Async to the rescue!
var async = require('async');
var db = require(’db');
function getUser (callback) {
var query = 'SELECT * FROM users WHERE id = ?';
db.query(query, [userId], callback);
}
function getActivities (callback) {
var query = 'SELECT * FROM activities ORDER BY timestamp LIMIT 50';
db.query(query, callback);
}
function getLeaderBoard (callback) {
var query = 'SELECT count(points) as total, user_id FROM activities LIMIT 50';
db.query(query, callback);
}
var tasks = [getUser, getActivities, getLeaderBoard];
async.parallel(tasks, function (err, results) {
var user = results[0];
var activities = results[1];
var leaderBoard = results[2];
});
Visit
https://github.com/caolan/async
for a detailed guide on using the async module.
Async provides several useful
patterns for asynchronous control
flow including: parallel, series,
waterfall, auto and queue.
The Node Package Manager
otherwise know as… NPM
It’s how you harness the
awesomeness of the
Node.js community!
Using NPM
It’s standard practice to install modules locally for your current project.
Modules are installed in the ./node_modules in the current directory.
To Install a new module
npm install <module>
To find a module in the NPM repository
npm search <search string>
To list the modules (and their dependencies) in the current project
npm list
To see module details
npm info <module>
DON’T INSTALL
MODULES GLOBALLY!
Unless they are tools like node-dev, jake, express, minify-js
OR linked development modules but more on that later.
NPM is awesome sauce!
Visit
https://npmjs.org
for more details about NPM and to
browse the current NPM Repository
Node.js Modules
• async
• connect
• express
• mongodb-
native-driver
• request
• apn
• ql.io-engine
• pem
• winston
• winston-
mongodb
Node.js Modules
• node-sql
• nodemailer
• connect-http-
signature
• http-signature
• underscore
• file-utils
• validator
• mongoskin
• passport.Js
• yql
Node.js Modules
• node-gcm
• forever
• mongodb_s3_b
ackup
• nconf
• node-sqlserver
• Socket-io
• generic-pool
• And many
others
Deployment Platforms
• Amazon EC2
• Windows Azure
• Heroku
• Joynet
• Nodejistu
Questions?
Introduction to
NoSql
• Non-Relational
• Horizontally Scalable
• Distributed
• Schema-Free
• Open-Source
• Replication Support
• Simple API
NoSql Flavours
• Key-value Store.
• Graph
• Big Table
• Document Store
mongoDB Overview
• Document Database
– Documents (objects) map nicely to programming language data types.
– Embedded documents and arrays reduce need for joins.
– Dynamic schema
• High Performance
– Embedding makes reads and writes fast.
– Indexes can include keys from embedded documents and arrays.
– Optional streaming writes (no acknowledgments).
• High Availability
– Replicated servers with automatic master failover.
mongoDB Overview
• Easy Scalability
– Automatic sharding distributes collection data across machines.
mongoDB Data Model
• MongoDB instance hosts a number of databases.
• A database holds a set of collections.
• A collection holds a set of documents.
• A document is a set of key-value pairs.
• Documents have dynamic schema.
Document Structure
• Data is stored in the form of JSON data.(Which
internally stored as BSON)
{
"_id" : ObjectId("4ccbfc75bd163019417c27f8"),
"title": “Hello World! ",
"author": {
"firstname": "Joe",
"lastname": "Bloggs"
},
"tags": ["test", "foo", "bar"]
}
Key mongoDB Features
• Flexibility
• Power
• Speed/Scaling
• Ease of use
Questions?

More Related Content

PDF
Introduction to nodejs
James Carr
 
PPTX
Introduction to Node.js
Winston Hsieh
 
PDF
NodeJS for Beginner
Apaichon Punopas
 
PPT
RESTful API In Node Js using Express
Jeetendra singh
 
PPTX
A slightly advanced introduction to node.js
Sudar Muthu
 
PDF
Node ppt
Tamil Selvan R S
 
PPTX
Introduction to node.js
Arun Kumar Arjunan
 
KEY
A million connections and beyond - Node.js at scale
Tom Croucher
 
Introduction to nodejs
James Carr
 
Introduction to Node.js
Winston Hsieh
 
NodeJS for Beginner
Apaichon Punopas
 
RESTful API In Node Js using Express
Jeetendra singh
 
A slightly advanced introduction to node.js
Sudar Muthu
 
Introduction to node.js
Arun Kumar Arjunan
 
A million connections and beyond - Node.js at scale
Tom Croucher
 

What's hot (20)

PPTX
Introduction to Javascript By Satyen
Satyen Pandya
 
PDF
Node.js Explained
Jeff Kunkle
 
PPT
Node.js an introduction
Meraj Khattak
 
PDF
Nodejs presentation
Arvind Devaraj
 
PPTX
Node.js Patterns for Discerning Developers
cacois
 
PPTX
NodeJS - Server Side JS
Ganesh Kondal
 
PDF
All aboard the NodeJS Express
David Boyer
 
PPTX
Nodejs intro
Ndjido Ardo BAR
 
PDF
NodeJS ecosystem
Yukti Kaura
 
PPT
Node js presentation
martincabrera
 
PPT
Building your first Node app with Connect & Express
Christian Joudrey
 
PPT
Nodejs Event Driven Concurrency for Web Applications
Ganesh Iyer
 
KEY
node.js dao
Vladimir Miguro
 
PDF
Use Node.js to create a REST API
Fabien Vauchelles
 
KEY
Building a real life application in node js
fakedarren
 
PDF
Node Architecture and Getting Started with Express
jguerrero999
 
PDF
NodeJS
LinkMe Srl
 
PPTX
Introduction to Node js
Akshay Mathur
 
PDF
Introduction to Node.js Platform
Naresh Chintalcheru
 
ODP
Asynchronous I/O in NodeJS - new standard or challenges?
Dinh Pham
 
Introduction to Javascript By Satyen
Satyen Pandya
 
Node.js Explained
Jeff Kunkle
 
Node.js an introduction
Meraj Khattak
 
Nodejs presentation
Arvind Devaraj
 
Node.js Patterns for Discerning Developers
cacois
 
NodeJS - Server Side JS
Ganesh Kondal
 
All aboard the NodeJS Express
David Boyer
 
Nodejs intro
Ndjido Ardo BAR
 
NodeJS ecosystem
Yukti Kaura
 
Node js presentation
martincabrera
 
Building your first Node app with Connect & Express
Christian Joudrey
 
Nodejs Event Driven Concurrency for Web Applications
Ganesh Iyer
 
node.js dao
Vladimir Miguro
 
Use Node.js to create a REST API
Fabien Vauchelles
 
Building a real life application in node js
fakedarren
 
Node Architecture and Getting Started with Express
jguerrero999
 
NodeJS
LinkMe Srl
 
Introduction to Node js
Akshay Mathur
 
Introduction to Node.js Platform
Naresh Chintalcheru
 
Asynchronous I/O in NodeJS - new standard or challenges?
Dinh Pham
 
Ad

Viewers also liked (9)

KEY
Node js mongodriver
christkv
 
PPTX
Test Automation using Ruby
Sla Va
 
PDF
EVRYTHNG: Concepts, technologies and applications for connecting physical obj...
EVRYTHNG
 
PDF
5 Years of Web of Things Workshops
Dominique Guinard
 
PDF
Introduction to node js - From "hello world" to deploying on azure
Colin Mackay
 
PDF
Best node js course
bestonlinecoursescoupon
 
PPT
7 Stages of Scaling Web Applications
David Mitzenmacher
 
PDF
Nodejs Explained with Examples
Gabriele Lana
 
Node js mongodriver
christkv
 
Test Automation using Ruby
Sla Va
 
EVRYTHNG: Concepts, technologies and applications for connecting physical obj...
EVRYTHNG
 
5 Years of Web of Things Workshops
Dominique Guinard
 
Introduction to node js - From "hello world" to deploying on azure
Colin Mackay
 
Best node js course
bestonlinecoursescoupon
 
7 Stages of Scaling Web Applications
David Mitzenmacher
 
Nodejs Explained with Examples
Gabriele Lana
 
Ad

Similar to Intro to node and mongodb 1 (20)

PPTX
Intro To Node.js
Chris Cowan
 
KEY
Practical Use of MongoDB for Node.js
async_io
 
PDF
Introduction to REST API with Node.js
Yoann Gotthilf
 
PDF
Node azure
Emanuele DelBono
 
PPTX
Node.js: The What, The How and The When
FITC
 
KEY
Writing robust Node.js applications
Tom Croucher
 
PPTX
introduction to node.js
orkaplan
 
KEY
Introducing the Seneca MVP framework for Node.js
Richard Rodger
 
KEY
20120816 nodejsdublin
Richard Rodger
 
PDF
Node js introduction
Alex Su
 
KEY
Wider than rails
Alexey Nayden
 
PDF
soft-shake.ch - Hands on Node.js
soft-shake.ch
 
PPTX
Scalable server component using NodeJS & ExpressJS
Andhy Koesnandar
 
KEY
Nodejs web,db,hosting
Kenu, GwangNam Heo
 
PPTX
Building and Scaling Node.js Applications
Ohad Kravchick
 
PDF
Nodejs - A quick tour (v6)
Felix Geisendörfer
 
PPTX
StrongLoop Overview
Shubhra Kar
 
KEY
node.js: Javascript's in your backend
David Padbury
 
PPTX
Introduction to node.js by jiban
Jibanananda Sana
 
PPTX
Advanced Web Technology.pptx
ssuser35fdf2
 
Intro To Node.js
Chris Cowan
 
Practical Use of MongoDB for Node.js
async_io
 
Introduction to REST API with Node.js
Yoann Gotthilf
 
Node azure
Emanuele DelBono
 
Node.js: The What, The How and The When
FITC
 
Writing robust Node.js applications
Tom Croucher
 
introduction to node.js
orkaplan
 
Introducing the Seneca MVP framework for Node.js
Richard Rodger
 
20120816 nodejsdublin
Richard Rodger
 
Node js introduction
Alex Su
 
Wider than rails
Alexey Nayden
 
soft-shake.ch - Hands on Node.js
soft-shake.ch
 
Scalable server component using NodeJS & ExpressJS
Andhy Koesnandar
 
Nodejs web,db,hosting
Kenu, GwangNam Heo
 
Building and Scaling Node.js Applications
Ohad Kravchick
 
Nodejs - A quick tour (v6)
Felix Geisendörfer
 
StrongLoop Overview
Shubhra Kar
 
node.js: Javascript's in your backend
David Padbury
 
Introduction to node.js by jiban
Jibanananda Sana
 
Advanced Web Technology.pptx
ssuser35fdf2
 

Recently uploaded (20)

PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PPTX
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
PPTX
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PDF
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
PDF
Software Development Methodologies in 2025
KodekX
 
PDF
The Evolution of KM Roles (Presented at Knowledge Summit Dublin 2025)
Enterprise Knowledge
 
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PPTX
IoT Sensor Integration 2025 Powering Smart Tech and Industrial Automation.pptx
Rejig Digital
 
PDF
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
PDF
Doc9.....................................
SofiaCollazos
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PDF
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
Software Development Methodologies in 2025
KodekX
 
The Evolution of KM Roles (Presented at Knowledge Summit Dublin 2025)
Enterprise Knowledge
 
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
IoT Sensor Integration 2025 Powering Smart Tech and Industrial Automation.pptx
Rejig Digital
 
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
Doc9.....................................
SofiaCollazos
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 

Intro to node and mongodb 1

  • 1. Introduction to M. Khurrum Qureshi Sr. Software Engineer
  • 2. Node’s Goal is to provide an easy way to build scalable network programs.
  • 3. Node.js is NOT another web framework! But you can create a web framework using NPM modules.
  • 4. Node.js is… Web Server TCP Server Awesome Robot Controller Command Line Application Proxy Server Streaming Server VoiceMail Server Music Machine Anything that has to deal with high I/O
  • 7. Why Node.js? • Non Blocking I/O • Based on Chrome’s V8 Engines (FAST!) • 15,000+ Modules • Active Community (IRC, Mailing Lists, Twitter, Github) • Mac, Linux and Windows (all first class citizens) • One Language for Frontend and Backend • JavaScript is the Language of the Web
  • 8. Node.js Good Use Cases • JSON APIs Building light-weight REST / JSON api's is something where node.js really shines. Its non-blocking I/O model combined with JavaScript make it a great choice for wrapping other data sources such as databases or web services and exposing them via a JSON interface. • Single Page Apps If you are planning to write an AJAX heavy single page app (think gmail), node.js is a great fit as well. The ability to process many requests / seconds with low response times, as well as sharing things like validation code between the client and server make it a great choice for modern web applications that do lots of processing on the client.
  • 9. Node.js Good Use Cases • Shelling out to Unix Tools With node.js still being young, it's tempting to re-invent all kinds of software for it. However, an even better approach is tapping into the vast universe of existing command line tools. Node's ability to spawn thousands of child processes and treating their outputs as a stream makes it an ideal choice for those seeking to leverage existing software. • Streaming Data Traditional web stacks often treat http requests and responses as atomic events. However, the truth is that they are streams, and many cool node.js applications can be built to take advantage of this fact. One great example is parsing file uploads in real time, as well as building proxies between different data layers.
  • 10. Node.js Good Use Cases • Soft Real Time Applications Another great aspect of node.js is the ease at which you can develop soft real time systems. By that I mean stuff like twitter, chat software, sport bets or interfaces to instant messaging networks.
  • 11. Basic HTTP Server var http = require('http'); var server = http.createServer(function (req, res) { res.writeHead(200); res.end('Hello World'); }); server.listen(4000);
  • 12. Some people use the core http module to build their web apps, most use a framework like Express or Connect or Flatiron or Tako or Derby or Geddy or Mojito or …
  • 14. What is Non-Blocking I/O? And why should I care?
  • 15. Blocking I/ 270ms = SUM(user, activities, leaderboard) // Get User – 20ms $query = 'SELECT * FROM users WHERE id = ?'; $users = query($query, array($id)); print_r($users); // Get Activities – 100ms $query = 'SELECT * FROM activities ORDER BY timestamp LIMIT 50'; $activities = query($query); print_r($activities); // Get Leader Board – 150ms $query = 'SELECT count(points) as total, user_id FROM activities LIMIT 50'; $leader_board = query($query);
  • 16. Non-Blocking I/ 150ms = MAX(user, activities, leaderboard) // Get User – 20ms var query = 'SELECT * FROM users WHERE id = ?'; db.query(query, [userId], function (err, results) { console.log(results); }); // Get Activities – 100ms var query = 'SELECT * FROM activities ORDER BY timestamp LIMIT 50'; db.query(query, function (err, results) { console.log(results); }); // Get Leader Board – 150ms var query = 'SELECT count(points) as total, user_id FROM activities LIMIT 50'; db.query(query, function (err, results) { console.log(results); });
  • 17. The most jarring thing about Server Side JavaScript is thinking in callbacks
  • 18. The Node Callback Pattern awesomeFunction(arg, function (err, data) { if (err) { // Handle Error } // Do something awesome with results. }); • Error first then success… ALWAYS! • Because this is the de-facto standard 99.99999% of the time you will be able to guess how a Node library will work.
  • 19. Callbacks are the Devil’s Work! Don’t go down this rabbit hole… One of the biggest mistakes is to get yourself in to callback hell by nesting callbacks inside of callbacks inside of more callbacks. var userQuery = 'SELECT * FROM users WHERE id = ?'; var activityQuery = 'SELECT * FROM activities ORDER BY timestamp LIMIT 50'; var leaderBoardQuery = 'SELECT count(points) as total, user_id FROM activities LIMIT 50'; db.query(userQuery, [id], function (userErr, userResults) { db.query(activityQuery, function (activityErr, activityResults) { db.query(leaderBoardQuery, function (leaderBoardErr, leaderBoardResults) { // Do something here }); }); });
  • 20. Avoiding Callback Hell • Keep your code shallow • Break up your code into small chunks • Use a sequential library like async • Visit http://callbackhell.com
  • 21. Async to the rescue! var async = require('async'); var db = require(’db'); function getUser (callback) { var query = 'SELECT * FROM users WHERE id = ?'; db.query(query, [userId], callback); } function getActivities (callback) { var query = 'SELECT * FROM activities ORDER BY timestamp LIMIT 50'; db.query(query, callback); } function getLeaderBoard (callback) { var query = 'SELECT count(points) as total, user_id FROM activities LIMIT 50'; db.query(query, callback); } var tasks = [getUser, getActivities, getLeaderBoard]; async.parallel(tasks, function (err, results) { var user = results[0]; var activities = results[1]; var leaderBoard = results[2]; });
  • 22. Visit https://github.com/caolan/async for a detailed guide on using the async module. Async provides several useful patterns for asynchronous control flow including: parallel, series, waterfall, auto and queue.
  • 23. The Node Package Manager otherwise know as… NPM It’s how you harness the awesomeness of the Node.js community!
  • 24. Using NPM It’s standard practice to install modules locally for your current project. Modules are installed in the ./node_modules in the current directory. To Install a new module npm install <module> To find a module in the NPM repository npm search <search string> To list the modules (and their dependencies) in the current project npm list To see module details npm info <module>
  • 25. DON’T INSTALL MODULES GLOBALLY! Unless they are tools like node-dev, jake, express, minify-js OR linked development modules but more on that later.
  • 26. NPM is awesome sauce! Visit https://npmjs.org for more details about NPM and to browse the current NPM Repository
  • 27. Node.js Modules • async • connect • express • mongodb- native-driver • request • apn • ql.io-engine • pem • winston • winston- mongodb
  • 28. Node.js Modules • node-sql • nodemailer • connect-http- signature • http-signature • underscore • file-utils • validator • mongoskin • passport.Js • yql
  • 29. Node.js Modules • node-gcm • forever • mongodb_s3_b ackup • nconf • node-sqlserver • Socket-io • generic-pool • And many others
  • 30. Deployment Platforms • Amazon EC2 • Windows Azure • Heroku • Joynet • Nodejistu
  • 33. NoSql • Non-Relational • Horizontally Scalable • Distributed • Schema-Free • Open-Source • Replication Support • Simple API
  • 34. NoSql Flavours • Key-value Store. • Graph • Big Table • Document Store
  • 35. mongoDB Overview • Document Database – Documents (objects) map nicely to programming language data types. – Embedded documents and arrays reduce need for joins. – Dynamic schema • High Performance – Embedding makes reads and writes fast. – Indexes can include keys from embedded documents and arrays. – Optional streaming writes (no acknowledgments). • High Availability – Replicated servers with automatic master failover.
  • 36. mongoDB Overview • Easy Scalability – Automatic sharding distributes collection data across machines.
  • 37. mongoDB Data Model • MongoDB instance hosts a number of databases. • A database holds a set of collections. • A collection holds a set of documents. • A document is a set of key-value pairs. • Documents have dynamic schema.
  • 38. Document Structure • Data is stored in the form of JSON data.(Which internally stored as BSON) { "_id" : ObjectId("4ccbfc75bd163019417c27f8"), "title": “Hello World! ", "author": { "firstname": "Joe", "lastname": "Bloggs" }, "tags": ["test", "foo", "bar"] }
  • 39. Key mongoDB Features • Flexibility • Power • Speed/Scaling • Ease of use