SlideShare una empresa de Scribd logo
1 de 27
SKP 신호철
   SQLite
   MySQL
   MongoDB
   Overview
    ◦ 2000년 리처드 힙(D. Richard Hipp)과 그의 친구들이 만
      들었습니다. 2000년 8월에 1.0 버전이 출시.
    ◦ Android, iOS등 거의 모든 모바일 디바이스에서 사용되
      고 있는 DBMS.
    ◦ 그 외 firefox, dropbox, 등 왠만한 client-side 앱들도
      거의 다 사용.
   단일 데이터베이스 파일
    ◦ SQLite에서는 데이터베이스의 모든 정보가 단 하나의 파
      일에 저장됨.
      즉, 테이블 스키마, 레코드 데이터, 인덱스와 같은 모든 정보
       가 한 파일에 저장
      단일 파일로 동작하기 때문에 프로그램이 다중 프로세스나
       다중 스레드로 동작하는 경우 파일 잠금(lock) 이슈가 발생할
       수 있음.
   설정 파일 X
    ◦ SQLite는 라이브러리 형태로 제공되며, 별도의 설정 파일
      이 없고 별도 서버를 구동하는 등의 사전 작업이 없음.
   간결성
    ◦ 매우 간결한 데이터베이스
     모바일 client-side에 적합.
     페이지 크기(page size) 제한이 있으며, 데이터베이스 파일
      이 파일시스템에 파일로 저장되기 때문에 파일 크기 제한이
      있는 경우 데이터베이스가 동작하는 데 문제가 생길 수 있음.
   동시성
    ◦ 읽기는 여러 프로세스에서 가능하지만, 쓰기는 한 순간에
      오직 하나의 프로세스만 가능

   모든 SQL문을 지원하지 않음.
    ◦ 예 : RIGHT / FULL OUTER JOIN, VIEW 수정, GRANT.
   npm install sqlite3
   SQL문
    ◦ http://www.sqlite.org/lang.html를 참고


   API
    ◦ https://github.com/developmentseed/node-
      sqlite3/wiki/API를 참고.
   세계에서 가장 많이 쓰이는 관계형 DBMS.
   Mediawiki, drupal, bugzilla, …

   mysql : http://www.mysql.com/
   node-mysql :
    https://npmjs.org/package/mysql
   server-client 구조.
    ◦ node-mysql을 설치하고 mysql-server도 설치해야함.
   다양한 storage 엔진
    ◦ MyISAM
      인덱스만 메모리에 올려서 처리.
      테이블 레벨 잠금.
      동시다발적인 변경 작업에는 부적합함.
    ◦ InnoDB
        인덱스/데이터를 모두 메모리에 올려서 처리.
        트랜잭션 제공.
        행단위 잠금.
        OLTP(OnLine Transaction Processing)에 적합.
   Archive
    ◦ 트랜젝션, 인덱스 모두 지원하지 않음.
    ◦ 행 단위 잠금.
    ◦ 메모리에서 데이터압축을 수행하며 디스크에 기록.
    ◦ 원시로그수집에 적합.




      출처 : http://gywn.net/2011/12/mysql-three-features/
   Live replication
    ◦ 단순한 복사가 아닌 연속적인 업데이트 제공
   읽기 부하 분산 가능
    ◦ Read traffic이 많은 서비스에서 활용 가능
    ◦ 그러나 write는 master만 가능




                   출처 : http://gywn.net/2011/12/mysql-three-features/
   NoSQL
    ◦ SQL을 사용하지 않는 데이터베이스 소프트웨어를 총괄
      하는 용어
   문서지향 데이터베이스
    ◦ 문서 지향 데이터베이스는 테이블과 같은 경직된 구조에
      데이터를 저장하지 않고 느슨하게 정의된 문서에 데이터
      를 저장
    ◦ 관계형 데이터베이스 시스템(RDBMS) 테이블에서는 열을
      새로 추가하려면 테이블 자체의 정의를 변경해야 한다.
      그러나 문서를 사용하는 경우에는 기타 모든 문서를 변경
      하지 않고도 개별 문서에 속성을 새로 추가할 수 있다. 이
      는 문서 지향 데이터베이스가 일반적으로 스키마를 사용
      하지 않도록 설계되기 때문.
   JSON 형태의 문서 콜렉션으로 데이터를 저장
    ◦ JSON의 2진 버전인 BSON을 사용하여, 키/값 쌍으로 데
      이터를 유지하는 JSON 형태의 문서에 데이터를 저장
   SQL문을 MongoDB 쿼리 함수 호출로 매우 간단
    하게 변환 가능
   MySQL과 비슷한 마스터/슬레이브 복제
   자동 샤딩(Auto-sharding)을 이용한 수평적 확장

   fourSquare 등에서 사용.
   > use test
   switched to db test

   > db.colors.save({name:"red",value:"FF0000"});
   > db.colors.find();
   { "_id" : ObjectId("50ea1629da4e9474005af6fd"), "name" : "red", "value" : "FF0000" }
   > db.colors.find({name:"red"})
   { "_id" : ObjectId("50ea1629da4e9474005af6fd"), "name" : "red", "value" : "FF0000" }

   > db.colors.save({name:"white",value:"ffffff"});
   > db.colors.save({name:"green", value:"00ff00"});

   > db.colors.find()
   { "_id" : ObjectId("50ea1629da4e9474005af6fd"), "name" : "red", "value" : "FF0000" }
   { "_id" : ObjectId("512d95bf1d7035fc23f8b9f9"), "name" : "white", "value" : "ffffff" }
   { "_id" : ObjectId("512d95d41d7035fc23f8b9fa"), "name" : "green", "value" : "00ff00" }
   인덱스 걸기
    ◦ > db.alphabet.ensureIndex({code: 1});
    ◦ > db.alphabet.ensureIndex({char: 1});

   Skip, limit
    ◦ db.alphabet.find().limit(5); // first 5 rows
    ◦ db.alphabet.find().skip(5).limit(5); // next 5 rows
   > var red = db.colors.findOne({name:"red"});
   > red.value = "ff0000";
   ff0000
   > red
   {
         "_id" : ObjectId("50ea1629da4e9474005af6fd"),
         "name" : "red",
         "value" : "ff0000"
   }
   > db.colors.find()
   { "_id" : ObjectId("50ea1629da4e9474005af6fd"), "name" : "red", "value" : "FF0000" }
   { "_id" : ObjectId("512d95bf1d7035fc23f8b9f9"), "name" : "white", "value" : "ffffff" }
   { "_id" : ObjectId("512d95d41d7035fc23f8b9fa"), "name" : "green", "value" : "00ff00" }

   > db.colors.save(red);
   > db.colors.find()
   { "_id" : ObjectId("50ea1629da4e9474005af6fd"), "name" : "red", "value" : "ff0000" }
   { "_id" : ObjectId("512d95bf1d7035fc23f8b9f9"), "name" : "white", "value" : "ffffff" }
   { "_id" : ObjectId("512d95d41d7035fc23f8b9fa"), "name" : "green", "value" : "00ff00" }
   > db.colors.remove({name:"red"})
   > db.colors.find()
   { "_id" : ObjectId("512d95bf1d7035fc23f8b9f9"), "name" : "white", "value" : "ffffff" }
   { "_id" : ObjectId("512d95d41d7035fc23f8b9fa"), "name" : "green", "value" : "00ff00" }
   >
   > show collections
   colors
   system.indexes

   > db.colors.drop();
   true

   > show collections
   system.indexes

   > show dbs
   local (empty)
   test 0.203125GB

   > db.dropDatabase();
   { "dropped" : "test", "ok" : 1 }

   > show dbs
   local (empty)
   Sharding
    ◦ 데이터를 여러 서버에 분할하여 저장
   mongoDB에서는 auto sharding을 제공.
   Write가 빈번하고, 공간이 부족할 경우 사용.




               http://hochul.net/blog/%ED%8F%AC%EC%8A%A4%ED%80%98%EC%96%B4%EA%B0%80-mongodb%EB%A5%BC-%EC%84%A0%ED%83%9D%ED%95%9C-%EC%9D%B4%EC%9C%A0-auto-sharding/
Node.js DBMS short summary

Más contenido relacionado

La actualidad más candente

대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. restTerry Cho
 
20131217 html5
20131217 html520131217 html5
20131217 html5DK Lee
 
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발NAVER D2
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)DK Lee
 
Swc발표자료2 2(restful)
Swc발표자료2 2(restful)Swc발표자료2 2(restful)
Swc발표자료2 2(restful)마경근 마
 
Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)Sungjoon Yoon
 
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기Manjong Han
 
Json view 예제 설명
Json view 예제 설명Json view 예제 설명
Json view 예제 설명Hyung Eun Jin
 
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Circulus
 
막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js연웅 조
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)DK Lee
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)DK Lee
 
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론Terry Cho
 
진짜기초 Node.js
진짜기초 Node.js진짜기초 Node.js
진짜기초 Node.jsWoo Jin Kim
 
RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개Wonchang Song
 
Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Minchul Jung
 
Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVCArawn Park
 

La actualidad más candente (20)

대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest
 
20131217 html5
20131217 html520131217 html5
20131217 html5
 
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
 
Swc발표자료2 2(restful)
Swc발표자료2 2(restful)Swc발표자료2 2(restful)
Swc발표자료2 2(restful)
 
Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)Ksug 세미나 (윤성준) (20121208)
Ksug 세미나 (윤성준) (20121208)
 
4-2. ajax
4-2. ajax4-2. ajax
4-2. ajax
 
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
 
Json view 예제 설명
Json view 예제 설명Json view 예제 설명
Json view 예제 설명
 
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초
 
막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js
 
RESTful API
RESTful APIRESTful API
RESTful API
 
RESTful Java
RESTful JavaRESTful Java
RESTful Java
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
 
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론
 
진짜기초 Node.js
진짜기초 Node.js진짜기초 Node.js
진짜기초 Node.js
 
RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개
 
Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1
 
Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVC
 

Destacado

Python3 brief summary
Python3 brief summaryPython3 brief summary
Python3 brief summaryHoChul Shin
 
머신러닝 + 주식 삽질기
머신러닝 + 주식 삽질기머신러닝 + 주식 삽질기
머신러닝 + 주식 삽질기HoChul Shin
 
부동산 텔레그램 봇
부동산 텔레그램 봇부동산 텔레그램 봇
부동산 텔레그램 봇HoChul Shin
 
부동산 텔레그램봇 사내공유 @Tech
부동산 텔레그램봇 사내공유 @Tech부동산 텔레그램봇 사내공유 @Tech
부동산 텔레그램봇 사내공유 @TechHoChul Shin
 
ML + 주식 phase 2
ML + 주식  phase 2ML + 주식  phase 2
ML + 주식 phase 2HoChul Shin
 

Destacado (6)

Python3 brief summary
Python3 brief summaryPython3 brief summary
Python3 brief summary
 
머신러닝 + 주식 삽질기
머신러닝 + 주식 삽질기머신러닝 + 주식 삽질기
머신러닝 + 주식 삽질기
 
부동산 텔레그램 봇
부동산 텔레그램 봇부동산 텔레그램 봇
부동산 텔레그램 봇
 
부동산 텔레그램봇 사내공유 @Tech
부동산 텔레그램봇 사내공유 @Tech부동산 텔레그램봇 사내공유 @Tech
부동산 텔레그램봇 사내공유 @Tech
 
ML + 주식 phase 2
ML + 주식  phase 2ML + 주식  phase 2
ML + 주식 phase 2
 
Lua vs python
Lua vs pythonLua vs python
Lua vs python
 

Similar a Node.js DBMS short summary

[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'sung ki choi
 
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기sung ki choi
 
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석smartstudy_official
 
LevelDB 간단한 소개
LevelDB 간단한 소개LevelDB 간단한 소개
LevelDB 간단한 소개종빈 오
 
MySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxNeoClova
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)NAVER D2
 
log-monitoring-architecture.pdf
log-monitoring-architecture.pdflog-monitoring-architecture.pdf
log-monitoring-architecture.pdfSungkyun Kim
 
No sql survey report
No sql survey reportNo sql survey report
No sql survey reportGichan Lee
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016Amazon Web Services Korea
 
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017Amazon Web Services Korea
 
몽고디비교육1일차
몽고디비교육1일차몽고디비교육1일차
몽고디비교육1일차seung-hyun Park
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개흥배 최
 
Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Gruter
 
sqlserver7.0 데이타베이스
sqlserver7.0 데이타베이스sqlserver7.0 데이타베이스
sqlserver7.0 데이타베이스영빈 송
 
Ch1 일래스틱서치 클러스터 시작
Ch1 일래스틱서치 클러스터 시작Ch1 일래스틱서치 클러스터 시작
Ch1 일래스틱서치 클러스터 시작Minchul Jung
 
MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바NeoClova
 
Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터jinho park
 

Similar a Node.js DBMS short summary (20)

[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
 
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
 
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
 
Apache hive
Apache hiveApache hive
Apache hive
 
LevelDB 간단한 소개
LevelDB 간단한 소개LevelDB 간단한 소개
LevelDB 간단한 소개
 
MySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docx
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)
 
log-monitoring-architecture.pdf
log-monitoring-architecture.pdflog-monitoring-architecture.pdf
log-monitoring-architecture.pdf
 
Mongo db 최범균
Mongo db 최범균Mongo db 최범균
Mongo db 최범균
 
No sql survey report
No sql survey reportNo sql survey report
No sql survey report
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
 
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
 
몽고디비교육1일차
몽고디비교육1일차몽고디비교육1일차
몽고디비교육1일차
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개
 
Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)
 
sqlserver7.0 데이타베이스
sqlserver7.0 데이타베이스sqlserver7.0 데이타베이스
sqlserver7.0 데이타베이스
 
Ch1 일래스틱서치 클러스터 시작
Ch1 일래스틱서치 클러스터 시작Ch1 일래스틱서치 클러스터 시작
Ch1 일래스틱서치 클러스터 시작
 
MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바
 
SPARK SQL
SPARK SQLSPARK SQL
SPARK SQL
 
Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터
 

Node.js DBMS short summary

  • 2. SQLite  MySQL  MongoDB
  • 3. Overview ◦ 2000년 리처드 힙(D. Richard Hipp)과 그의 친구들이 만 들었습니다. 2000년 8월에 1.0 버전이 출시. ◦ Android, iOS등 거의 모든 모바일 디바이스에서 사용되 고 있는 DBMS. ◦ 그 외 firefox, dropbox, 등 왠만한 client-side 앱들도 거의 다 사용.
  • 4. 단일 데이터베이스 파일 ◦ SQLite에서는 데이터베이스의 모든 정보가 단 하나의 파 일에 저장됨.  즉, 테이블 스키마, 레코드 데이터, 인덱스와 같은 모든 정보 가 한 파일에 저장  단일 파일로 동작하기 때문에 프로그램이 다중 프로세스나 다중 스레드로 동작하는 경우 파일 잠금(lock) 이슈가 발생할 수 있음.
  • 5. 설정 파일 X ◦ SQLite는 라이브러리 형태로 제공되며, 별도의 설정 파일 이 없고 별도 서버를 구동하는 등의 사전 작업이 없음.
  • 6. 간결성 ◦ 매우 간결한 데이터베이스  모바일 client-side에 적합.  페이지 크기(page size) 제한이 있으며, 데이터베이스 파일 이 파일시스템에 파일로 저장되기 때문에 파일 크기 제한이 있는 경우 데이터베이스가 동작하는 데 문제가 생길 수 있음.
  • 7. 동시성 ◦ 읽기는 여러 프로세스에서 가능하지만, 쓰기는 한 순간에 오직 하나의 프로세스만 가능  모든 SQL문을 지원하지 않음. ◦ 예 : RIGHT / FULL OUTER JOIN, VIEW 수정, GRANT.
  • 8. npm install sqlite3
  • 9. SQL문 ◦ http://www.sqlite.org/lang.html를 참고  API ◦ https://github.com/developmentseed/node- sqlite3/wiki/API를 참고.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14. 세계에서 가장 많이 쓰이는 관계형 DBMS.  Mediawiki, drupal, bugzilla, …  mysql : http://www.mysql.com/  node-mysql : https://npmjs.org/package/mysql  server-client 구조. ◦ node-mysql을 설치하고 mysql-server도 설치해야함.
  • 15. 다양한 storage 엔진 ◦ MyISAM  인덱스만 메모리에 올려서 처리.  테이블 레벨 잠금.  동시다발적인 변경 작업에는 부적합함. ◦ InnoDB  인덱스/데이터를 모두 메모리에 올려서 처리.  트랜잭션 제공.  행단위 잠금.  OLTP(OnLine Transaction Processing)에 적합.
  • 16. Archive ◦ 트랜젝션, 인덱스 모두 지원하지 않음. ◦ 행 단위 잠금. ◦ 메모리에서 데이터압축을 수행하며 디스크에 기록. ◦ 원시로그수집에 적합.  출처 : http://gywn.net/2011/12/mysql-three-features/
  • 17. Live replication ◦ 단순한 복사가 아닌 연속적인 업데이트 제공  읽기 부하 분산 가능 ◦ Read traffic이 많은 서비스에서 활용 가능 ◦ 그러나 write는 master만 가능 출처 : http://gywn.net/2011/12/mysql-three-features/
  • 18.
  • 19. NoSQL ◦ SQL을 사용하지 않는 데이터베이스 소프트웨어를 총괄 하는 용어  문서지향 데이터베이스 ◦ 문서 지향 데이터베이스는 테이블과 같은 경직된 구조에 데이터를 저장하지 않고 느슨하게 정의된 문서에 데이터 를 저장 ◦ 관계형 데이터베이스 시스템(RDBMS) 테이블에서는 열을 새로 추가하려면 테이블 자체의 정의를 변경해야 한다. 그러나 문서를 사용하는 경우에는 기타 모든 문서를 변경 하지 않고도 개별 문서에 속성을 새로 추가할 수 있다. 이 는 문서 지향 데이터베이스가 일반적으로 스키마를 사용 하지 않도록 설계되기 때문.
  • 20. JSON 형태의 문서 콜렉션으로 데이터를 저장 ◦ JSON의 2진 버전인 BSON을 사용하여, 키/값 쌍으로 데 이터를 유지하는 JSON 형태의 문서에 데이터를 저장  SQL문을 MongoDB 쿼리 함수 호출로 매우 간단 하게 변환 가능  MySQL과 비슷한 마스터/슬레이브 복제  자동 샤딩(Auto-sharding)을 이용한 수평적 확장  fourSquare 등에서 사용.
  • 21. > use test  switched to db test  > db.colors.save({name:"red",value:"FF0000"});  > db.colors.find();  { "_id" : ObjectId("50ea1629da4e9474005af6fd"), "name" : "red", "value" : "FF0000" }  > db.colors.find({name:"red"})  { "_id" : ObjectId("50ea1629da4e9474005af6fd"), "name" : "red", "value" : "FF0000" }   > db.colors.save({name:"white",value:"ffffff"});  > db.colors.save({name:"green", value:"00ff00"});  > db.colors.find()  { "_id" : ObjectId("50ea1629da4e9474005af6fd"), "name" : "red", "value" : "FF0000" }  { "_id" : ObjectId("512d95bf1d7035fc23f8b9f9"), "name" : "white", "value" : "ffffff" }  { "_id" : ObjectId("512d95d41d7035fc23f8b9fa"), "name" : "green", "value" : "00ff00" }
  • 22. 인덱스 걸기 ◦ > db.alphabet.ensureIndex({code: 1}); ◦ > db.alphabet.ensureIndex({char: 1});  Skip, limit ◦ db.alphabet.find().limit(5); // first 5 rows ◦ db.alphabet.find().skip(5).limit(5); // next 5 rows
  • 23. > var red = db.colors.findOne({name:"red"});  > red.value = "ff0000";  ff0000  > red  {  "_id" : ObjectId("50ea1629da4e9474005af6fd"),  "name" : "red",  "value" : "ff0000"  }  > db.colors.find()  { "_id" : ObjectId("50ea1629da4e9474005af6fd"), "name" : "red", "value" : "FF0000" }  { "_id" : ObjectId("512d95bf1d7035fc23f8b9f9"), "name" : "white", "value" : "ffffff" }  { "_id" : ObjectId("512d95d41d7035fc23f8b9fa"), "name" : "green", "value" : "00ff00" }   > db.colors.save(red);  > db.colors.find()  { "_id" : ObjectId("50ea1629da4e9474005af6fd"), "name" : "red", "value" : "ff0000" }  { "_id" : ObjectId("512d95bf1d7035fc23f8b9f9"), "name" : "white", "value" : "ffffff" }  { "_id" : ObjectId("512d95d41d7035fc23f8b9fa"), "name" : "green", "value" : "00ff00" }
  • 24. > db.colors.remove({name:"red"})  > db.colors.find()  { "_id" : ObjectId("512d95bf1d7035fc23f8b9f9"), "name" : "white", "value" : "ffffff" }  { "_id" : ObjectId("512d95d41d7035fc23f8b9fa"), "name" : "green", "value" : "00ff00" }  >
  • 25. > show collections  colors  system.indexes   > db.colors.drop();  true   > show collections  system.indexes   > show dbs  local (empty)  test 0.203125GB   > db.dropDatabase();  { "dropped" : "test", "ok" : 1 }   > show dbs  local (empty)
  • 26. Sharding ◦ 데이터를 여러 서버에 분할하여 저장  mongoDB에서는 auto sharding을 제공.  Write가 빈번하고, 공간이 부족할 경우 사용. http://hochul.net/blog/%ED%8F%AC%EC%8A%A4%ED%80%98%EC%96%B4%EA%B0%80-mongodb%EB%A5%BC-%EC%84%A0%ED%83%9D%ED%95%9C-%EC%9D%B4%EC%9C%A0-auto-sharding/