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