- NoSQL 데이터베이스는 전통적인 관계형 데이터베이스보다 덜 제한적인 일관성
모델을 이용하는 데이터의 저장 및 검색을 위한 매커니즘을 제공
- 카를로스 트로찌(Carlo Strozzi)
- 1998년 표준SQL 인터페이스를 채용하지않은 자신의 경량 오픈 소스
관계형데이터베이스를 NoSQL이라 명명- 2009년 라스트 FM의 요한 오스칼손(Johan Oskarsson)
- 오픈소스 분산 데이터베이스를 논하기 위한 미트업 행사를 조직하면서, 이와 같은 데이터베이스를 NoSQL이라고 부름.- 고전적인 관계형데이터베이스 시스템의 주요 특성을 보장하는 ACID 제공을 주로 시도 하지않은 수 많은 비관계형, 분산 데이터 자료 공간의 등장에 따라 이 이름이 사용
- 클라우드 컴퓨팅 환경에 적합
1) Open Source
2) 하드웨어 확장에 유연한 대처 가능
3) RDBMS에 비해 저렴한 비용으로 분산 처리와 병렬처리 가능- 유연한데이터모델
1) 비정형 데이터 구조 설계로 설계 비용감소
2) 관계형 데이터베이스의 Relationship과 Join 구조를 Linking과 Embedded로 구현하여 성능이 빠름- Big Data 처리에 효과적
1) Memory Mapping 기능을 통해 Read/Write가 빠름.
2) 전형적인 OS와 Hardware에 구축 가능.
3)기존 RDB와 동일하게 데이터 처리 가능
- Disney Interactive Media Group
- Mysql -> MongoDB
- Mysql 바이너리 데이터 저장 한계 및 성능 문제
- 다양한 Game, Media Data 관리시스템에 적용
- ReplicaSets & Auto Sharding 유연성과 확장성 활용- Music Television
- 비디오/오디오 Content Management System에 적용
- MySQL -> NoSQL로 전환
- MTV의 계층적 데이터구조에 적합한 데이터 모델 활용
- 쉬운 Query와Index를 이용한 빠른 검색기능 활용- Business Media Company(Forbes)
- 원고 자동 수집 및 발행 시스템에 적용
- Oracle DB -> NoSQL로 전환
- 정형적인 Static Data관리에서 Dynamic Data 관리로 전환하면서 발생하는 재설계 및 구축비용 절감 목적으로 활용- Shutterfly
- 인터넷 기반 사진 정보 및 개인출판 서비스 사이트
- Oracle DB를 NoSQL로 전환(20TB)
- 100만명의 고객/60억개의 이미지/초당10,000개 트랜잭션 처리에서 발생하는 구축/관리 비용 및 성능 문제가 이슈
- Humongos라는 회사의 제품명이 었으며 10gen으로 회사명이 변경 -> 현재 Mongodb.inc로 변경
- JSON Type의 데이터 저장구조를 제공
- (Standard ECMA-262 3rdEdition-1999을 근거로하는 JavaScript 형태의 데이터 표현방식을 근거로한다. [European Computer Manufacturers Association])- Sharding(분산)/Replica(복제) 기능을 제공.
- MapReduce(분산/병렬처리) 기능을 제공.
- CRUD(Create, Read, Update, Delete)위주의 다중 트랜잭션처리도 가능
- Memory Mapping기술을기반으로Big Data 처리에 탁월한 성능을 제공
- MongoDB의 인기
- 빠른 속도와 확장성
- 친숙함과 이용의 편리성
- 쉽고 빠른 분산 컴퓨팅 환경 구성
- 스키마가 자주 바뀌는 환경
- 분산 컴퓨팅 환경
- download url: https://www.mongodb.com
- Software -> Community Server
- Version : 5.0.2
- Platform : Windows
- Package : zip- Download
- 압축해제 : c:\monogdb
- Path 연결 : 고급시스템 설정보기-> 환경변수 ->path 추가
- 데이터베이스 폴더 작성 : c:\mongodb\data
- 버전 확인 및 도움말 보기
- C:\mongod --help
- C:\mongod --version
- 구글에서 mongodb 검색 후 공식사이트로 들어갑니다.
- 설정 값 확인 후 압축파일을 다운로드를 합니다.
- 다운로드를 한 파일을 내가 원하는 위치에서 압축해제를 합니다.
- 폴더 이름을 mongodb로 바꿔주고 내부에 data 폴더를 하나 새로 만들어줍니다.
- 고급 시스템설정에 들어가서 환경변수에서 시스템 Path에 등록해줍니다.
- cmd에서 mongod --version을 입력해서 설치가 잘 되었는지 확인해줍니다.
- mongod --dbpath 경로 를 입력해줍니다.
- mongod --dbpath c:\devtools\util\mongodb\data
- mongodb 서버를 실행하는 것입니다.
- cmd를 새로 열어서 mongo를 입력합니다.
- mongodb가 실행되었습니다.
- use test를 입력하면 test db로 전환이 됩니다.
- show dbs를 입력하면 내부에 정보를 볼 수 있습니다.
- show collections를 입력합니다.
- collections에 아무것도 없기 때문에 아무것도 뜨지 않습니다.
- db.emp.inserOne({eno:1, name:'홍길동', dept:'영업'}) 을 입력하면 emp DB에 1개의 데이터를 집어넣습니다.
- position을 추가해서 입력해도 잘 들어갑니다.
- db.emp.find( )를 사용해서 내가 추가한 데이터를 확인할 수 있습니다.
- db.emp.insert({eno:3, name:'aaaa', dept:'영업'}) 을 입력해도 데이터가 입력이 됩니다.
- db.emp.find().pretty( )를 사용하면 위와 같은 형식으로 데이터를 볼 수 있습니다.
- mongodb를 종료하기 위해서는 use admin을 이용해서 db를 전환해줍니다.
- db.shutdownServer( )를 입력하면 서버를 실행한 cmd에서 서버가 종료되고 명령프롬프트로 돌아온 것을 볼 수 있습니다.
- mongodb를 실행시킨 곳에서 exit를 입력하면 bye가 출력된 후 명령프롬프트로 전환됨으로써 완전히 종료되었습니다.
- 새 console 실행
- mongod –-dbpath c:\devtools\util\mongodb\data
// mongod –-dbpath c:\mongodb\data
- 새 console 실행
- C:>mongo
- C:>use admin
- C:>db.shutdownServer()
- Exit 또는 ctrl+c
- Document 기반 데이터베이스
- Database > Collection > Document > Field 계층으로 구성
- RDBMS의 Row에 해당
- Key, Value들의 쌍으로 이루어짐
- ObjectId
- RDBMS의 Primary Key와 같이 고유한 키를 의미
- 차이점은 Primary Key는 DBMS가 직접 부여, ObjectId는 클라이언트에서 생성
- 유닉스 시간, (기기Id+프로세스Id), 카운트로 구성
- Json형태의 문서를 바이너리 형태로 인코딩한 바이트 문자열