MongoDB

개발하는 구황작물·2024년 3월 20일
0

MongoDB는 데이터 레코드를 BSON(JSON의 이진표현) 형식으로 저장한다.

{
               _id: ObjectId("5099803df3f4948bd2f98391"),
               name: { first: "Alan", last: "Turing" },
               birth: new Date('Jun 23, 1912'),
               death: new Date('Jun 07, 1954'),
               contribs: [ "Turing machine", "Turing test", "Turingery" ],
               views : NumberLong(1250000)
            }

Document, Collection

Document : RDBMS의 row

Collection: Document의 그룹, RDBMS의 table

BSON

JSON의 이진 직렬화 형식으로 분산 시스템에서 데이터를 저장하고 전송하기 위해 만들어짐
이진 형식이라 텍스트 형식보다 데이터 크기가 작고 처리 속도가 빠르다.

Embedded vs References

embedded

embedded 가 사용되는 경우

  • 1:1 인 경우
  • 데이터가 작은 경우

references

References 가 사용되는 경우

  • 데이터 변경이 자주 일어나거나
  • 중복이 많이 일어나거나
  • 1:N , N:M인 경우

1:1의 경우 Embedded로 참조를 한다.

1:N인 경우 Embedded vs Link 둘 중 하나를 선택하면 되는데 아래와 같은 기준에 따라 선택하면 된다.

Join 성능

Mongodb에는 RDBMS 와 달리 JOIN 대신 lookup를 사용한다.

Mongodb의 Join은 RDBMS의 JOIN 보다 성능이 느리다.

이유는 RDBMS의 JOIN은 병합 조인, 해시 조인 등 여러 조인 전략 중 옵티마이저를 통해 최적의 전략을 선택하나 MongoDB는 단일 조인 전략만 사용한다고 한다.

출처

그래서 JOIN 전 $match나 $project 등을 통해 최대한 JOIN 대상 데이터를 줄이라고 한다.

Shading

MongoDB는 샤딩이라는 방법으로 수평 확장을 구현한다.

이러한 방법으로 시스템의 내결함성과 가용성을 향상 시킬 수 있으나 데이터가 균등하게 저장이 되는지, 중복이 발생하는지에 대해 확인해야 하므로 복잡성이 증가할 수 있다.

Replication

하나의 데이터베이스 (Primary) 가 Read/Write를 진행하고 다른 데이터베이스에게 데이터를 복제하는 방식

Primary DB가 중단된 경우 Secondary 중 하나를 Primary로 승격시킬 수 있다.

시스템 가용성과 내결함성이 크게 향상된다.

profile
어쩌다보니 개발하게 된 구황작물

0개의 댓글