SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Node.js + Express + MongoDB
  를 활용한 웹애플리케이션 개발



          2013.3.18

         티몬 웹개발유닛
            박상국
Node.js
• Server-side (익숙한) Javascript
• is not Library or Framework
• But Google 자바스크립트 엔진 v8
• Purely Evented
• Non-blocking(비동기) I/O

• Event Loop & Callback Pattern
• Npm (Nodejs Package Manager)
Apache vs Nginx
Event Loop
그 동안 우리는 :

 puts("Enter your name: ");
 var name = gets();
 puts("Name: " + name);




앞으로 우리는 :

 puts("Enter your name: ");
 gets(function(name) {
          puts("Name: " + name);
 });
Example
Express
• Node.js 용 MVC Framework

• 고성능, 고품격(?) 웹app 개발

• 강력한 라우팅

• Restful

• 쉬운 기능확장

• 템플릿 엔진 Jade
Express 구조
• node_modules
 추가 확장 모듈이 저장되는 곳
• public
 이미지, js, css 등의 미디어 파일을 저장한다
• routes
 데이터 엑세스 및 서버사이드 작업 라우팅 (Controller)
• Views
  html 등의 템플릿 뷰. Jade 등의 템플릿엔진 사용 (View)
• app.js
  main 실행 파일
• package.json
  패키지 설정
Jade
Node Template Engine



 doctype 5                          <!DOCTYPE html>
 html(lang="en")                    <html lang="en">
  head                               <head>
   title= pageTitle                   <title>Jade</title>
                                      <script type="text/javascript">
   script(type='text/javascript')
                                        if (foo) {
     if (foo) {                                    bar()
        bar()                           }
     }                                </script>
  body                               </head>
   h1 Jade - node template engine    <body>
                                      <h1>Jade - node template engine</h1>
   #container
                                      <div id="container">
     if youAreUsingJade                 <p>You are amazing</p>
       p You are amazing              </div>
     else                            </body>
       p Get on it!                 </html>
Express 시작하기

$ express test
$ cd test && npm install

           -끝-
Example
MongoDB
• NoSQL 계의 김연아
• 대용량을 지향하는 문서기반의 데이터구조
• 기존 RDBMS 대비 월등한 속도 & 퍼포먼스
• (익숙한) Json 기반의 데이터
• No Schema – 관계성을 포기하고 확장성을 선택
• SQL Syntax 에 그나마 가장 근접
• Auto-sharding (아직은 미흡)
• Mongoose
SQL vs MongoDB
SQL Terms/Concepts                       MongoDB Terms/Concepts

database                                 database
table                                    collection
row                                      document or BSON document
column                                   field

primary key                              primary key
Specify any unique column or column co   In MongoDB, the primary key is automa
mbination as primary key.                tically set to the _id field.

CREATE TABLE users (
  id MEDIUMINT NOT NULL
                                         db.users.insert( {
     AUTO_INCREMENT,
                                           user_id: "abc123",
  user_id Varchar(30),
                                           age: 55,
  age Number,
                                           status: "A"
  status char(1),
                                         })
  PRIMARY KEY (id)
)
SQL Terms/Concepts                        MongoDB Terms/Concepts
                                          db.users.insert( {
INSERT INTO users(user_id, age, status)
                                              user_id: "bcd001", age: 45, status: "A"
VALUES ("bcd001", 45, "A")
                                          })

SELECT *
                                          db.users.find()
FROM users
SELECT * FROM users
                                          db.users.find({ status: "A" })
WHERE status = "A"
                                          db.users.find(
                                            { status: "A“, status: { $ne: “B" },
SELECT user_id, status FROM users
                                              age: { $gt: 25, $lte: 50 },
WHERE status = "A“ AND status != “B“
                                              user_id: /bc/
AND age > 25 AND age <= 50
                                            },
AND user_id like "%bc%"
                                            { user_id: 1, status: 1, _id: 0 }
                                          )
SELECT * FROM users
                                          db.users.find( { status: "A" } ).sort( { user_id: -
WHERE status = "A"
                                          1})
ORDER BY user_id DESC
SELECT COUNT(*)
FROM users                                db.users.count( { age: { $gt: 30 } } )
WHERE age > 30
SELECT *                                  db.users.findOne()
FROM users                                or
LIMIT 1                                   db.users.find().limit(1)
Example

Weitere ähnliche Inhalte

Was ist angesagt?

5-1. html5 graphics
5-1. html5 graphics5-1. html5 graphics
5-1. html5 graphicsJinKyoungHeo
 
181215 MS SQL로 알아보는 데이터베이스
181215 MS SQL로 알아보는 데이터베이스181215 MS SQL로 알아보는 데이터베이스
181215 MS SQL로 알아보는 데이터베이스KWANGIL KIM
 
추억의 자바스크립트
추억의 자바스크립트추억의 자바스크립트
추억의 자바스크립트욱진 양
 
MongoDB 하루만에 끝내기
MongoDB 하루만에 끝내기MongoDB 하루만에 끝내기
MongoDB 하루만에 끝내기Seongkuk Park
 
First Step In Ajax Korean
First Step In Ajax KoreanFirst Step In Ajax Korean
First Step In Ajax KoreanTerry Cho
 
자바야 놀자 PPT
자바야 놀자 PPT자바야 놀자 PPT
자바야 놀자 PPTJinKyoungHeo
 
Ksug2015 jpa4 객체지향쿼리
Ksug2015 jpa4 객체지향쿼리Ksug2015 jpa4 객체지향쿼리
Ksug2015 jpa4 객체지향쿼리Younghan Kim
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기beom kyun choi
 
Mongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUDMongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUDJin wook
 
영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA경원 이
 
PHP를 이용한 간단한 방명록 만들기
PHP를 이용한 간단한 방명록 만들기PHP를 이용한 간단한 방명록 만들기
PHP를 이용한 간단한 방명록 만들기Yoonwhan Lee
 
다시보는 Angular js
다시보는 Angular js다시보는 Angular js
다시보는 Angular jsJeado Ko
 
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기Jeado Ko
 

Was ist angesagt? (20)

5-1. html5 graphics
5-1. html5 graphics5-1. html5 graphics
5-1. html5 graphics
 
Hacosa jquery 1th
Hacosa jquery 1thHacosa jquery 1th
Hacosa jquery 1th
 
4-3. jquery
4-3. jquery4-3. jquery
4-3. jquery
 
Mymysql basic sql
Mymysql basic sqlMymysql basic sql
Mymysql basic sql
 
Hacosa j query 3th
Hacosa j query 3thHacosa j query 3th
Hacosa j query 3th
 
Jquery핵심노토
Jquery핵심노토Jquery핵심노토
Jquery핵심노토
 
181215 MS SQL로 알아보는 데이터베이스
181215 MS SQL로 알아보는 데이터베이스181215 MS SQL로 알아보는 데이터베이스
181215 MS SQL로 알아보는 데이터베이스
 
추억의 자바스크립트
추억의 자바스크립트추억의 자바스크립트
추억의 자바스크립트
 
Java JPA
Java JPAJava JPA
Java JPA
 
MongoDB 하루만에 끝내기
MongoDB 하루만에 끝내기MongoDB 하루만에 끝내기
MongoDB 하루만에 끝내기
 
First Step In Ajax Korean
First Step In Ajax KoreanFirst Step In Ajax Korean
First Step In Ajax Korean
 
Hacosa j query 4th
Hacosa j query 4thHacosa j query 4th
Hacosa j query 4th
 
자바야 놀자 PPT
자바야 놀자 PPT자바야 놀자 PPT
자바야 놀자 PPT
 
Ksug2015 jpa4 객체지향쿼리
Ksug2015 jpa4 객체지향쿼리Ksug2015 jpa4 객체지향쿼리
Ksug2015 jpa4 객체지향쿼리
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기
 
Mongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUDMongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUD
 
영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA
 
PHP를 이용한 간단한 방명록 만들기
PHP를 이용한 간단한 방명록 만들기PHP를 이용한 간단한 방명록 만들기
PHP를 이용한 간단한 방명록 만들기
 
다시보는 Angular js
다시보는 Angular js다시보는 Angular js
다시보는 Angular js
 
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
 

Ähnlich wie Node.js + Express + MongoDB

overview of spring4
overview of spring4overview of spring4
overview of spring4Arawn Park
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기OnGameServer
 
자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기Jeado Ko
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Jin wook
 
웹성능최적화 20130405
웹성능최적화 20130405웹성능최적화 20130405
웹성능최적화 20130405주형 전
 
9장. 문서 데이터베이스
9장. 문서 데이터베이스9장. 문서 데이터베이스
9장. 문서 데이터베이스kidoki
 
Jstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNGJstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNGJung Han
 
Webframeworks angular js 세미나
Webframeworks angular js 세미나Webframeworks angular js 세미나
Webframeworks angular js 세미나WebFrameworks
 
Apache solr소개 20120629
Apache solr소개 20120629Apache solr소개 20120629
Apache solr소개 20120629Dosang Yoon
 
Ksug2015 jpa5 스프링과jpa
Ksug2015 jpa5 스프링과jpaKsug2015 jpa5 스프링과jpa
Ksug2015 jpa5 스프링과jpaYounghan Kim
 
스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration
스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration
스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration수홍 이
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
9 object class
9 object class9 object class
9 object class웅식 전
 
03주차 ddl- table을 만들자
03주차 ddl- table을 만들자03주차 ddl- table을 만들자
03주차 ddl- table을 만들자Yoonwhan Lee
 
02주차 ddl- db를 만들자
02주차 ddl- db를 만들자02주차 ddl- db를 만들자
02주차 ddl- db를 만들자Yoonwhan Lee
 
Hacosa js study 2주차
Hacosa js study 2주차Hacosa js study 2주차
Hacosa js study 2주차Seong Bong Ji
 
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modificationSecrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modificationHyuncheol Jeon
 

Ähnlich wie Node.js + Express + MongoDB (20)

overview of spring4
overview of spring4overview of spring4
overview of spring4
 
Mongo db 최범균
Mongo db 최범균Mongo db 최범균
Mongo db 최범균
 
Scala for play
Scala for playScala for play
Scala for play
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
 
자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략
 
웹성능최적화 20130405
웹성능최적화 20130405웹성능최적화 20130405
웹성능최적화 20130405
 
9장. 문서 데이터베이스
9장. 문서 데이터베이스9장. 문서 데이터베이스
9장. 문서 데이터베이스
 
Jstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNGJstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNG
 
Webframeworks angular js 세미나
Webframeworks angular js 세미나Webframeworks angular js 세미나
Webframeworks angular js 세미나
 
GraphQL 적용기
GraphQL 적용기GraphQL 적용기
GraphQL 적용기
 
Apache solr소개 20120629
Apache solr소개 20120629Apache solr소개 20120629
Apache solr소개 20120629
 
Ksug2015 jpa5 스프링과jpa
Ksug2015 jpa5 스프링과jpaKsug2015 jpa5 스프링과jpa
Ksug2015 jpa5 스프링과jpa
 
스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration
스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration
스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
9 object class
9 object class9 object class
9 object class
 
03주차 ddl- table을 만들자
03주차 ddl- table을 만들자03주차 ddl- table을 만들자
03주차 ddl- table을 만들자
 
02주차 ddl- db를 만들자
02주차 ddl- db를 만들자02주차 ddl- db를 만들자
02주차 ddl- db를 만들자
 
Hacosa js study 2주차
Hacosa js study 2주차Hacosa js study 2주차
Hacosa js study 2주차
 
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modificationSecrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
 

Node.js + Express + MongoDB

  • 1. Node.js + Express + MongoDB 를 활용한 웹애플리케이션 개발 2013.3.18 티몬 웹개발유닛 박상국
  • 2. Node.js • Server-side (익숙한) Javascript • is not Library or Framework • But Google 자바스크립트 엔진 v8 • Purely Evented • Non-blocking(비동기) I/O • Event Loop & Callback Pattern • Npm (Nodejs Package Manager)
  • 4. Event Loop 그 동안 우리는 : puts("Enter your name: "); var name = gets(); puts("Name: " + name); 앞으로 우리는 : puts("Enter your name: "); gets(function(name) { puts("Name: " + name); });
  • 6. Express • Node.js 용 MVC Framework • 고성능, 고품격(?) 웹app 개발 • 강력한 라우팅 • Restful • 쉬운 기능확장 • 템플릿 엔진 Jade
  • 7. Express 구조 • node_modules 추가 확장 모듈이 저장되는 곳 • public 이미지, js, css 등의 미디어 파일을 저장한다 • routes 데이터 엑세스 및 서버사이드 작업 라우팅 (Controller) • Views html 등의 템플릿 뷰. Jade 등의 템플릿엔진 사용 (View) • app.js main 실행 파일 • package.json 패키지 설정
  • 8. Jade Node Template Engine doctype 5 <!DOCTYPE html> html(lang="en") <html lang="en"> head <head> title= pageTitle <title>Jade</title> <script type="text/javascript"> script(type='text/javascript') if (foo) { if (foo) { bar() bar() } } </script> body </head> h1 Jade - node template engine <body> <h1>Jade - node template engine</h1> #container <div id="container"> if youAreUsingJade <p>You are amazing</p> p You are amazing </div> else </body> p Get on it! </html>
  • 9. Express 시작하기 $ express test $ cd test && npm install -끝-
  • 11. MongoDB • NoSQL 계의 김연아 • 대용량을 지향하는 문서기반의 데이터구조 • 기존 RDBMS 대비 월등한 속도 & 퍼포먼스 • (익숙한) Json 기반의 데이터 • No Schema – 관계성을 포기하고 확장성을 선택 • SQL Syntax 에 그나마 가장 근접 • Auto-sharding (아직은 미흡) • Mongoose
  • 12. SQL vs MongoDB SQL Terms/Concepts MongoDB Terms/Concepts database database table collection row document or BSON document column field primary key primary key Specify any unique column or column co In MongoDB, the primary key is automa mbination as primary key. tically set to the _id field. CREATE TABLE users ( id MEDIUMINT NOT NULL db.users.insert( { AUTO_INCREMENT, user_id: "abc123", user_id Varchar(30), age: 55, age Number, status: "A" status char(1), }) PRIMARY KEY (id) )
  • 13. SQL Terms/Concepts MongoDB Terms/Concepts db.users.insert( { INSERT INTO users(user_id, age, status) user_id: "bcd001", age: 45, status: "A" VALUES ("bcd001", 45, "A") }) SELECT * db.users.find() FROM users SELECT * FROM users db.users.find({ status: "A" }) WHERE status = "A" db.users.find( { status: "A“, status: { $ne: “B" }, SELECT user_id, status FROM users age: { $gt: 25, $lte: 50 }, WHERE status = "A“ AND status != “B“ user_id: /bc/ AND age > 25 AND age <= 50 }, AND user_id like "%bc%" { user_id: 1, status: 1, _id: 0 } ) SELECT * FROM users db.users.find( { status: "A" } ).sort( { user_id: - WHERE status = "A" 1}) ORDER BY user_id DESC SELECT COUNT(*) FROM users db.users.count( { age: { $gt: 30 } } ) WHERE age > 30 SELECT * db.users.findOne() FROM users or LIMIT 1 db.users.find().limit(1)