ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • mongo db를 사용하는 이유
    백엔드 관련 강의 공부/채팅 시스템 - mongo db 2024. 2. 22. 16:23

    프로젝트할 때 가장 많이 사용했던 mysql와 같은 RDBMS의 장점은 테이블 간의 참조로 인한 데이터의 공유이다.

     

    Nosql인 mongo db는 컬렉션이 JSON 형태로 저장된다.

     

     

    mongo db에서는 테이블이 아니라 '컬렉션'이라고 한다.

    mongo db는 컬렉션과 문서라는 용어가 있는데, 문서는 아래의 JSON 형식의 key-value 쌍을 가지는 Binary-JSON 문서이다. 컬렉션은 문서들의 집합이라고 생각하면 된다.

     

     

     

    user : [
    { id : 1, username : aaa, Phone : 010-1111-1111 },
    { id : 2, username : bbb, Phone : 010-2222-2222 }
    ]

    문서는 컬렉션에 위와 같은 형태로 저장된다.

     

    mongo db는 FK로 인한 외래키 참조가 아니라 username을 직접 집어넣는다는 장점이 있다.

     

    Board : [
    { id : 1, title : 제목, content : 내용, username : aaa, Phone : 010-1111-1111 },
       ....(생략)
    ]

    첫 번째 컬럼을 보면 Board의 값인 id, title, content를 제외하고도 user의 값인 username과 Phone을 그대로 가져온다는 것을 볼 수 있다.

     

    값이 중복되지만 이렇게 넣는 것의 장점은 RDBMS는 원래 테이블의 FK를 이용해서 다른 테이블까지 2개의 테이블을 조회해야하는 반면에 mongo db는 외래키가 아니라 그 데이터의 값이 실제로 들어있기 때문에 한 번에 select가 된다.

     

     

    장점

    데이터를 넣을 때는 별로 좋지 않지만 select할 때에는 굉장히 좋은 방식이다.

     

    많은 사람이 댓글을 달 수 있는 인스타그램, 채팅 서버같은 시스템에서는 insert 하기가 조금 별로지만 그래도 많은 데이터들을 select할 때 편리한 mongo db를 사용하면 장점이 극대화가 된다.

     

     

     

     

    단점

    데이터의 일관성을 유지하기 힘들다.

     

    만약 user1의 이름을 ccc로 변경했는데, user 컬렉션에는 변경을 했지만 Board 컬렉션에서는 변경되지 않았을 때의 상황이다. 그렇기 때문에 잘 설계해야한다.

     

Designed by Tistory.