programming/spring

[Spring] Spring과 MongoDB 연동


16. Spring과 MongoDB 연동


16.1 NoSQL

Not Only SQL : SQL만을 사용하지 않는 데이터베이스 관리 시스템


기존의 RDBMS의 한계를 극복하기 위해 만들어진 새로운 형태의 데이터저장소

RDBMS처럼 고정된 스키마가 존재하지 않으며 join을 사용할 수 없음

비정형 데이터를 저장하기 위해 최적화된 저장 방법을 제공함


현실 세계의 모든 데이터가 일정한 틀과 형태를 가지고 있지는 않다.

대화, 채팅, 음악 등

테이블을 만드는 것은 공통적인 속성들을 선택하는 작업


종류 - MongoDB, Cassandra, Redis 등


16.2 MongoDB


16.2.1 개요

NoSQL로 분류되는 Cross Flatform Document 지향 데이터베이스 시스템

전통적인 테이블-관계 기반의 RDBMS처럼 스키마가 고정된 구조가 아닌 JSON 형태의 동적 스키마형 문서를 사용함


* 몽고DB 사용 예 - 이베이, 뉴욕 타임즈 등


Collection 안에 Document 데이터 저장

Document는 일정한 틀을 가지지 않음

Document 내부의 Field 자료형 형식이 달라도 입력 가능하며 각 Document들은 모두 일관된 Field를 가지지 않아도 됨


Table → Collection

Record → Document


16.2.2 설치

http://mongodb.com


Community Server 다운로드


C++로 작성된 오픈소스 문서지향(Document Oriented) Cross-platform 데이터베이스


https://www.mongodb.com/download-center?jmp=homepage#community


Windows Server 2008용 버전 설치


서버가 아닌 일반적인 Windows 7, 10에도 설치 가능함


Complete 으로 설치


mongodb compass는 설치하지 않음(체크 해제)


16.2.3 실행


mongod.exe 서버 실행 파일


mongo.exe 쉘 프로그램


c:\data\db 디렉토리 생성(몽고 db에서 기본적으로 참조하는 디렉토리)


(변경하려면 mongod --dbpath "c:\mongodb\data\db")


cd C:\Program Files\MongoDB\Server\3.6\bin


서버 실행

mongod.exe


새로운 cmd 창을 열어서 몽고디비 쉘 실행

mongo.exe


4) 기본 사용 방법


* sql과의 비교


Insert

SQL            : insert into users ("name", "city") values("terry", "seoul")

Mongo DB   : db.users.insert({_id: "terry", city: "seoul"})


Select

SQL            : select * from users where id="terry"

Mongo DB   : db.users.find({_id: "terry"})


Update

SQL            : update users set city="busan" where _id ="terry"

Mongo DB   : db.users.update( {_id: "terry"}, {$set :{ city: "Busan" } } )


Delete

SQL            : delete from users where _id="terry"

Mongo DB   : db.users.remove({_id: "terry"})


-- DB 목록

show dbs


-- DB 생성

use testdb


다. MongoDB 인증 설정


1) 관리자 계정 만들기

use admin

db.createUser(

{

user: "admin",

pwd: "1234",

roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]

})


admin 데이터베이스가 생성되고 admin 관리자 계정이 생성된다.


사용권한 참조

https://docs.mongodb.com/manual/core/authorization/


Ctrl+C을 눌러서 mongod.exe와 mongo.exe 프로그램을 종료시킴


mongoDB 서버 인증모드로 재시작


mongod --auth


관리자 계정으로 접속


mongo --port 27017 -u "admin" -p "1234" --authenticationDatabase "admin"


또는


mongo 로 접속한 후

use web

db.auth("web", "1234")

→ 1이 출력되면 인증 성공


라. 실습예제(기본 설정)


1) pom.xml    04;50