IT회사 팀사람들과 스터디 하기 4차, 몽고DB, mongo DB

     

목차

     

     

    🔥 스터디의 시작

    어느덧 2023년 4번째 스터디까지 오게 됐다. ( 실제로 글을 쓰는 시점에는 5번째를 하고 있지만.. ㅋㅋㅋ )

     

    4번째는 NoSQL DB를 선택했는데, NoSQL DB 중에 어떤 걸 할지 고르다가 가장 많이 들어본 몽고 DB를 선택하게 되었다. 대학생들이나 취준생들 멘토링을 하다 보면 대부분 몽고 DB를 사용했다는 걸 많이 볼 수 있었는데, 그때마다 왜 mysql을 안 하고 몽고 DB를 했을까?라는 생각이 많이 들었다. 이번 기회에 알게 되었는데 그건 아래에 설명... ㅋㅋ

     

    그리고 NoSQL에 대해서 난 그냥 '노 에스큐엘'이라고 읽었는데 팀원 중에 한 명이 '노시클'이라고 읽어서 간지나 보였다. 😎 우리 모두 노시클이라고 발음하도록 하자. 

     

     

    📕 책 소개

    책은 한빛미디어에서 나온 몽고DB 완벽 가이드이다. 개인적으로 한빛미디어 책을 싫어한다.. 책이 너무 딱딱하고 지루해,,

     

     

     

    목차는 너무너무 길어서 큰제목만 적었다.

     

    PART I 몽고DB 시작

    CHAPTER 1 몽고DB 소개
    CHAPTER 2 몽고DB 기본
    CHAPTER 3 도큐먼트 생성, 갱신, 삭제
    CHAPTER 4 쿼리

     

    PART II 몽고DB 개발

    CHAPTER 5 인덱싱
    CHAPTER 6 특수 인덱스와 컬렉션 유형
    CHAPTER 7 집계 프레임워크
    CHAPTER 8 트랜잭션
    CHAPTER 9 애플리케이션 설계

     

    PART III 복제
    CHAPTER 10 복제 셋 설정
    CHAPTER 11 복제 셋 구성 요소
    CHAPTER 12 애플리케이션에서 복제 셋 연결
    CHAPTER 13 관리


    PART IV 샤딩
    CHAPTER 14 샤딩 소개
    CHAPTER 15 샤딩 구성
    CHAPTER 16 샤드 키 선정
    CHAPTER 17 샤딩 관리

    PART V 애플리케이션 관리
    CHAPTER 18 애플리케이션 작업 확인
    CHAPTER 19 몽고DB 보안 소개
    CHAPTER 20 영속성

    PART VI 서버 관리
    CHAPTER 21 몽고DB 시작과 중지
    CHAPTER 22 몽고DB 모니터링
    CHAPTER 23 백업
    CHAPTER 24 몽고DB 배포

     

     

    페이지수도 거의 600페이지가 넘는다!! 하지만 역시나 우리는 필요한 챕터만 골라빼 먹기를 하기 때문에 총 4주에 걸쳐 끝내기로 했다. 😏

     

     

    📝 어떤 것을 배웠나? (기억나는 내용 위주)

    1장 몽고DB 소개

    몽고 DB란 무엇인가, 도큐먼트 DB란 무엇인가 라는 내용이다. RDB에 너무 익숙해져서 도큐먼트 DB에 대한 이미지가 확실히 떠오르지 않는다. 그냥 머릿속에 두 개의 칼럼이 있고 하나는 id, 하나는 아무거나 들어가는 TEXT인 것 같은 RDB 같은데 말이지... ㅋㅋㅋ 

     

    2장 몽고DB 기본

    mongo shell이라는 cli툴을 제공해 줘서 생각보다 쉽게 테스트해 볼 수 있다. mysql cli랑 비슷한데 더 유저 친화적인 느낌이랄까..?

     

     

    5장 인덱스

    몽고 DB에 쿼리를 날리면 어떤 index를 선택할지 정하는 방법이 흥미로웠다. 가지고 있는 인덱스 중에 쿼리문에 맞는 거 다 골라서 경합을 시키고 거기서 최고의 결과를 내는 것을 선택한다고 한다. ㅋㅋㅋ 즉 아무리 쿼리랑 잘 매칭이 되어도 속도가 안 나오는 인덱스는 탈락이라는 것.

     

    이게 인덱스와 실제 서비스에서 사용하는 쿼리가 항상 일치된다는 보장이 없기 때문에 괜찮은 방법인 것 같다. 

     

    6장 특수 인덱스와 컬렉션 유형

    공간정보를 저장하는 인덱스를 제공한다는 것에 놀람.. 옛날에 대학원시절 수자원 연구소 쪽이랑 좌표나 시계열 관련 데이터를 추출해서 관리하는 작업을 했었는데, 이때 몽고 DB를 쓰면 효율적으로 데이터를 적재할 수 있지 않을까?라는 생각이 문득,,

     

    8장 트랜잭션

    DB 하면 트랜잭션이 가장 중요하긴 한데, 대규모의 형식이 없는 데이터베이스인 몽고 DB에서 트랜잭션을 찾으면 안 될 것 같다는 개인적인 생각... 물론 몽고 DB에서 트랜잭션을 지원하긴 하는데, 스펙상 지원할 뿐 성능이나 안정성이 높진 않은 것 같다. 트랜잭션이 필요하면 다른 DB를 쓰는 게 좋을 것 같다. 몽고 DB는 조회를 많이 하는 서비스에 좋아 보임

     

     

    15장 샤딩

    15장 이후 샤딩에 관한 내용이 나온다. 너무 이론적인 내용이라 그런가 보다~하고 봤음. 몽고 DB는 편하게 아주 자동으로 샤딩을 지원하는데 '자동 샤딩'이라는 걸 지원한다고 한다. 알아서 분배해 줌 ㅋㅋ. 근데 중간중간 예외상황이 있어 수동으로 데이터를 이동해줘야 하는 경우가 있다고 한다. 믿을만한 건가... ㅋㅋㅋ 

     

     

     

    🙌 스터디 후기

    이름만 들어본 몽고 DB에 대해서 책을 읽고 나니 뭔가 이해가 많이 된 느낌이다. 몽고 DB를 왜 주니어가 많이 쓰는지 알게 되었다. 이게 아주 쓰기 편하다. 마치 튜토리얼처럼 그냥 설치만 하면 바로 쓸 수 있고, RDB처럼 컬럼이나 초기 세팅이 필요 없다. 왜냐면 '노시클'이기 때문에. 아무거나 그냥 넣으면 들어간다 ㅋㅋㅋ 그렇기 때문에 RDB에 익숙하지 않은 사람들이 쓰기 쉽고 알려주기도 쉽다. 국비교육이나 학원에서 몽고 DB를 알려주는 이유는 그냥 알려주기 귀찮아서인 것 같다. 

     

    대규모 데이터를 적재하는데 아주 도움이 될 것 같고, 시계열 데이터를 저장하고 조회하는 효과적인 방법이나 인덱스를 활용하면 내가 사이드프로젝트로 진행하고 있는 타이머앱에도 적용할 수 있을 것 같다. 사용자의 공부시간등을 한 번에 내려줄 때 DB를 어떻게 설계할까 고민했었는데 '노시클' DB를 활용하면 row 하나를 조회해서 다 내려줄 수 있을 것 같다. 대신 메인 DB로 사용하진 않고 서브 DB로 활용하면서 기존 RDB에 쌓인 내용을 가공하여 몽고 DB에 적재하는 프로그램이 있어야 하겠지. 하지만 애플리케이션 성능은 대폭 오르고 메인 DB인 RDB에도 부하가 줄어들 태니 괜찮은 방법인 듯? 나중에 시간 나면 적용해 봐야겠다.

     

    AWS에서도 document DB라는 몽고 DB 비슷한 서비스가 있는데 실제 몽고 DB와 100% 일치하지 않는다고 한다. 쿼리를 돌리면 두 개의 결과가 다르다고,,, 이가 빠진 서비스인 듯 ㅋㅋ 실제로 쓰려면 그냥 on-premise로 쓰지 않을까? 싶다. docker에 보니까 몽고 DB + ui 제공해주는 이미지가 있던데 star가 많은걸 보니 사람들이 많이 쓰는듯? 

     

    결론 : 몽고DB 쓰려면 조회용으로, docker로 사용하기.

     

     

     

     

    반응형

    댓글

    Designed by JB FACTORY