Skip to content

[REFACTOR]: 가게 거리 계산 로직 수정 #92

@twodo0

Description

@twodo0

🔍 리팩토링 사유

기존: 하버사인 공식을 사용하여 사용자의 위치와 가게의 거리를 계산.
-> DB에 저장된 모든 가게를 하나씩 꺼내서 위도, 경도 값을 넣고 복잡한 삼각함수 계산으로 처리
-> DB의 row가 많아지면 검색 한번에 서버 과부하 발생

현재 CI 단계에서 H2 DB를 사용하고 있어서, MySQL로 교체 후 진행해야 함
추후 회의 후 진행 여부 결정 예정

📄 리팩토링 상세 내용

변경 후: 공간 인덱스를 사용
-> MySQL이 지도 위에 격자를 그려놓고, 특정 사각형 범위 밖에 있는 가게는 고려 안하도록 함
-> 일반 수학 연산보다 최적화된 방식으로 거리를 뽑아냄
-> DB의 row가 많아져도 검색 속도 빠름

  • build.gradle 의존성 설정
  • application.yml에서 Dialect 설정
  • 로컬 DB, RDS에 latitude, longitude 컬럼 삭제 후 POINT 타입의 location 컬럼 추가 후 공간 인덱스 생성
  • Store 엔티티에서 latitude, longitude 컬럼 삭제 후 Point location(위경도를 하나로 묶은 객체) 추가
  • QueryDSL 리팩토링
  • 서비스 레이어 로직 수정~~

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions