개인 프로젝트를 진행하던 도중 데이터베이스의 쿼리 실행 시간을 비교할 필요가 생겼습니다. 쿼리 실행 시간 측정 기능을 제공하는 패키지가 당연히 있을 줄 알았지만 찾지 못했고 저와 같은 기능을 찾는 사람들이 많다는 것을 알게 되어 패키지로 제작하게 되었습니다. 패키지 제작 이유부터 중간에 했던 시행착오들을 포함한 패키지 제작과정을 기록해 볼까 합니다. ❗️이 글은 2022년 2월에 작성된 글을 블로그를 리뉴얼하며 다시 작성한 글입니다. 노드에서 MySQL 쿼리 실행 속도 측정 MySQL의 쿼리 실행속도를 노드에서 측정하는 법을 검색해 보면 아래와 같은 방법이 나옵니다. // 시작시간 var start = new Date().getTime(); // 쿼리 실행 connection.query(query, fu..
SQL
데이터베이스 구조부터 잡고 sequelize와 MySQL query를 이용해 스키마를 생성해보자! 데이터베이스 저는 서비스를 만들 때 기능들을 구상하고 인터페이스를 대충 생각 해보고 데이터 베이스를 설계하는 편입니다. 기능 구상은 저번 포스트에서 했고 인터페이스는 크게 신경 쓰지 않을 계획이니 바로 데이터베이스를 설계해 보겠습니다. 우선 채팅 서비스에 필요한 데이터부터 생각해보면 유저, 대화방, 메시지 정도가 있습니다. 모든 테이블에 createdAt, updateAt, deletedAt을 추가 해 시간을 이용해 대화방에서 나갔다가 다시 접속했을 때 나가기 전 메시지를 불러오지 않을 계획입니다. 대충 컬럼을 생각해봤으니 관계를 맺고 정규화를 통해 나은 방법을 찾아보겠습니다. pseudo ERD '메시..
당근마켓의 어플의 페이지별로 sql쿼리를 짜보자! 한방쿼리 SQL쿼리 연습을 위해 당근마켓의 각 페이지에 필요한 모든 데이터를 가져오는 한방쿼리를 짜보려고한다. 저번에 만들었던 당근마켓 ERD를 바탕으로 데이터베이스를 만들고 각 페이지 별로 한방쿼리를 짜보자. 당근마켓 클론의 전체적인 진행 상황이 궁금하시다면 이 글에서 확인 하실 수 있습니다! 홈 메인 페이지 select a1Name as myLocation, P.productIdx as productIdx, title, photo, sellerNickName, price, -- format(price, N'#,0') A1.name as productLocation, case when P.createdAt P.updatedAt then '끌올' else..
당근마켓의 데이터베이스를 클론해보자! 당근마켓 DB 설계 공간데이터를 많이 다루는 과 특성상 빅데이터를 많이 다루기는 하지만 그런 데이터들은 실제 서비스에서처럼 많은 관계를 갖고있지는 않다. 따라서 관계형 데이터베이스를 이해하고 실습하기위해 당근마켓의 데이터베이스를 클론해보자. 대상을 당근마켓으로 정한 이유는 플렛폼 어플리케이션에서 사용하는 기능이 대부분 들어있기 때문이다. 채팅은 socket을 사용하겠지만 DB 공부가 목적이니 데이터베이스로 구현했다. 당근마켓 클론의 전체적인 진행 상황이 궁금하시다면 이 글에서 확인 하실 수 있습니다! ERD 학교에서는 ER win을 사용했었다. 이번에는 Quick DBD라는 툴을 사용했 것이다. + 수정 (2021.10.05) 수정사항 (1) 주소 원래는 User 에..