최근 면접에서 받았던 질문인데
Q. 프로젝트에서 MongoDB(NoSQL) 쓰셨던데, 왜 RDB
가 아니었나요?
A. 일배치로 발생하는 쓰기 말고는 전부 읽기 작업이라 워 크로드 고려해 Mongo 썼어요. 실시간 트랜잭션과 정합성 이 중요했다면 RDB 썼을 것 같아요
Q. RDB 는 그럼 읽기 집약적인 워크로드에서는 좋지 않나 요? 읽기 성능 올리려면 어떻게 해야해요?
A. 인덱스 걸고, 그거로도 부족하면 테이블 파티셔닝할 것 같아요
Q. 그럼 10억건 RDB 에 저장되어있을 때 읽기성능 올리려 면 어떻게 해야해요?
A. (??? 인덱스랑 파티셔닝 말고 또 있나? 왜 같은결의 질 문이 또 들어오지?) 어어... 인덱스... 파티셔닝... 어버버
Q. 네~ 알겠습니다
마지막 질문은 병목이 되는 지점이 뭐냐고 역질문을 하면서 티키타카 해야하는 질문인가요?
아니면 정답이 있는 질문인가요?
저렇게 질문 들어오면 어떻게 조건 걸어서 좁혀나갈지 고민해 보면 좋을 듯
데이터 접근 패턴이랑 워크로드 보는거고 몽고디비질문은 잘못알고있나 떠보는거지 뭐
병목지점이 쿼리패턴문제인지 인프라 문제인지는 디버그 찍어봐야아는거지
구체적으로 ㄱ
반복 요청이면 레디스 데이터 사이즈 문제면 샤딩 그런 데이터가 없는 상태에서의 진단은 잘못된 조기 최적화임
@ㅆㅇㅆ찡 그건 나중에하고 지금 첫번째 질문부터 작성자가 애매하게 답한 상황이잖아
@글쓴 백갤러(175.123) 그럼, 이래야지 모니터링이 없는 상태였기에 답변이 어렵다정도 아닌가.
json을 단순 보관하는 용도면 rdb를 했을 것 같네용
인덱스랑 파티셔닝 대답했으면 마스터-슬레이브 구조 말하는거 아님?
자주 조회되는건 캐싱?
집계용 데이터면 olap를 쓰는게 나을수도
읽기집약적인데 몽고를 왜 쓴다는거? 첫번째 대답부터 난 이해가 안되는디 몽고가 els도 아니고
드디어 정상적인 답변이 나왔노
그니까 읽기 작업이면 RDB 쓰는게 맞지않나?
@글쓴 백갤러(175.123) 시발 내 댓글은 정상적인 답변이 아니었다는거냐?
@학벌안좋은취준생 json이 갑자기 왜나옴
트랜잭션과 정합성이 필요 없다 생각해서 mongo db 고른 케이스인가
재밌네 - dc App
데이터 조회 패턴은 알아야 대답하지않나..? - dc App
1번부터 애매하게 답해서 면접관한테 공격포인트 노출당하는 상황이야
해당 댓글은 삭제되었습니다.
@백갤러3(194.114) 굿 2, 3번도 해결해봐
진짜 진지하게 말해줌? 대답을 좆병신같이 한 허수새끼 면접썰 들고오지 마라 ㅇㅇ 걍 면접관의 두번째 질문부터 읽기 작업은 RDB가 더 빠르다를 가정하고 질문하고 있는데 이미 면접관이 1번 봐준거임
처음에 1번 읽었을때 몽고DB이야기하다 갑자기 RDB 이야기로 넘어가서 스토리 이해도 못했네 ㅇㅇ 걍 면접관이 1번 봐준거잖아
2, 3도 해봐
@백갤러3(194.114) 블라에서도 뚜드려 맞는중
@글쓴 백갤러(175.123) 2,3을 해결해보라고? 1.읽기 성능이 느리다는 게 구체적으로 어떤 현상인지 응답시간이 몇 초인지 물어보기 2. 목표 응답시간은 몇초인지 3. 왜 느린건지. 풀스캔인지 락 경합인지 I/O 병목인지 파악이 되어 있는지. 4. 단일 DB인지 레플리카인지 5. 단건 조회인지 범위 조회인지 집계인지 6. 항상 느린지 특정 시간대에만 그런지 7. 데이터가 10억건인데 실제로 자주 조회되는 데이터는 얼마나 되는지
@글쓴 백갤러(175.123) 8. 읽기요청 주체가 배치 시스템이 보는지 내부 시스템이 보는지 9. 인덱스는 어떻게 걸려있는지 실행계획 되어있는지
@글쓴 백갤러(175.123) 걍 사고 과정을 보여줘야 하는데 내가 지금까지 말한 것 중에서 최소 2가지 역질문 못했으면 걍 개발자로서의 삶은 끝난거니 다른 길 알아보라 해라
@ㅇㅇ(121.178) 왜 이렇게 화가났노
@글쓴 백갤러(175.123) 난 화날때만 갤에 들어오니까 니가 알아서 피해라
근데 보통 신입이면 이 도메인에서 레퍼런스가 가장 많은 mongodb를 사용했다. 뒤에 그 이유로 사용해보니 ~~한 이유로 ~가 더 좋은거같다.
상황이나 요소가 다를 수 있는데 나도 RDB 아닌 케이스긴 함 나같음 저 질문에서 RDB같은 엄격한 스키마 구조가 당장 필요하지 않았고 별도 인프라나 DB 셋업이 필요 없이 빠르게 사용 가능한 DB 플랫폼을 선택했다 라고 비슷하게 답변할 거 같은데 적어도 저렇게 답변안하고
1번부터 읽기성능이 몽고가 더 좋다고 박아버리고 시작한게 문제고 저녀석 프로젝트 수준에 일배치작업 쓰기만 있고 나머진 죄다 조회라고하는거 보면 RDB로도 문제없는 수준일텐데 굳이 mongo쓴 이유를 제대로 설명 못한듯 쟤 말대로의 워크로드라면 쓰기등 업데이트가 하루 한번일어나서 db상태 고정이라는건데 그러면 인덱스 걸고 rdb에서 읽어오는거랑
먼차인지도 모르겠고 차라리 스키마가 일정하지 않고 변동적이라서 도큐먼트타입의 대표격인 mongo를 선택했다하면 모르겠음 그리고 버퍼풀이 괜히있는것도아니고 자주읽어오는 데이터가 뚜렷한 워크로드면 버퍼풀 용량 설정만 해도 메모리에서 페이지히트 다되겟구만