MySQL

이번 글에서는 MySQL에서 공간 데이터를 다루는 법을 알아보고 실습을 통해 성능을 비교해 본 것을 기록합니다. 특히 가장 많이 사용되는 특정 좌표로부터 특정 거리 내의 좌표를 찾는 연산을 위주로 실습하고 인덱스와 공간 연산의 성능을 테스트합니다. 들어가기 앞서 제가 이 글에서 사용한 MySQL 버전은 v8.3.0입니다. MySQL의 공간 데이터 MySQL의 `MyISAM`, `InnoDB`, `NDB`, `ARCHIVE` 스토리지 엔진은 공간 데이터 타입과 관련 함수를 지원합니다. 이 중 `MyISAM`과 `InnoDB`는 공간 데이터 타입 컬럼에 대해 공간 인덱스와 비공간 인덱스를 지원하고 `NDB`와 `ARCHIVE`는 비공간 인덱스만 지원합니다. `InnoDB`는 데카르트 SRS와 geograph..
개인 프로젝트를 진행하던 도중 데이터베이스의 쿼리 실행 시간을 비교할 필요가 생겼습니다. 쿼리 실행 시간 측정 기능을 제공하는 패키지가 당연히 있을 줄 알았지만 찾지 못했고 저와 같은 기능을 찾는 사람들이 많다는 것을 알게 되어 패키지로 제작하게 되었습니다. 패키지 제작 이유부터 중간에 했던 시행착오들을 포함한 패키지 제작과정을 기록해 볼까 합니다. ❗️이 글은 2022년 2월에 작성된 글을 블로그를 리뉴얼하며 다시 작성한 글입니다. 노드에서 MySQL 쿼리 실행 속도 측정 MySQL의 쿼리 실행속도를 노드에서 측정하는 법을 검색해 보면 아래와 같은 방법이 나옵니다. // 시작시간 var start = new Date().getTime(); // 쿼리 실행 connection.query(query, fu..
MySQL에서 localhost와 socket file! 데이터베이스 에러 프로그램을 만들 때 데이터베이스가 가장 말썽인 것 같다. 설계, 에러 등에서 시간을 많이 쓰게 된다. cloer chat프로젝트 중 잘 작동하다가 에러가 발생했다. Error: connect ECONNREFUSED ::1:3306 데이터베이스에 연결이 안되는 에러인데 간단한 실수부터 방법으로 발생하는 에러다. 단순 실수로 발생한 에러가 아니고 몰랐던 부분이어서 정리하려 한다. 내 경우 MySQL 공식문서에서 답을 찾았다. https://dev.mysql.com/doc/refman/8.0/en/can-not-connect-to-server.html MySQL에서 localhost localhost는 루프백 호스팅으로 본인의 컴퓨터..
데이터베이스 구조부터 잡고 sequelize와 MySQL query를 이용해 스키마를 생성해보자! 데이터베이스 저는 서비스를 만들 때 기능들을 구상하고 인터페이스를 대충 생각 해보고 데이터 베이스를 설계하는 편입니다. 기능 구상은 저번 포스트에서 했고 인터페이스는 크게 신경 쓰지 않을 계획이니 바로 데이터베이스를 설계해 보겠습니다. 우선 채팅 서비스에 필요한 데이터부터 생각해보면 유저, 대화방, 메시지 정도가 있습니다. 모든 테이블에 createdAt, updateAt, deletedAt을 추가 해 시간을 이용해 대화방에서 나갔다가 다시 접속했을 때 나가기 전 메시지를 불러오지 않을 계획입니다. 대충 컬럼을 생각해봤으니 관계를 맺고 정규화를 통해 나은 방법을 찾아보겠습니다. pseudo ERD '메시..
canvas API와 nodeJS, MySQL로 간단한 웹게임을 만들어보자! Canvas로 슈팅게임 만들기 기말고사 기간 공부가 하기싫어 vs code를 열고 이짓 저짓 하다가 간단한 게임을 만들어 보기로 했다. 즉각적인 결과를 얻을 수 있고 로직도 짤 수 있는 canvas가 시험기간에 공부하기 싫을 때 놀기 적당해 보였다. 먼저 canvas를 써본적이 없으니 기본적인 사용 방법을 공부하기 위해 유투브에서 영상을 찾아봤다. 이 영상을 보고 만들었으며 추천한다. 영상을 보며 따라 만든 후 AWS EC2에 배포해 친구들에게 알려줬고 점수 스크린샷을 찍어 서로 자랑하는 모습을 보고 점수를 저장하는 서버를 만들기로했다. 이 글은 시험이 끝난 뒤 영상을 안보고 만들 수 있는지 스스로 테스트도 해볼겸 처음부터 리..
당근마켓 서버를 클론해보자! 당근마켓 서버 클론 nodeJS를 이용해 당근마켓 서버를 클론 했다. 리펙토링하며 블로그에 글로 정리해볼까 한다. 살면서 처음 만들어본 API서버이기 때문에 세상에 자랑하고 싶지만 부족한점이 많다. 나중에 이 글을 읽으며 코드를 보고 부끄러울 수 있지만 몇 줄 정도는 자랑 스러워 할 코드가 있지 않을까 하며 조심스럽게 기록을 남겨본다. 코드 외에도 당근마켓 클론의 전체적 과정을 담아보겠다. 블로그에는 api별로 코드를 뜯어와 붙여 포스트 하고 깃헙으로 전체를 공유 하겠다. 다시 한번 말하지만 첫 api서버이기 때문에 부족한점이 많다. 혹시 읽으시다가 불편하신 점, 마음에 안드시는 점, 개선이 필요하거나 부족한 부분이 있다면 메일, 쪽지, 댓글 등으로 알려 주신다면 정말 감사하..
당근마켓의 어플의 페이지별로 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..
thecloer
'MySQL' 태그의 글 목록