잠깐! 알고 넘어가기
MongoDB 설계의 주요 특징
1. 관계형 DB는 정규화를 통해 데이터 중복을 제거하여 무결성을 보장하는 설계기법을 지향한다.
하지만 이러한 중복제거는 join을 필요로 하게 만들고 join의 사용은 성능저하를 만들어낼 수 있다.
따라서 NOSQL은 중복을 허용한다
2. 관계형 DB는 1:n관계가 대부분인 반면 NoSQL은 n:m(多:多)관계구조를 설계할 수 있다
3. 스키마(Schema) 없음: 테이블에 대한 메타데이터 (DB설계)
->유연한 설계가 가능
4. 서버가 꽉 차서 새로은 서버를 설치할 때 Sharding을 이용하면 서버구조가 유연하기 때문에 연결이 쉽다.
emp테이블(사원정보)
eno ename sal position deptno
1 aaa 1000 부장 10
2 bbb 800 과장 10
3 ccc 800 과장 20
4 ddd 750 과장 30
5 eee 500 대리 20
6 fff 400 대리 10
dept테이블(부서정보)
deptno dname loc
10 영업 1층
20 기획 2층
30 홍보 3층
collection:dept_emp
부서정보안에 사원정보 넣기
다음 내용을 입력해 볼건데요
deptno10을 잘못입력했었는데 update(수정)하는 방법도 함께 들어있습니다 (2번째 그림)
deptno20 첫 줄 =>db.dept_emp.insert입니다(아래 코드와 같이 수정필요)
MongoDB Enterprise > db.dept_emp.insert({
... deptno:20,
... dname:"기획",
... loc:"2층",
... emps:[
... {eno:3,ename:"ccc",sal:800,position:"과장"},
... {eno:5,ename:"eee",sal:500,position:"대리"}
... ]
... })
WriteResult({ "nInserted" : 1 })
MongoDB Enterprise > db.dept_emp.insert({
... deptno:30,
... dname:"홍보",
... loc:"3층",
... emps:[
... {eno:4,ename:"ddd",sal:750,position:"대리"}
... ]
... })
WriteResult({ "nInserted" : 1 })
이 방식을 insert로 하면 위에 했던 방식과 같은 rich document 방식인데
deptno20,30은 Embedded Document방식,
deptno10은 Extent Document 방식입니다
결과값 .find().pretty()로 출력하기
Rich Document구조 장점
쿼리가 단순해지고 Join문 실행이 필요없어 데이터 저장에 효과적
빠른성능
도큐먼트 크기는 최대 16MB (끼워지는 데이터)
데이터 보안에 효과적
'IT 프로그래밍 > 빅데이터' 카테고리의 다른 글
[Bigdata 저장] MongoDB : Sharding 샤딩 환경설정 (0) | 2021.03.09 |
---|---|
[Bigdata 저장] MongoDB : Link구조 한번에정리 (0) | 2021.03.09 |
[Bigdata] MongoDB 설치 및 사용 (CRUD로 정리끝!) (0) | 2021.03.05 |
[Bigdata] 쉽고 간단한 MongoDB 설치방법 (0) | 2021.03.05 |
[Bigdata] 공공데이터포털 활용하기 (0) | 2021.03.05 |