SlideShare una empresa de Scribd logo
1 de 38
By
       Jorge Garifuna
Professional Web Developer
   info@GariDigital.com
        213-915-4402

    JGari.com/resume

   Twitter: @jgarifuna
SMS your Name and Email to:


       213-985-4413
SMS your name & email to: 213-985-4413   JGari.com/resume
1. A Database that stores data (documents)
2. A NoSQL Database
     1. NoSQL = Not only SQL
3.    Uses JSON for interaction
     1. JSON = JavaScript Object Notation
4.    Managed by 10gen company



     SMS your name & email to: 213-985-4413   JGari.com/resume
1.    Scalable
2.    High performance
3.    Open source
4.    Written in C++
5.    Humongous 




     SMS your name & email to: 213-985-4413   JGari.com/resume
1.   Document-Oriented Storage
2.   Full Index Support
3.   Replication & High Availability: Mirror across
     LAN/WAN
4.   Auto-Sharding: Scale horizontally
5.   Map/Reduce: aggregation & data processing
6.   GridFS: Stire files of any size


      SMS your name & email to: 213-985-4413   JGari.com/resume
1. A Relational Database
2. Ideal for every scenario




     SMS your name & email to: 213-985-4413   JGari.com/resume
1. Not a Relational Database (RDBMS)
2. Not ideal for every scenario




     SMS your name & email to: 213-985-4413   JGari.com/resume
Relational Database Table/Records              MongoDB Collection/Documents

 id     firstName   lastName    age            id: 1
                                               firstName: Jorge
                                               lastName: Garifuna
 1      Jorge       Garifuna    85             age: 85
                                               id: 2
 2      Jimmy       Smith       30             firstName: Jimmy
                                               lastName: Smith
                                               age: 30

                                               id: 3
                                               firstName: Alan
                                               lastName: Jones
                                               age: 25
                                               city: Los Angeles
                                               state: CA
      SMS your name & email to: 213-985-4413                  JGari.com/resume
1. I dig alpha products
2. Beta products are my cut of tea
3. I only consider stable products




SMS your name & email to: 213-985-4413   JGari.com/resume
Credit: Sanjeev Mishra




SMS your name & email to: 213-985-4413    JGari.com/resume
1. When you need flexibility in your data
2. When you want to easily scale
3. When your dataset does not have zillions
   of joins




SMS your name & email to: 213-985-4413   JGari.com/resume
MySQL executable                     Oracle executable                     Mongo executable
mysqld                               oracle                                mongod
mysql                                sqlplus                               mongo
MySQL term                                               Mongo term/concept
database                                                 database
table                                                    collection
index                                                    index
row                                                      BSON document
column                                                   BSON field
join                                                     embedding and linking
primary key                                              _id field
group by                                                 aggregation




 Source: http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart


       SMS your name & email to: 213-985-4413                                             JGari.com/resume
1.     Download from
     1. http://www.mongodb.org/downloads
2.     Unzip package
3.     Run the following from terminal
     1. sudo mkdir -p /data/db
     2. sudo chown `id -u` /data/db
4.     Add to path
     1. Mac example: export PATH=/Users/jgarifuna/jg/net/Dev/db/mongodb-osx-x86_64-
          2.2.1-rc0/bin:$PATH

     2. Linux example: PATH=/home/jgarifuna/mongo-linux-2.2.1/bin:$PATH

     SMS your name & email to: 213-985-4413                                 JGari.com/resume
1.    If added to path in command line type
     1. mongod
2.    If not on path
     1. Access the bin folder on mongo folder
     2. Type: ./mongod




SMS your name & email to: 213-985-4413          JGari.com/resume
1.    If added to path in command line type
     1. mongo
2.    If not on path
     1. Access the bin folder on mongo folder
     2. Type: ./mongo




SMS your name & email to: 213-985-4413          JGari.com/resume
1. Databases are created automatically
2. Tables are created automatically
3. Primary key is created automatically




SMS your name & email to: 213-985-4413   JGari.com/resume
SQL Statement                           Mongo Statement
   INSERT INTO USERS VALUES(3,5)           db.users.insert({a:3,b:5})


   SELECT * FROM users                     db.users.find()


   UPDATE users SET a=1 WHERE              db.users.update({b:'q'}, {$set:{a:1}}, false,
   b='q'                                   true)


   DELETE FROM users WHERE                 db.users.remove({z:'abc'});
   z="abc"




Source: http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart


  SMS your name & email to: 213-985-4413                                       JGari.com/resume
SQL Statement                                         Mongo Statement
   INSERT INTO USERS VALUES(3,5)                         db.users.insert({a:3,b:5})




Source: http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart


  SMS your name & email to: 213-985-4413                                         JGari.com/resume
SQL Statement                                Mongo Statement
  SELECT a,b FROM users                        db.users.find({}, {a:1,b:1})
  SELECT * FROM users                          db.users.find()
  SELECT * FROM users WHERE age=33             db.users.find({age:33})
  SELECT a,b FROM users WHERE age=33           db.users.find({age:33}, {a:1,b:1})
  SELECT * FROM users WHERE age=33             db.users.find({age:33}).sort({name:1})
  ORDER BY name
  SELECT * FROM users WHERE age>33             db.users.find({age:{$gt:33}})
  SELECT * FROM users WHERE age!=33            db.users.find({age:{$ne:33}})
  SELECT * FROM users WHERE age>33             db.users.find({'age':{$gt:33,$lte:40}})
  AND age<=40
  SELECT * FROM users ORDER BY name            db.users.find().sort({name:-1})
  DESC
  SELECT COUNT(*y) FROM users where            db.users.find({age: {'$gt': 30}}).count()
  AGE > 30
  SELECT COUNT(AGE) from users                 db.users.find({age: {'$exists':
                                               true}}).count()


Source: http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart


  SMS your name & email to: 213-985-4413                                         JGari.com/resume
SQL Statement                            Mongo Statement
   UPDATE users SET a=1 WHERE               db.users.update({b:'q'}, {$set:{a:1}}, false,
   b='q'                                    true)
   UPDATE users SET a=a+2 WHERE             db.users.update({b:'q'}, {$inc:{a:2}}, false,
   b='q'                                    true)




Source: http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart


  SMS your name & email to: 213-985-4413                                       JGari.com/resume
SQL Statement                                          Mongo Statement
   DELETE FROM users WHERE z="abc"                        db.users.remove({z:'abc'});




Source: http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart


  SMS your name & email to: 213-985-4413                                          JGari.com/resume
SMS your name & email to: 213-985-4413   JGari.com/resume
Source: http://www.mongodb.org/display/DOCS/Replica+Sets

SMS your name & email to: 213-985-4413                     JGari.com/resume
 On each mongodb instance start service with:
         mongod --rest --replSet myset




Source: http://www.mongodb.org/display/DOCS/Replica+Sets+-+Basics

      SMS your name & email to: 213-985-4413                        JGari.com/resume
 Connect to primary server:
         mongo --host PRIMARY_IP_OR_NAME
     Initialize replica set
         rs.initiate()
     Add secondary node to replica set
         rs.add(‘FIRST_SERVER_NAME_OR_IP’)
     Add arbiter node to replica set
         rs.addArb(‘ARB_SERVER_NAME_OR_IP’)
Source: http://www.mongodb.org/display/DOCS/Replica+Sets+-+Basics

      SMS your name & email to: 213-985-4413                        JGari.com/resume
 Connect to primary server:
         mongo --host PRIMARY_IP_OR_NAME
     Add a document
         db.foo.save({name: “Jorge Garifuna”})
     Set secondary to slave (otherwise you wont be able to see data)
         rs.slaveOk()
     Query secondary
         db.foo.find()
Source: http://www.mongodb.org/display/DOCS/Replica+Sets+-+Basics

      SMS your name & email to: 213-985-4413                        JGari.com/resume
Some Node JS stuff


SMS your name & email to: 213-985-4413   JGari.com/resume
 Platform built on Google Chrome’s JavaScript
  Runtime
 For building fast, scalable network applications
 Substitute for Apache/PHP
   But you create your own server code




   SMS your name & email to: 213-985-4413   JGari.com/resume
 Download from
   nodejs.org
 Run installation




   SMS your name & email to: 213-985-4413   JGari.com/resume
var http = require('http');
      http.createServer(function (req, res) {
       res.writeHead(200, {'Content-Type': 'text/plain'});
       res.end('Hello Worldn');
      }).listen(1337, '127.0.0.1');
      console.log('Server running at http://127.0.0.1:1337/');


1.    Create new folder
2.    Create testserver.js file and place within folder
3.    Run node
     1. Node testserver.js
4.    On browser go to: http://127.0.0.1:1337
      SMS your name & email to: 213-985-4413                     JGari.com/resume
1. A Node JS Application Framework
2. Uses MVC (model, view, controller) pattern




     SMS your name & email to: 213-985-4413   JGari.com/resume
1.    From the command line run Node Package
      Manager
     1. sudo npm install -g express




       SMS your name & email to: 213-985-4413   JGari.com/resume
1.    From the command line run
     1. Express ./YOUR_APP_NAME
2.    Change into your new app folder
     1. cd ./YOUR_APP_NAME
3.    Install depedencies
     1. npm install -d




       SMS your name & email to: 213-985-4413   JGari.com/resume
1.    Change into your new app folder
     1. cd ./YOUR_APP_NAME
2.    Run app with node
     1. node app
3.    On browser go to URL:
     1. http://localhost:3000




       SMS your name & email to: 213-985-4413   JGari.com/resume
1.    Change into your new app folder
     1. cd ./YOUR_APP_NAME
2.    Run app with node
     1. node app
3.    On browser go to URL:
     1. http://localhost:3000




       SMS your name & email to: 213-985-4413   JGari.com/resume
1.    Download workout web api from
     1. https://github.com/donnfelker/workout-tracker
2.    Checkout Develop a RESTful API Using Node.js
      With Express and Mongoose
     1. http://pixelhandler.com/blog/2012/02/09/develop-a-
        restful-api-using-node-js-with-express-and-
        mongoose/


       SMS your name & email to: 213-985-4413    JGari.com/resume
 While you think…
  Sign up to LAMPsig’s mailing list at:
   ▪ http://lampsig.org


  Join LAMPsig on Meetup at:
   ▪ http://www.meetup.com/LAMPsig


  Jorge Garifuna
   ▪ info@GariDigital.com
   ▪ @jgarifuna
SMS your name & email to: 213-985-4413     JGari.com/resume
1.     http://www.mongodb.org
2.     http://nodejs.org
3.     http://expressjs.com
4.     http://pixelhandler.com/blog/2012/02/09/dev
       elop-a-restful-api-using-node-js-with-
       express-and-mongoose
5.     http://lampsig.org
6.     http://www.meetup.com/LAMPsig

     SMS your name & email to: 213-985-4413   JGari.com/resume

Más contenido relacionado

Similar a A practical intro to web development with mongo db and nodejs when, why and how

Mongodbinaction 100122230824-phpapp01
Mongodbinaction 100122230824-phpapp01Mongodbinaction 100122230824-phpapp01
Mongodbinaction 100122230824-phpapp01
Cevin Cheung
 
Schema design short
Schema design shortSchema design short
Schema design short
MongoDB
 
Superficial mongo db
Superficial mongo dbSuperficial mongo db
Superficial mongo db
DaeMyung Kang
 

Similar a A practical intro to web development with mongo db and nodejs when, why and how (20)

MongoDB
MongoDBMongoDB
MongoDB
 
Mongodbinaction 100122230824-phpapp01
Mongodbinaction 100122230824-phpapp01Mongodbinaction 100122230824-phpapp01
Mongodbinaction 100122230824-phpapp01
 
Mongo db basic installation
Mongo db basic installationMongo db basic installation
Mongo db basic installation
 
MongoDb In Action
MongoDb In ActionMongoDb In Action
MongoDb In Action
 
Onde mora a produtividade do Ruby on Rails?
Onde mora a produtividade do Ruby on Rails?Onde mora a produtividade do Ruby on Rails?
Onde mora a produtividade do Ruby on Rails?
 
A Brief MongoDB Intro
A Brief MongoDB IntroA Brief MongoDB Intro
A Brief MongoDB Intro
 
Introduction to MongoDB at IGDTUW
Introduction to MongoDB at IGDTUWIntroduction to MongoDB at IGDTUW
Introduction to MongoDB at IGDTUW
 
MongoDB a document store that won't let you down.
MongoDB a document store that won't let you down.MongoDB a document store that won't let you down.
MongoDB a document store that won't let you down.
 
2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator
 
2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator
 
Advanced MongoDB Aggregation Pipelines
Advanced MongoDB Aggregation PipelinesAdvanced MongoDB Aggregation Pipelines
Advanced MongoDB Aggregation Pipelines
 
MongoDB Europe 2016 - Advanced MongoDB Aggregation Pipelines
MongoDB Europe 2016 - Advanced MongoDB Aggregation PipelinesMongoDB Europe 2016 - Advanced MongoDB Aggregation Pipelines
MongoDB Europe 2016 - Advanced MongoDB Aggregation Pipelines
 
Awesome Tools 2017
Awesome Tools 2017Awesome Tools 2017
Awesome Tools 2017
 
Schema design short
Schema design shortSchema design short
Schema design short
 
Superficial mongo db
Superficial mongo dbSuperficial mongo db
Superficial mongo db
 
How to use MongoDB with CakePHP
How to use MongoDB with CakePHPHow to use MongoDB with CakePHP
How to use MongoDB with CakePHP
 
MongoDB.local Austin 2018: Tutorial - User Administration Without You - Integ...
MongoDB.local Austin 2018: Tutorial - User Administration Without You - Integ...MongoDB.local Austin 2018: Tutorial - User Administration Without You - Integ...
MongoDB.local Austin 2018: Tutorial - User Administration Without You - Integ...
 
RedisConf18 - Redis Memory Optimization
RedisConf18 - Redis Memory OptimizationRedisConf18 - Redis Memory Optimization
RedisConf18 - Redis Memory Optimization
 
Protocol buffers
Protocol buffersProtocol buffers
Protocol buffers
 
Deep dive to PostgreSQL Indexes
Deep dive to PostgreSQL IndexesDeep dive to PostgreSQL Indexes
Deep dive to PostgreSQL Indexes
 

Más de jgarifuna

Joomla/Mambo CMS
Joomla/Mambo CMSJoomla/Mambo CMS
Joomla/Mambo CMS
jgarifuna
 
Joomla/Mambo CMS
Joomla/Mambo CMSJoomla/Mambo CMS
Joomla/Mambo CMS
jgarifuna
 
http://www.slideshare.net/jgarifuna/elgg-presentation-ca-032109
http://www.slideshare.net/jgarifuna/elgg-presentation-ca-032109http://www.slideshare.net/jgarifuna/elgg-presentation-ca-032109
http://www.slideshare.net/jgarifuna/elgg-presentation-ca-032109
jgarifuna
 
Joomla Content Management Systems, Part 3
Joomla Content Management Systems, Part 3Joomla Content Management Systems, Part 3
Joomla Content Management Systems, Part 3
jgarifuna
 
Integrating LAMP with Mkahawa Cyber Manager & SQLite
Integrating LAMP with Mkahawa Cyber Manager & SQLiteIntegrating LAMP with Mkahawa Cyber Manager & SQLite
Integrating LAMP with Mkahawa Cyber Manager & SQLite
jgarifuna
 
Intro to Quick Web Application Builder (QWAB)
Intro to Quick Web Application Builder (QWAB)Intro to Quick Web Application Builder (QWAB)
Intro to Quick Web Application Builder (QWAB)
jgarifuna
 
Intro to mobile development with sencha touch
Intro to mobile development with sencha touchIntro to mobile development with sencha touch
Intro to mobile development with sencha touch
jgarifuna
 
Introduction to php
Introduction to phpIntroduction to php
Introduction to php
jgarifuna
 

Más de jgarifuna (9)

Joomla/Mambo CMS
Joomla/Mambo CMSJoomla/Mambo CMS
Joomla/Mambo CMS
 
Joomla/Mambo CMS
Joomla/Mambo CMSJoomla/Mambo CMS
Joomla/Mambo CMS
 
http://www.slideshare.net/jgarifuna/elgg-presentation-ca-032109
http://www.slideshare.net/jgarifuna/elgg-presentation-ca-032109http://www.slideshare.net/jgarifuna/elgg-presentation-ca-032109
http://www.slideshare.net/jgarifuna/elgg-presentation-ca-032109
 
The Elgg Social Networking Framework
The Elgg Social Networking FrameworkThe Elgg Social Networking Framework
The Elgg Social Networking Framework
 
Joomla Content Management Systems, Part 3
Joomla Content Management Systems, Part 3Joomla Content Management Systems, Part 3
Joomla Content Management Systems, Part 3
 
Integrating LAMP with Mkahawa Cyber Manager & SQLite
Integrating LAMP with Mkahawa Cyber Manager & SQLiteIntegrating LAMP with Mkahawa Cyber Manager & SQLite
Integrating LAMP with Mkahawa Cyber Manager & SQLite
 
Intro to Quick Web Application Builder (QWAB)
Intro to Quick Web Application Builder (QWAB)Intro to Quick Web Application Builder (QWAB)
Intro to Quick Web Application Builder (QWAB)
 
Intro to mobile development with sencha touch
Intro to mobile development with sencha touchIntro to mobile development with sencha touch
Intro to mobile development with sencha touch
 
Introduction to php
Introduction to phpIntroduction to php
Introduction to php
 

Último

Último (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

A practical intro to web development with mongo db and nodejs when, why and how

  • 1. By Jorge Garifuna Professional Web Developer info@GariDigital.com 213-915-4402 JGari.com/resume Twitter: @jgarifuna
  • 2. SMS your Name and Email to: 213-985-4413 SMS your name & email to: 213-985-4413 JGari.com/resume
  • 3. 1. A Database that stores data (documents) 2. A NoSQL Database 1. NoSQL = Not only SQL 3. Uses JSON for interaction 1. JSON = JavaScript Object Notation 4. Managed by 10gen company SMS your name & email to: 213-985-4413 JGari.com/resume
  • 4. 1. Scalable 2. High performance 3. Open source 4. Written in C++ 5. Humongous  SMS your name & email to: 213-985-4413 JGari.com/resume
  • 5. 1. Document-Oriented Storage 2. Full Index Support 3. Replication & High Availability: Mirror across LAN/WAN 4. Auto-Sharding: Scale horizontally 5. Map/Reduce: aggregation & data processing 6. GridFS: Stire files of any size SMS your name & email to: 213-985-4413 JGari.com/resume
  • 6. 1. A Relational Database 2. Ideal for every scenario SMS your name & email to: 213-985-4413 JGari.com/resume
  • 7. 1. Not a Relational Database (RDBMS) 2. Not ideal for every scenario SMS your name & email to: 213-985-4413 JGari.com/resume
  • 8. Relational Database Table/Records MongoDB Collection/Documents id firstName lastName age id: 1 firstName: Jorge lastName: Garifuna 1 Jorge Garifuna 85 age: 85 id: 2 2 Jimmy Smith 30 firstName: Jimmy lastName: Smith age: 30 id: 3 firstName: Alan lastName: Jones age: 25 city: Los Angeles state: CA SMS your name & email to: 213-985-4413 JGari.com/resume
  • 9. 1. I dig alpha products 2. Beta products are my cut of tea 3. I only consider stable products SMS your name & email to: 213-985-4413 JGari.com/resume
  • 10. Credit: Sanjeev Mishra SMS your name & email to: 213-985-4413 JGari.com/resume
  • 11. 1. When you need flexibility in your data 2. When you want to easily scale 3. When your dataset does not have zillions of joins SMS your name & email to: 213-985-4413 JGari.com/resume
  • 12. MySQL executable Oracle executable Mongo executable mysqld oracle mongod mysql sqlplus mongo MySQL term Mongo term/concept database database table collection index index row BSON document column BSON field join embedding and linking primary key _id field group by aggregation Source: http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart SMS your name & email to: 213-985-4413 JGari.com/resume
  • 13. 1. Download from 1. http://www.mongodb.org/downloads 2. Unzip package 3. Run the following from terminal 1. sudo mkdir -p /data/db 2. sudo chown `id -u` /data/db 4. Add to path 1. Mac example: export PATH=/Users/jgarifuna/jg/net/Dev/db/mongodb-osx-x86_64- 2.2.1-rc0/bin:$PATH 2. Linux example: PATH=/home/jgarifuna/mongo-linux-2.2.1/bin:$PATH SMS your name & email to: 213-985-4413 JGari.com/resume
  • 14. 1. If added to path in command line type 1. mongod 2. If not on path 1. Access the bin folder on mongo folder 2. Type: ./mongod SMS your name & email to: 213-985-4413 JGari.com/resume
  • 15. 1. If added to path in command line type 1. mongo 2. If not on path 1. Access the bin folder on mongo folder 2. Type: ./mongo SMS your name & email to: 213-985-4413 JGari.com/resume
  • 16. 1. Databases are created automatically 2. Tables are created automatically 3. Primary key is created automatically SMS your name & email to: 213-985-4413 JGari.com/resume
  • 17. SQL Statement Mongo Statement INSERT INTO USERS VALUES(3,5) db.users.insert({a:3,b:5}) SELECT * FROM users db.users.find() UPDATE users SET a=1 WHERE db.users.update({b:'q'}, {$set:{a:1}}, false, b='q' true) DELETE FROM users WHERE db.users.remove({z:'abc'}); z="abc" Source: http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart SMS your name & email to: 213-985-4413 JGari.com/resume
  • 18. SQL Statement Mongo Statement INSERT INTO USERS VALUES(3,5) db.users.insert({a:3,b:5}) Source: http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart SMS your name & email to: 213-985-4413 JGari.com/resume
  • 19. SQL Statement Mongo Statement SELECT a,b FROM users db.users.find({}, {a:1,b:1}) SELECT * FROM users db.users.find() SELECT * FROM users WHERE age=33 db.users.find({age:33}) SELECT a,b FROM users WHERE age=33 db.users.find({age:33}, {a:1,b:1}) SELECT * FROM users WHERE age=33 db.users.find({age:33}).sort({name:1}) ORDER BY name SELECT * FROM users WHERE age>33 db.users.find({age:{$gt:33}}) SELECT * FROM users WHERE age!=33 db.users.find({age:{$ne:33}}) SELECT * FROM users WHERE age>33 db.users.find({'age':{$gt:33,$lte:40}}) AND age<=40 SELECT * FROM users ORDER BY name db.users.find().sort({name:-1}) DESC SELECT COUNT(*y) FROM users where db.users.find({age: {'$gt': 30}}).count() AGE > 30 SELECT COUNT(AGE) from users db.users.find({age: {'$exists': true}}).count() Source: http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart SMS your name & email to: 213-985-4413 JGari.com/resume
  • 20. SQL Statement Mongo Statement UPDATE users SET a=1 WHERE db.users.update({b:'q'}, {$set:{a:1}}, false, b='q' true) UPDATE users SET a=a+2 WHERE db.users.update({b:'q'}, {$inc:{a:2}}, false, b='q' true) Source: http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart SMS your name & email to: 213-985-4413 JGari.com/resume
  • 21. SQL Statement Mongo Statement DELETE FROM users WHERE z="abc" db.users.remove({z:'abc'}); Source: http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart SMS your name & email to: 213-985-4413 JGari.com/resume
  • 22. SMS your name & email to: 213-985-4413 JGari.com/resume
  • 23. Source: http://www.mongodb.org/display/DOCS/Replica+Sets SMS your name & email to: 213-985-4413 JGari.com/resume
  • 24.  On each mongodb instance start service with:  mongod --rest --replSet myset Source: http://www.mongodb.org/display/DOCS/Replica+Sets+-+Basics SMS your name & email to: 213-985-4413 JGari.com/resume
  • 25.  Connect to primary server:  mongo --host PRIMARY_IP_OR_NAME  Initialize replica set  rs.initiate()  Add secondary node to replica set  rs.add(‘FIRST_SERVER_NAME_OR_IP’)  Add arbiter node to replica set  rs.addArb(‘ARB_SERVER_NAME_OR_IP’) Source: http://www.mongodb.org/display/DOCS/Replica+Sets+-+Basics SMS your name & email to: 213-985-4413 JGari.com/resume
  • 26.  Connect to primary server:  mongo --host PRIMARY_IP_OR_NAME  Add a document  db.foo.save({name: “Jorge Garifuna”})  Set secondary to slave (otherwise you wont be able to see data)  rs.slaveOk()  Query secondary  db.foo.find() Source: http://www.mongodb.org/display/DOCS/Replica+Sets+-+Basics SMS your name & email to: 213-985-4413 JGari.com/resume
  • 27. Some Node JS stuff SMS your name & email to: 213-985-4413 JGari.com/resume
  • 28.  Platform built on Google Chrome’s JavaScript Runtime  For building fast, scalable network applications  Substitute for Apache/PHP  But you create your own server code SMS your name & email to: 213-985-4413 JGari.com/resume
  • 29.  Download from  nodejs.org  Run installation SMS your name & email to: 213-985-4413 JGari.com/resume
  • 30. var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello Worldn'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/'); 1. Create new folder 2. Create testserver.js file and place within folder 3. Run node 1. Node testserver.js 4. On browser go to: http://127.0.0.1:1337 SMS your name & email to: 213-985-4413 JGari.com/resume
  • 31. 1. A Node JS Application Framework 2. Uses MVC (model, view, controller) pattern SMS your name & email to: 213-985-4413 JGari.com/resume
  • 32. 1. From the command line run Node Package Manager 1. sudo npm install -g express SMS your name & email to: 213-985-4413 JGari.com/resume
  • 33. 1. From the command line run 1. Express ./YOUR_APP_NAME 2. Change into your new app folder 1. cd ./YOUR_APP_NAME 3. Install depedencies 1. npm install -d SMS your name & email to: 213-985-4413 JGari.com/resume
  • 34. 1. Change into your new app folder 1. cd ./YOUR_APP_NAME 2. Run app with node 1. node app 3. On browser go to URL: 1. http://localhost:3000 SMS your name & email to: 213-985-4413 JGari.com/resume
  • 35. 1. Change into your new app folder 1. cd ./YOUR_APP_NAME 2. Run app with node 1. node app 3. On browser go to URL: 1. http://localhost:3000 SMS your name & email to: 213-985-4413 JGari.com/resume
  • 36. 1. Download workout web api from 1. https://github.com/donnfelker/workout-tracker 2. Checkout Develop a RESTful API Using Node.js With Express and Mongoose 1. http://pixelhandler.com/blog/2012/02/09/develop-a- restful-api-using-node-js-with-express-and- mongoose/ SMS your name & email to: 213-985-4413 JGari.com/resume
  • 37.  While you think…  Sign up to LAMPsig’s mailing list at: ▪ http://lampsig.org  Join LAMPsig on Meetup at: ▪ http://www.meetup.com/LAMPsig  Jorge Garifuna ▪ info@GariDigital.com ▪ @jgarifuna SMS your name & email to: 213-985-4413 JGari.com/resume
  • 38. 1. http://www.mongodb.org 2. http://nodejs.org 3. http://expressjs.com 4. http://pixelhandler.com/blog/2012/02/09/dev elop-a-restful-api-using-node-js-with- express-and-mongoose 5. http://lampsig.org 6. http://www.meetup.com/LAMPsig SMS your name & email to: 213-985-4413 JGari.com/resume