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.
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 등에서 사용.
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/