Your SlideShare is downloading. ×
SKP 신호철
   SQLite   MySQL   MongoDB
   Overview    ◦ 2000년 리처드 힙(D. Richard Hipp)과 그의 친구들이 만      들었습니다. 2000년 8월에 1.0 버전이 출시.    ◦ Android, iOS등 거의 모든 모바일 디...
   단일 데이터베이스 파일    ◦ SQLite에서는 데이터베이스의 모든 정보가 단 하나의 파      일에 저장됨.      즉, 테이블 스키마, 레코드 데이터, 인덱스와 같은 모든 정보       가 한 파일에...
   설정 파일 X    ◦ SQLite는 라이브러리 형태로 제공되며, 별도의 설정 파일      이 없고 별도 서버를 구동하는 등의 사전 작업이 없음.
   간결성    ◦ 매우 간결한 데이터베이스     모바일 client-side에 적합.     페이지 크기(page size) 제한이 있으며, 데이터베이스 파일      이 파일시스템에 파일로 저장되기 때문에 ...
   동시성    ◦ 읽기는 여러 프로세스에서 가능하지만, 쓰기는 한 순간에      오직 하나의 프로세스만 가능   모든 SQL문을 지원하지 않음.    ◦ 예 : RIGHT / FULL OUTER JOIN, VI...
   npm install sqlite3
   SQL문    ◦ http://www.sqlite.org/lang.html를 참고   API    ◦ https://github.com/developmentseed/node-      sqlite3/wiki/A...
   세계에서 가장 많이 쓰이는 관계형 DBMS.   Mediawiki, drupal, bugzilla, …   mysql : http://www.mysql.com/   node-mysql :    https:/...
   다양한 storage 엔진    ◦ MyISAM      인덱스만 메모리에 올려서 처리.      테이블 레벨 잠금.      동시다발적인 변경 작업에는 부적합함.    ◦ InnoDB        인덱스...
   Archive    ◦ 트랜젝션, 인덱스 모두 지원하지 않음.    ◦ 행 단위 잠금.    ◦ 메모리에서 데이터압축을 수행하며 디스크에 기록.    ◦ 원시로그수집에 적합.      출처 : http://gy...
   Live replication    ◦ 단순한 복사가 아닌 연속적인 업데이트 제공   읽기 부하 분산 가능    ◦ Read traffic이 많은 서비스에서 활용 가능    ◦ 그러나 write는 master만...
   NoSQL    ◦ SQL을 사용하지 않는 데이터베이스 소프트웨어를 총괄      하는 용어   문서지향 데이터베이스    ◦ 문서 지향 데이터베이스는 테이블과 같은 경직된 구조에      데이터를 저장하지 않...
   JSON 형태의 문서 콜렉션으로 데이터를 저장    ◦ JSON의 2진 버전인 BSON을 사용하여, 키/값 쌍으로 데      이터를 유지하는 JSON 형태의 문서에 데이터를 저장   SQL문을 MongoDB ...
   > use test   switched to db test   > db.colors.save({name:"red",value:"FF0000"});   > db.colors.find();   { "_id" ...
   인덱스 걸기    ◦ > db.alphabet.ensureIndex({code: 1});    ◦ > db.alphabet.ensureIndex({char: 1});   Skip, limit    ◦ db.al...
   > var red = db.colors.findOne({name:"red"});   > red.value = "ff0000";   ff0000   > red   {         "_id" : Objec...
   > db.colors.remove({name:"red"})   > db.colors.find()   { "_id" : ObjectId("512d95bf1d7035fc23f8b9f9"), "name" : "wh...
   > show collections   colors   system.indexes   > db.colors.drop();   true   > show collections   system.indexe...
   Sharding    ◦ 데이터를 여러 서버에 분할하여 저장   mongoDB에서는 auto sharding을 제공.   Write가 빈번하고, 공간이 부족할 경우 사용.               http:/...
Node.js DBMS short summary
Node.js DBMS short summary
Node.js DBMS short summary
Node.js DBMS short summary
Node.js DBMS short summary
Node.js DBMS short summary
Upcoming SlideShare
Loading in...5
×

Node.js DBMS short summary

1,556

Published on

Short Summary of node.js DBMS - sqlite3, mysql, mongodb.

팀내발표용 초간단 node.js dbms 정리자료

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,556
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Node.js DBMS short summary"

  1. 1. SKP 신호철
  2. 2.  SQLite MySQL MongoDB
  3. 3.  Overview ◦ 2000년 리처드 힙(D. Richard Hipp)과 그의 친구들이 만 들었습니다. 2000년 8월에 1.0 버전이 출시. ◦ Android, iOS등 거의 모든 모바일 디바이스에서 사용되 고 있는 DBMS. ◦ 그 외 firefox, dropbox, 등 왠만한 client-side 앱들도 거의 다 사용.
  4. 4.  단일 데이터베이스 파일 ◦ SQLite에서는 데이터베이스의 모든 정보가 단 하나의 파 일에 저장됨.  즉, 테이블 스키마, 레코드 데이터, 인덱스와 같은 모든 정보 가 한 파일에 저장  단일 파일로 동작하기 때문에 프로그램이 다중 프로세스나 다중 스레드로 동작하는 경우 파일 잠금(lock) 이슈가 발생할 수 있음.
  5. 5.  설정 파일 X ◦ SQLite는 라이브러리 형태로 제공되며, 별도의 설정 파일 이 없고 별도 서버를 구동하는 등의 사전 작업이 없음.
  6. 6.  간결성 ◦ 매우 간결한 데이터베이스  모바일 client-side에 적합.  페이지 크기(page size) 제한이 있으며, 데이터베이스 파일 이 파일시스템에 파일로 저장되기 때문에 파일 크기 제한이 있는 경우 데이터베이스가 동작하는 데 문제가 생길 수 있음.
  7. 7.  동시성 ◦ 읽기는 여러 프로세스에서 가능하지만, 쓰기는 한 순간에 오직 하나의 프로세스만 가능 모든 SQL문을 지원하지 않음. ◦ 예 : RIGHT / FULL OUTER JOIN, VIEW 수정, GRANT.
  8. 8.  npm install sqlite3
  9. 9.  SQL문 ◦ http://www.sqlite.org/lang.html를 참고 API ◦ https://github.com/developmentseed/node- sqlite3/wiki/API를 참고.
  10. 10.  세계에서 가장 많이 쓰이는 관계형 DBMS. Mediawiki, drupal, bugzilla, … mysql : http://www.mysql.com/ node-mysql : https://npmjs.org/package/mysql server-client 구조. ◦ node-mysql을 설치하고 mysql-server도 설치해야함.
  11. 11.  다양한 storage 엔진 ◦ MyISAM  인덱스만 메모리에 올려서 처리.  테이블 레벨 잠금.  동시다발적인 변경 작업에는 부적합함. ◦ InnoDB  인덱스/데이터를 모두 메모리에 올려서 처리.  트랜잭션 제공.  행단위 잠금.  OLTP(OnLine Transaction Processing)에 적합.
  12. 12.  Archive ◦ 트랜젝션, 인덱스 모두 지원하지 않음. ◦ 행 단위 잠금. ◦ 메모리에서 데이터압축을 수행하며 디스크에 기록. ◦ 원시로그수집에 적합.  출처 : http://gywn.net/2011/12/mysql-three-features/
  13. 13.  Live replication ◦ 단순한 복사가 아닌 연속적인 업데이트 제공 읽기 부하 분산 가능 ◦ Read traffic이 많은 서비스에서 활용 가능 ◦ 그러나 write는 master만 가능 출처 : http://gywn.net/2011/12/mysql-three-features/
  14. 14.  NoSQL ◦ SQL을 사용하지 않는 데이터베이스 소프트웨어를 총괄 하는 용어 문서지향 데이터베이스 ◦ 문서 지향 데이터베이스는 테이블과 같은 경직된 구조에 데이터를 저장하지 않고 느슨하게 정의된 문서에 데이터 를 저장 ◦ 관계형 데이터베이스 시스템(RDBMS) 테이블에서는 열을 새로 추가하려면 테이블 자체의 정의를 변경해야 한다. 그러나 문서를 사용하는 경우에는 기타 모든 문서를 변경 하지 않고도 개별 문서에 속성을 새로 추가할 수 있다. 이 는 문서 지향 데이터베이스가 일반적으로 스키마를 사용 하지 않도록 설계되기 때문.
  15. 15.  JSON 형태의 문서 콜렉션으로 데이터를 저장 ◦ JSON의 2진 버전인 BSON을 사용하여, 키/값 쌍으로 데 이터를 유지하는 JSON 형태의 문서에 데이터를 저장 SQL문을 MongoDB 쿼리 함수 호출로 매우 간단 하게 변환 가능 MySQL과 비슷한 마스터/슬레이브 복제 자동 샤딩(Auto-sharding)을 이용한 수평적 확장 fourSquare 등에서 사용.
  16. 16.  > 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" }
  17. 17.  인덱스 걸기 ◦ > 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
  18. 18.  > 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" }
  19. 19.  > db.colors.remove({name:"red"}) > db.colors.find() { "_id" : ObjectId("512d95bf1d7035fc23f8b9f9"), "name" : "white", "value" : "ffffff" } { "_id" : ObjectId("512d95d41d7035fc23f8b9fa"), "name" : "green", "value" : "00ff00" } >
  20. 20.  > 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)
  21. 21.  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/

×