Skip to content

refactor: spot 위치 측정을 h3_index에서 mysql의 geoType으로 마이그레이션 #186

@sootudio

Description

@sootudio

작업 개요

  • 현재 Spot 위치 기반 탐색 로직은 H3 인덱스를 사용하고 있음
  • 하지만 대량 데이터(최대 2,600개)의 조회/렌더링 시 느려지는 현상 발생
  • MySQL의 공간 데이터 타입(GeoType) 및 Spatial Index를 활용하여 성능 개선 가능 여부를 실험하고자 함

작업 내용

  • Spot Entity에 Point location 필드 추가 (SRID 4326)
  • latitude, longitudelocation 변환 로직 추가 (저장 시)
  • 해당 필드에 Spatial Index 적용 (SPATIAL INDEX (location))
  • 사용자 위치와 Spot 간 거리 계산 쿼리(ST_Distance_Sphere) 추가
  • 기존 H3 방식과 Geo 방식 결과/성능 비교용 API 분리 구현 (/nearby-spots/h3, /nearby-spots/geo)
  • 응답 시간, 거리 정확도, 정렬 여부 등 비교 로그 출력 추가

Todo list

  • Spot 엔티티에 location(Point) 필드 추가 및 스키마 수정
  • Spatial Index 생성 DDL 작성 및 적용
  • Spot 저장 시 location 값 세팅 로직 구현
  • 거리 기반 필터링 쿼리(JPA Native 또는 QueryDSL) 작성
  • H3 방식과 Geo 방식 API 분리 구현
  • 두 방식 간 결과 비교 테스트 (응답 속도, 결과 수, 거리 정렬 등)
  • 성능 분석 후 마이그레이션 유지 여부 결정

Metadata

Metadata

Assignees

Labels

refactor에러나 기능 구현이 아닌 코드 유지 보수 또는 성능 개선🟡 보통급하진 않지만, 필요한 작업입니다.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions