-
Notifications
You must be signed in to change notification settings - Fork 4
2주차 멘토링
홍승용 edited this page Nov 2, 2021
·
1 revision
- 참여자
- J077_문혜현, J107_송명회, J218_홍승용, J219_홍종우, 성지현 멘토님
- 시간
- 19:30 ~ 20:30
- MongoDB를 메인 DB로 결정
- MongoDB WiredTiger 엔진(3.x) 버전 -> DB다워졌다..!
- 하나의 document에 대한 transaction만 지원되다가 multi-document transaction, sharding 상황에서의 multi-document transaction까지 지원됨
- 그러나 NoSQL자체가 트랜잭션에 친화적이지 않아서 multi-document는 지양하는 게 좋다
- 사용자 주소 정보 풀 텍스트 vs 시/구/동 나누어서 저장
- 풀 텍스트: 당연히 성능이 안 좋다. 인덱스를 걸어도.
- DB 성능을 분석해보면 key 몇개 - document 몇개 봤는지 분석 가능
- 비율이 1대1에 가까울수록 좋은 성능인데, 풀 텍스트는 이러기 어려울 듯
- 시/구/동 따로 저장하고 인덱스를 거는 게 나아보인다!
- MongoDB 인덱스 종류?
- 시만/구만/동만 검색하는 케이스가 있다면 -> 어쩔수 없이 각각에 인덱스를 걸어야
- 그런 경우가 없다면 compound index로 (시, 구, 동)에 한 번에 걸어도 된다.
- Index prefix: (시, 구, 동)으로 인덱스 걸면 (시) (시, 구) (시, 구, 동)으로 쿼리해도 인덱스를 탄다
- 인덱스가 많아질 수록 쓰기성능은 안 좋아지지만 그리 크게는 안 날듯
- 걸게 된다면 시/구/동에 각각 거는 게 나을 것 같다.
- 행정구역 변화에 대응하는 DB 구조
- 사용자, 후기 등에 위치(위/경도)를 같이 저장하고 행정구역이 변화하면 해당하는 document의 텍스트 주소를 한번에 업데이트?
- 행정구역을 모든 document에 넣을 건데 이를 어떻게 업데이트 할건지
- 정규화를 해서 Join으로 하면 업데이트 부담은 적어진다
- A 사용자가 판교동 document를 참조하고 있을 때
- 이름이 바뀌는 건 문제가 안 되는데
- 쪼개지거나 병합될 때 문제!
- 위/경도로 JOIN을 해야하는 거 아닐까(?)
- 판교동 -> 판교 1동, 2동으로 나누어지면
-
판교동을 참조하는 document들을 탐색
-
판교 1동 또는 판교 2동으로 다 몰면 되지 않을까?
-
위/경도를 저장해야 하는가?
-
이걸 업데이트할 때 참조만 변경할 건지 embedded 정보를 전부 업데이트(배치 작업 등)할 건지를 결정하면 된다..?
-
우리는 각 document가 정확한 좌표(판교 1동 내의 어느 아파트 좌표)를 저장하고 그 좌표를 기준으로 행정구역이 변화하면 업데이트해야한다! 라고 생각했는데
-
멘토님은 판교동까지만 고려하고(좌표를 저장할 필요 없이) 판교동의 기존 좌표가 판교 1동/판교 2동 중 어느곳에 속하느냐에 따라 한 곳으로 몰면 된다!고 조언해주심
-
배치 작업으로 업데이트한다면 (공지같은거 날릴 필요 없이)수만개씩 나눠서 작업해도 되고
- 사용자 정보는 빨리 업데이트해야 할듯
-
아니면 링크만 수정
-
Document 사이즈가 커질 것 같으면 embedding을 지양, 웬만하면 embedding을 "지향"
-
embedding은 JOIN 수를 줄여준다
-
embedding vs JOIN
- Document 사이즈가 클 것 같진 않고, 행정구역 업데이트 내역이 그리 많지는 아닐 것 같다.
-
- 추가할만한 것 하나정도는 넣으면 좋지 않을까? 통계를 넣어서 시각적으로 보여준다든가 등
- 이력서 팁
- 경력사항, 프로젝트/대회 참여 경험 많은 게 좋다. 많을수록 좋다. 최대한 많이
- 어떤 역할을 했는지 구체적으로 작성
- 그런건 좀 안 좋다
- 의미 없는.. 돈만 주면 들을 수 있는 교육 등..
- 자기 노력이 많이 들어간 것들을 기입
- 프로젝트: 학교 과제 수준이어도 뭔가 고민을 많이 했다면 그 내용을 같이 쓴다
- 보유 기술: 이걸로 프로젝트는 해봤다 수준은 돼야 쓰는 게 좋다.
- 조금 해 봤다고 쓰는 건 안 좋다
- 라이브러리(sequelize, socket) 적어도 되나?
- socket.io WebRTC Redux 이정도는 괜찮을 것 같은데
- styled-component는 애매~
- 너무 마이너한 라이브러리는 X
- 언어 DB 프레임워크 라이브러리(어느정도 )
- (ㅅㅇ) 프로젝트 경험이 많지 않은데... 걱정이됩니다.
- C언어 체스 만든것도 다 써라. 고민한 내용과 해결내용을 함께 쓰면 좋다.
- 너무 걱정 안해도 될듯. 어차피 코테에서 크흠..
- 멘토님도 있는 거 다 적었다고 하신다.