-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
Description
🔍 리팩토링 사유
기존: 하버사인 공식을 사용하여 사용자의 위치와 가게의 거리를 계산.
-> 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 리팩토링
- 서비스 레이어 로직 수정~~
Reactions are currently unavailable