Database 썸네일형 리스트형 [DB] Connection pool의 실용성과 유의점 참고 https://linked2ev.github.io/spring/2019/08/14/Spring-3-%EC%BB%A4%EB%84%A5%EC%85%98-%ED%92%80%EC%9D%B4%EB%9E%80/ https://velog.io/@mstar228/Connection-Pool%EC%9D%B4%EB%9E%80#%EC%9E%A5%EC%A0%90 실용성 1. connection pool 객체는 WAS와 DB의 연결을 유지하고 있는 상태. WAS가 DB로 요청을 보내는 과정(TCP 통신 방식)에서 핸드쉐이킹에 걸리는 시간을 단축시켜준다. 2. pool 객체의 수를 제한해두는 경우 서버로의 접속이 동시에 다량으로 발생하는 부하를 막을 수 있다. 유의점 1. pool을 보유하고 있느 것만으로도 메모리를 사용함.. 더보기 [Sequelize] snake_case를 camelCase로 다루기 참고자료 https://github.com/sequelize/sequelize/issues/10857 https://github.com/sequelize/sequelize/issues/10857#issuecomment-534351978 https://stackoverflow.com/questions/42728789/sequelize-foreign-key-snake-case-in-db-and-camelcase-in-code-does-it-possible 목표 db의 column은 모두 snake_case로, 대신 JS에서 해당 컬럼을 다룰 때에는 camelCase로 다루기. 이유는 프론트 단과의 통신 과정에서 case 충돌을 막기 위함이다. 예를 들어 res.data.profile_image VS. res.. 더보기 [Mongo] find / limit query의 중요성 (feat. Array.slice()) 가설 및 검증 가설 db에서 모든 데이터를 가져온 후 router에서 slice를 하는 것보다 limit을 활용해 db에서 일부만 가져오는 것이 더 빠를 것이다. 테스트 코드 1. 백엔드로 api 요청을 보난 후 프론트로 데이터가 넘어오는 시간을 확인함 2. 50초 동안 1초 간격으로 시간을 측정한 후 그 평균 값을 측정 3. 총 5번 반복 let timeAcc = 0 timeTest(); async function timeTest() { console.log("start"); let count = 0 let interval = setInterval(() => { getProductList($homeProductListNew, 'new') count += 1 console.log("count:", cou.. 더보기 [Mongo] 검색 엔진 없이 효과적으로 검색해보기 (Feat. $text, $search, $regex, aggregate) 문제 상황 검색어 사이에 다른 문자열(특히 공백)이 존재하는 경우, 원하는 document를 효과적으로 얻기 어려웠음. 특히 사용자가 특정 상품을 검색할 때 공백을 입력할 경우가 많을 거라 생각하고 이에 적극적으로 대비하고 싶었음. 아래는 기존 코드와 검색 결과이다. findBySearch(filter) { const product = await Product.find({ name: { $regex: `${filter}`} }); return product; } { name: '여름 반팔 니트' } // '검색어' => '검색 결과' // '여름 반팔' => O // '반팔 니트' => O // '여름 니트' => X // '여름반팔' => X $text, $search 장점 1. 공백이 포함된 검색어의.. 더보기 이전 1 다음