Emitter 관리 데이터 : Map<Long, Map<String, SseEmitter>>=> <UserId, <emitterId, SseEmitter>>emitterId : 한 사용자가 가진 여러 통로 고유ID (크롬, 모바일, 사파리 ...)
이 내용에 대해 쓰는 이유는 토큰이 URL상 노출되어 어떤 원리가 적용되는지 공부하고자 씀HTTP : 웹에서 클라이언트와 서버가 데이터를 주고받기 위해 사용하는 가장 기초적인 약속(프로토콜) -> 요청과 응답이 존재구조: 해더(여기에 토큰), 바디(데이터-JSON,HT
댓글 달기가 성공한 후 eventPublisher.publishEvent() 호출리스너가 @EventLinstner라면 즉시 실행되겠지만, @TranszaztionalEventListner라면 해당 작업을 커밋 후 리스트에 등록을 하도록 요청함.이 리스트에 등록하는 건
댓글을 작성할 때, 알림이 가도록 하는게 비즈니스 로직임한 트랜잭션 안에서 댓글 작성 -> DB 저장 -> 알림 발송까지 하면 너무 오래 스레드를 잡고있음.또한 후에 서버가 분리될 수도, SSE가 아닌 다른 외부 시스템을 도입할 수도 있음. 만약 외부와 소통(알림발송)
크게 세가지 방법이 있음Offset커서Keyset방식 : LIMIT와 OFFSET SQL 구문을 사용하여 특정 페이지 번호를 지정해 데이터를 가져옴.특징 : 구현이 간단, 사용자가 특정 페이지로 직접 이동하는 UI에 적합함단점 : 뒤로 갈수록 이전 행들을 모두 읽고 버
관련도 검색을 하려고 한다. 검색은 게시글 검색우리 서비스에선 제목, 본문, 치료영역, 나이 이렇게 내용이 있음.: 역인덱스 저장 + 역인덱스 탐색<일반 인덱스><역인덱스>: 글자를 세글자씩 쪼개는 것Ex. 개발의 신이 될거예요=> 개발의 / 발의" " /
데이터 규모가 작음 (게시글 수백~수천 건 수준)후보가 적으니 similarity() 전체 계산해도 빠름인덱스 크기가 작고 쓰기 부담 없음구현이 단순 — % 연산자 + ILIKE로 필터링하고 similarity()로 점수 매기면 끝 검색 응답이 체감될 정도로 느려질
Native Query로 similarity() 계산 -> 정렬 -> ID만 반환함 (Join 없이 ID만)JPQL + EntityGraph 활용: ID 목록으로 author 자동 Join fetch 함.: JPA는 세 가지 종류가 있음1\. 메서드 이름으로 자동 생성
커서 기반 페이지네이션 (무한스크롤)최신 기반과 인기 기반으로 무한스크롤이 가능하다.근데 안에서 커서를 지정하는게 인코딩방식으로 한다.내가 필요한건 인기Scroe와 PostId인데, 이걸 넘겨주면 되지 않나?하지만 문제는 인기순으로만 한다면 문제가 없겠지만 전에 다른
그럼 지금 어떤 테스트들을 한거야? 자세하게 설명좀해줘그리고 DB를 어떻게 들어갔어? -> 이거도 뭐한건지 자세히 설명해줘아까 dev와 .env를 본 이유가 뭔지 자세하게 알려줘. 이게 목적이 뭔지오전 5:021\. 어떤 테스트를 한 거야?목적: 구현한 검색 기능이 실
< 기존 인기순 쿼리 >cursorScore이 없으면 바로 true 되는거로 생각되었는데 첫 페이지에 제대로 반영 못함.< Hibernate가 PostgreSQL에 보내는 실제 SQL >:cursorScore 같은 이름 있는 파라미터가 $1, $2 같은 위치
난 문자열을 검색할 예정이기에 문자열을 나누는 기준을 알아보겠다.: 세글자씩 잘라서 역색인 구조로 만들기: 토큰으로 잘라서 역색인 구조로 만들기의미를 가진 최소 단위무엇을 토큰으로 볼지는 토크나이저가 정함PostgreSQL의 ts_parse가 실제로 이렇게 동작함. 2