분류 전체보기209 [Database] 인덱스 (Index) 작년 SQLD 자격증을 취득하면서 인덱스에 대한 개념을 공부했다. 그리고 2차 프로젝트에서 필드에 인덱스를 걸어서 조회 속도를 향상시키고 싶었다. 인덱스에서 대해서 조금 더 자세하게 알 수 싶어 공부했고 기록으로 남겨보자! ✍️ 1. 인덱스란? 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조 인덱스를 사용하는 이유는 조회 기능을 향상하기 위해서이다. 1) 특징 인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 찾아보기와 유사한 개념이다. (장점) 조회 성능에 좋다. (단점) Insert, Update, Delete 등과 같은 DML 작업은 테이블과 인덱스를 함께 변경해야 하기 때문에 오히려 느려질 수 있다. 2) 종류 왜 인덱스를 타면 조회가 .. 2022. 5. 11. AWS 과금 문의, 환불 산뜻한 아침~ 🌞 '으음~결제가 됐네~뭘까?' 뚜둥..! 💰 부랴부랴 들어가 보니 👉 '[AWS] RDS 생성하여 EC2에 연동하기' 포스팅 이 포스팅에서 실습했던 RDS에서 비용이 발생했다..! 또한 다음달에도 누계 잔액이 있었다. 프리티어로 사용하고 있어서 예상 못한 과금이었다. 큰돈은 아니지만 혹시나 하는 마음으로 문의를 남겼다. 환불 절차 1. 루트 계정으로 로그인 2. 결제 대시보드 확인 로그인 후 오른쪽 상단에 내 계정을 선택하면 다음과 같은 메뉴가 나온다. 여기서 결제 대시보드를 확인한다. 그리고 청구서를 확인하면 어떤 서비스에서 과금이 발생했는지 알 수 있다. 나는 RDS에서 과금이 발생하고 있었다. 3. 인스턴스 삭제 실습은 한 후에는 사용하지 않는 인스턴스나 DB는 꼭 삭제하도록 하자... 2022. 5. 9. [칵테일 웹 서비스 프로젝트] 15일 차 회고 📖 2022년 5월 07일 ✔️ 오늘 내가 한 일 버그 Fix 발표 자료 준비 💁♀️ 오늘 느낀 점 두번 째 프로젝트를 끝냈다! 3주라는 시간 동안 좀 더 성장하고 있고 앞으로 더 성장하기 위해서 노력하자! 처음 개발 프로젝트의 팀장을 맡았고 조금 더 잘해볼걸 하는 생각이 들었다!!! 누구에게나 처음은 있으니깐! 그 처음에서 한 발자국 걸어 나온 나는 좀 더 성장하고 있지 않을까 남은 두달도 화이팅!! 2022. 5. 8. [칵테일 웹 서비스 프로젝트] 14일 차 회고 📖 2022년 5월 06일 ✔️ 오늘 내가 한 일 board 조회수 구현 리팩토링 데이터 json 파일로 변환 (그래프용) 발표 자료 준비 💡 TIL ( Today I Learned ) 1) 트래픽 처리 https://d2.naver.com/helloworld/6070967 💁♀️ 오늘 느낀 점 조회수를 구현하면서 모듈을 추가하고 싶지 않아서 쿠키가 아닌 방식으로 구현을 했다. 조회수를 count 하는 로직은 다음과 같다. 로그인 X -> 게시글을 선택할 때마다 ++1 로그인 O -> 하루에 한번만 ++! 이 방식에 대해 오피스아워 시간에 질문을 했고 지금은 서버가 하나이고 분산처리를 하지 않아 괜찮지만 분명 문제가 될 수 있는 방식이라고 하셨다. 이 부분에 대해서 조금 더 공부를 하자! 📌 내일 할 .. 2022. 5. 6. [칵테일 웹 서비스 프로젝트] 13일 차 회고 📖 2022년 5월 05일 ✔️ 오늘 내가 한 일 board router 수정 리팩토링 버그 Fix 🪲 💡 TIL ( Today I Learned ) 1) DB 처음 프로젝트를 기획하면서 기술스택을 정할 때 지금의 MongoDB를 선택한 것은 익숙함이었다. 하지만 처음 데이터베이스를 선정할 때 고려해야할 우리 데이터의 특성에 대한 고민이 없었다. 비정형으로 수집해서 들어오는 데이터가 많고 한 테이블 내에 모든 데이터가 들어가 있는 경우는 NoSQL를 사용하는 것이 적합했을 것이다. 하지만 우리 데이터베이스는 다음과 같이 이미 8개의 테이블 (컬렉션)이 만들어졌다. 일단 우리 서비스의 메인 기능인 칵테일을 보여주는 파트에서도 '좋아요'와 같은 기능이 붙기 시작하면서 끝없이 populate 되었다. 또한 게.. 2022. 5. 5. [칵테일 웹 서비스 프로젝트] 12일 차 회고 오늘은 운수 좋은 날 ㅎㅎㅎ.........ㅠㅠ 📖 2022년 5월 04일 ✔️ 오늘 내가 한 일 test 배포 board router 수정 Board-Comment-User 정합성 유지하기 리팩토링 버그 Fix 🪲 💡 TIL ( Today I Learned ) 1) 배포할 머신에 compose 설치할 때 주의 버전 ㅎ.. 조심하자. 잘못 설치해서 꽤 시간이 소요됐다 ㅠ https://bug41.tistory.com/116 [Docker] docker-compose 에러 Version in "./docker-compose.yml" is unsupported ERROR: Version in "./docker-compose.yml" is unsupported. You might be seeing this e.. 2022. 5. 4. [칵테일 웹 서비스 프로젝트] 11일 차 회고 우리 팀의 공식 개발 일정은 화~토 사이이다. 따라서 쉬는 날 한 작업들은 화요일 회고에 같이 기록한다! ( 하지만 스크럼은 매일 진행했고 작업도 매일 했다...👍) 📖 2022년 5월 03일 ✔️ 오늘 내가 한 일 좋아요 기능 수정, 좋아요 스키마 수정 Board + Comment 전체 리팩토링 Board 이미지 수정 Board 조회수 구현중 MBTI data 자료조사 리팩토링 (로그인, 회원가입 → user MVP로 합치기) 회원 탈퇴 구현 탈퇴 시 유저가 작성한 게시글, 댓글은 writer 필드값 => null. 좋아요는 유지 그래서 프론트에서 null값일 때 '집나간 칵테일' 등 임의로 이름 랜더링 💡 TIL ( Today I Learned ) 1) 데이터베이스 트랜잭션 트랜잭션은 작업의 완전성 .. 2022. 5. 3. [Node.js] mongoose에서 새로운 필드 추가하기 01. 개요 DB 구축을 완료한 후 스키마에 새로운 필드가 추가되는 경우가 있다. 우리 서비스에서는 좋아요 수를 스키마에 추가하게 되었고 default 값으로 0이 들어가 있길 바랐다. 기존 데이터에 추가해 새로운 데이터와 동기화하기 위해서 다음과 같은 방법을 사용했다. 02. updateMany static update = async () => { const findCocktail = await Cocktail.updateMany({}, { $set: { likes: 0 } }); return findCocktail; }; updateMany를 활용하여 전체 도큐먼트에 값을 수정해보자! 👉 Mongoose 공식문서 1. 첫번 째 인자 조회 조건문이다. 나는 모든 도큐먼트를 조회할 예정임으로 {} 비우뒀.. 2022. 5. 1. [칵테일 웹 서비스 프로젝트] 10일 차 회고 📖 2022년 4월 30일 ✔️ 오늘 내가 한 일 board mvp에 이미지 업로드 기능 연결 top10 칵테일 조회 API 💡 TIL ( Today I Learned ) 1) 몽구스 쿼리 현재 우리 cocktail DB 는 26위 안에 들었는 도큐먼트(칵테일)만 rank collection과 populate 되어 있다. 그래서 10위까지의 칵테일을 반환할 때 쿼리와 filter 를 주었다. [ 나의 코드 ] static getRank10Cocktail = async () => { const cocktails = await Cocktail.find({ rank: { $ne: null } }).populate({ path: "rank", match: { rank: { $lte: 10 } }, }); con.. 2022. 4. 30. [칵테일 웹 서비스 프로젝트] 9일 차 회고 📖 2022년 4월 29일 ✔️ 오늘 내가 한 일 DB 조회 최적화 ( 인덱스 ) comment CRUD 완성 유저 정보 수정 코드 리팩토링 백엔드 코드 Fix (리팩토링) 😥 어려움을 겪은 일 1. DB 조회 성능 향상 우리 서비스의 메인 기능이라고 할 수 있는 cocktail dictionary는 모든 칵테일을 조회하기 때문에 네트워크 지연이 있었다. 현재 코드에서는 rank collection 또한 populate 되어있어 더욱 지연되고 있다. Sol 1 ) populate 제거 NoSQL의 장점은 탐색 속도이다. 그런 NoSQL 데이터베이스 구조에서는 최대한 populate를 이용하지 않게, 그리고 양방향 관계가 되지 않게 짜는 것이 좋다고 한다. 이런 지연을 해결하기 위한 방법을 계속 생각해보았.. 2022. 4. 29. [칵테일 웹 서비스 프로젝트] 8일 차 회고 📖 2022년 4월 28일 ✔️ 오늘 내가 한 일 login validation ( Joi ) register validation ( Joi ) token 프론트 코드 공부 DB 데이터 수정 백엔드 코드 Fix (리팩토링) 😥 어려움을 겪은 일 1) [Node.js] EADDRINUSE 에러 해결 갑자기 추가적으로 터미널에서 포트를 열지 않았는데 아래와 같이 오류가 뜨면서 이미 5000 포트를 사용하고 있다고 나왔다. 그래서 포트를 찾아서 직접 내리는 코드를 찾아 해결했다. ✔️ 윈도우 netstat -ano | find "5000" 포트를 찾아서 끝에 있는 'PID번호'를 확인하고 taskkill /pid 1234 taskkill /f /pid 1234 나는 /f 옵션으로 강제 종료해주었다. ✔️ 리눅.. 2022. 4. 28. [Node.js] Validation 라이브러리, Joi로 단단한 코드짜기 01. 개요 1차 프로젝트에서는 request로 들어오는 데이터를 '@sindresorhus/is' 라이브러리를 사용해서 req.body가 비어있는지 여부만 확인했다. 하지만 좀 더 강하게 validation을 하려면 타입이 맞게 들어왔는지, 올바른 칼럼이 들어왔는지 등을 확인해야 한다. 그래서 이번엔 Joi를 사용해서 Validation 해보려 한다. ✔️ 1차 프로젝트 GitHub Repository 👉 @sindresorhus/is 문서 02. Joi 라이브러리 코드 구현 👉 Joi npm 문서 👉 Joi API 문서 외부에서 들어오는 입력을 항상 validation 하는 습관은 중요하다고 한다. Joi에 대한 자료가 많지 않아 문서를 참고해서 구현해보자. 현재 라우터, 서비스 로직, 디비, 미들웨.. 2022. 4. 28. [칵테일 웹 서비스 프로젝트] 7일 차 회고 📖 2022년 4월 27일 ✔️ 오늘 내가 한 일 OAuth Token register validation Jest 공부 ( TDD 방법론에 필요한 ) 💡 TIL ( Today I Learned ) 1) 또 Token 6일 차에는 Refresh Token을 저장할 필요가 없다고 생각했는데 오늘 다시 내가 짠 코드를 보며 필요한 이유를 깨달았다. ( 아니 어제 내가 짠 코드를 오늘 봐서 새로운 건 뭘까 ㅎ.. ) refresh token을 유저 ID와 함께 저장하는 이유에 대해서 생각해봤는데 refresh token은 payload 없이 발급해서 우리 DB에 저장해 두지 않으면 헤더에서 요청이 들어왔을 때 요청한 유저의 refresh token이 맞는지 아니면 다른 사람의 refresh token을 가지고.. 2022. 4. 27. [칵테일 웹 서비스 프로젝트] 6일 차 회고 우리 팀의 공식 개발 일정은 화~토 사이이다. 따라서 쉬는 날 한 작업들은 화요일 회고에 같이 기록한다! 📖 2022년 4월 26일 ✔️ 오늘 내가 한 일 칵테일 정보 수집 (설명, 맛) 칵테일 조회 API 인증과 인가 공부 Refresh Token 공부 DB 구축 미들웨어 설계 😥 어려움을 겪은 일 [ 함수 단위로 코드를 분리하면서 생긴 Issue ] 1. Task Refresh Token을 구현하자. 2. Situation 1) Client에게 받은 Refresh Token이 유효한지 확인하는 유틸 함수이다. 2) /refresh 요청이 들어왔을 때 토큰을 재발급하는 미들웨어 코드를 짜고 있었다. refresh 토큰의 유효성을 검사하고 1번의 함수를 보면 return을 true나 false로 설정했기.. 2022. 4. 26. STAR Method 🌟 📌 유튜브 '조코딩' 위 영상을 보며 기억하고 싶은 내용을 기록으로 남겨본다! ✍️ 미국에서 resume나 portfolio를 작성할 때 다음과 같은 방법으로 쓴다고 한다. STAR Method S : Situation, T : Task, A : Action, R : Result 앞으로 내가 경험을 할 때도 이 네가지를 기억하자! 어떤 상황에서 나에게 주어진 업무는 어떤 것이었고 그래서 내가 한 행동과 결과를 적는다면 스토리텔링이 되는 '자소서', '이력서'가 될 것이다. 따라서 앞으로 경험을 쌓을 때에도 이 네가지를 기억하고 가능하다면 기록해두어 나중에 그 경험을 풀어내고자 할 때 그 경험이 빛나게 하자 🌟 2022. 4. 26. 이전 1 ··· 7 8 9 10 11 12 13 14 다음 반응형