본문 바로가기

프로젝트44

[개인프로젝트] ElasticSearch와 Mysql 쿼리 실행시간 (2) (인덱스 걸기) 이전블로그에서 mysql 인덱스 안걸려있고 full scan으로 했으때의 elasticsearch와의 검색 실행시간 차이를 알아보았다. 이번에는 mysql에 인덱스를 걸었을때의 상황을 비교해보겠다. 간단하게 데이터베이스에서의 인덱스란 미리 정렬된 정보를 저장하여, 원하는 데이터를 찾는 것이다. 즉 검색 속도를 향상시킬 수 있다. 이부분에 대해서 추후 더 자세하게 알아볼 예정이다. 일단 실행시간 보기전에 알려드릴점... 첫번째원래 이전 블로그에서는 distance가 3km였는데 0.5km로 바꾸었다. 그 이유는 mysql이 인덱스를 타지 않고 full scan을 해서이다. 20만개 데이터중 쿼리를 나리면 2/3이상의 데이터가 결과값으로 나오다보니 full scan을 타버렸다. 그래서 인덱스를 타기 위해 범.. 2024. 2. 19.
[개인프로젝트] ElasticSearch와 Mysql 쿼리 실행시간 (1) 멘토링받다가 ElasticSearch 왜 사용했어요?? 질문하셨다. 그래서 mysql 인덱스를 사용하지 않는다는 가정하에 간단하게 말씀드렸다. 멘토님의 답변.. 인덱스 쓰면 생각보다 쿼리 빠르게 나온다고.! 그래서 이번 기회에 간단하게 테스트 해보려고 한다. 산책 대행자를 검색하기 위해서 거리기준, 이름으로 기준을 정하였다.(mysql 인덱스 설정안되어있음) 처음 테스트할때는 Elasticsearch와 mysql에 10000개의 데이터를 임시로 넣었다. 10000개로 테스트 Mysql SELECT ST_Distance_Sphere(Point(127.0637948147,37.3232) ,Point(users.user_lnt,users.user_lat)) AS distance FROM users WHERE .. 2024. 2. 15.
[Key Word 개발기] Redis pub/sub 실시간 알림 적용기 이전 블로그에서 sse와 ConcurrentHashMap을 이용하여 실시간 알림을 구현해봤다. 그러나 ConcurrentHashMap은 문제점이 존재한다. 스케일 아웃시 코드가 제대로 동작하지 않는다. 그 이유는 SseEmitter객체를 서버의 메모리에서 저장하고 있기때문이다. 예를 들어 A는 was1에 접속했고 B는 was2에 접속했다. 앞서 말했듯이 SseEmitter객체는 서버의 메모리에 저장하고 있기때문에 A가 B에게 알림을 보낼 수 없다. 이 문제를 해결하기 위한 방법이 Redis pub/sub이다. Redis pub/sub 위의 그림같이 레디스 pub/sub기능을 제공한다. 특정 채널을 구독한 subscriber들에게 메세지를 전달하는 것이다. 이 구조를 통해 scalueout된 모든 애플리케.. 2024. 2. 9.
[Key Word 개발기] Server-Sent Events ?? 알림기능?? 협업프로젝트가 마무리 되었지만 아직 알림기능이 구현이 안되었다. 그래서 알림 담당 팀원분이 데모데이끝나고 알림기능을 구현하시고 계시는데 어려우시다고 하셨다.물론 나도 개인프로젝트때 반만 이해하고 했던지라... 좀 초반에 개념을 이해하기 어렵다는 걸 알고 있었다.. 그래서 팀원분께 저도 공부하고 있을테니 공부계속하시라고 일단 말씀드리고 나도 개인프로젝트 리팩토링도 할겸 sse에 대해서 공부하게 되었다. HTTP 다 알고 있겠지만 HTTP는 비연결성 프로토콜이다. 즉 한번 연결되고, 요청과 응답을 주고 받으면 끝난다.(연결이 끊긴다) 뿐만 아니라 HTTP는 클라이언트 - 서버 아키텍처를 따른다. 음..그니까 서버가 클라이언트의 요청을 수동적으로 기다린다. 만약 클라이언트가 서버에 요청을 보내면 서버는 요청에.. 2024. 2. 8.
[개인프로젝트] github actions build 에러 개인프로젝트도 배포를 하려고 github actions를 생성했다. 그러나... build에러가 계속 터지고..나의 시도 노력들... 이거말고 더 있답니다... 거의 50번정도..? ㅋㅋㅋㅋ 문제 상황 에러코드 보면 결국에는 application.properties의 값들을 못찾아서 그런거 같았다. java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:143 Caused by: org.springframework.beans.factory.BeanDefinitionStoreException at PlaceholderConfigurerSupport.java:230 Caused by: java.lang.IllegalArgu.. 2024. 2. 1.
[개인프로젝트] 리팩토링 - Spring Batch Paging Reader 같은 조건 데이터 조회안됨 개인프로젝트 리팩토링 하다가 스프링 배치코드가 조금 더럽길래...ㅎㅎ 테스트 코드랑 같이 리팩토링 하는데 데이터를 20개를 가지고 테스트해봤더니 10개만 적용되는 문제가 발생했다... 문제상황 같은 조건으로 reader에서 데이터를 조회하는데 초반에 10개만 batch가 적용되고 나머지 10개에 대해서 적용이 되지 않았다.. @Bean public JpaPagingItemReader adjustReader(){ Map parameter = new HashMap(); parameter.put("status", WalkerServiceStatus.FINISH); parameter.put("payStatus", PAY_DONE); return new JpaPagingItemReaderBuilder() .nam.. 2024. 1. 29.
728x90