- generic [ref=f58e3]: - link "본문으로 건너뛰기" [ref=f58e4] [cursor=pointer]: - /url: "#main-content" - banner [ref=f58e5]: - generic [ref=f58e6]: - link "TechLog Studio" [ref=f58e7] [cursor=pointer]: - /url: /studio - text: TechLog - generic [ref=f58e8]: Studio - navigation "Studio 주 탐색" [ref=f58e10]: - link "작업본" [ref=f58e11] [cursor=pointer]: - /url: /studio/documents - link "게시 기록" [ref=f58e12] [cursor=pointer]: - /url: /studio/publications - link "새 문서" [ref=f58e13] [cursor=pointer]: - /url: /studio/documents/new - link "주제·프로젝트" [ref=f58e14] [cursor=pointer]: - /url: /studio/taxonomy - link "릴리즈" [ref=f58e15] [cursor=pointer]: - /url: /studio/releases - link "공개 사이트 보기" [ref=f58e16] [cursor=pointer]: - /url: / - button "로그아웃" [ref=f58e17] - main [ref=f58e18]: - generic [ref=f58e19]: - generic [ref=f58e20]: - region [ref=f58e21]: - generic [ref=f58e22]: - paragraph [ref=f58e23]: REFERENCE · VERSION 2 - heading "문서 편집" [level=1] [ref=f58e24] - paragraph [ref=f58e25]: Top-N-per-group 선택 기준 - region [ref=f58e26]: - generic [ref=f58e27]: - paragraph [ref=f58e28]: DOCUMENT - heading "기본 정보" [level=2] [ref=f58e29] - generic [ref=f58e30]: - generic [ref=f58e31]: - generic [ref=f58e32]: 제목 - textbox "제목" [ref=f58e33]: Top-N-per-group 선택 기준 - generic [ref=f58e34]: - generic [ref=f58e35]: slug - textbox "slug" [ref=f58e36]: - /placeholder: 비우면 제목에서 만듭니다 (영문 소문자·숫자·하이픈) - text: top-n-per-group-selection - generic [ref=f58e37]: - generic [ref=f58e38]: 요약 - textbox "요약" [ref=f58e39]: 부모마다 상위 N개를 뽑는 일은 LIMIT으로 표현되지 않는다. 윈도우 함수, LATERAL, 애플리케이션 그룹핑 세 가지가 같은 결과를 만들지만 읽는 행수가 다르다. - generic [ref=f58e40]: 목록 카드에는 약 90자까지 보입니다 · 93 / 2000 - generic [ref=f58e41]: - generic [ref=f58e42]: Topic - combobox "Topic" [ref=f58e43]: - option "선택하지 않음" - option "JPA 피드 조회 성능" [selected] - option "OAuth/OIDC 인증 경계" - generic [ref=f58e44]: - generic [ref=f58e45]: Project - combobox "Project" [ref=f58e46]: - option "미지정" - option "Backend Clean Architecture" - option "KeyCloak Patterns" - option "Liner N + 1문제" [selected] - status [ref=f58e47] - group "관계" [ref=f58e48]: - generic [ref=f58e50]: - generic [ref=f58e51]: - generic [ref=f58e52]: 관계 1 대상 - combobox "관계 1 대상" [ref=f58e53]: - option "대상 선택" - option - option - option - option - option - option - option - option - option "실제 동시 트래픽에서도 이 구조가 안정적인가" - option "서버 세션 기반 인증 구조는 다중 인스턴스에서 어떻게 운영할 것인가" - option "ANALYZE 이후 Cardinality Estimate는 어떻게 달라지는가" - option "Authorization Code Flow의 Endpoint와 Credential 이동 기준" - option "Authorization Code와 PKCE가 보호하는 구간" - option "Bearer JWT가 인증된 principal이 되기까지" - option "BFF 인증 구조 설계 기준" - option "BFF가 OAuth Token을 관리하는 조건" - option "BFF의 Session과 OAuth2AuthorizedClient를 어디에 저장할 것인가" - option "Browser Token을 없애면서 BFF에 Session과 CSRF 책임이 생긴 과정" - option "Collection Fetch Join Pagination의 In-memory Paging" - option "Cookie로 인증하는 요청에서 CSRF token이 하는 일" - option "브라우저가 credential을 보관하는 위치와 그 성질" - option "DTO 변환 과정에서 발생한 Highlight 컬렉션 N+1" - option "필드 접근 없이 발생한 EAGER ToOne N+1" - option "Feed Visibility Query Pattern" - option "feed_visible을 Production CQRS로 승격할 것인가" - option "Fetch Join · Batch · Projection 선택 기준" [disabled] - option "Fetch Join으로 N+1을 해결하다 만난 MultiBag과 행 폭증" - option "Fetch Type과 Fetch Strategy 구분" - option "Forward-Auth 구조에서 Application Authorization을 어디까지 Edge에 둘 것인가" - option "Forward-Auth에서 Client가 보낸 Identity Header를 신뢰하면 안 되는 이유" - option "Forward-Auth에서 Identity Header를 신뢰하기 위한 조건" - option "Forward-Auth와 Nginx auth_request의 동작" - option "Highlight 없는 FeedItem을 허용할 것인가" - option "외부 IdP와의 연동이라도 별도의 인증 방식이 아니다." - option "외부 IdP 연동과 Application 인증 구조의 경계" - option "외부 IdP Brokering의 동작" - option "JPA N+1 정량 진단 기준" - option "Keyset Pagination 설계 기준" - option "OAuth/OIDC 인증 패턴 선택 기준" - option "OAuth Token과 Application Session을 구분하는 기준" - option "PostgreSQL Query Plan 측정 기준" [disabled] - option "Projection 이후에도 1,509행을 읽은 Row Over-fetch" [selected] - option "Public Client와 Confidential Client 구분 기준" - option "Refresh Token 관리만 서버로 이전, Access Token은 여전히 Browser에 노출" - option "Refresh Token Rotation과 다중 Replica 경쟁을 어떻게 처리할 것인가" - option "Round Trip과 Row Volume을 독립 측정할 것인가" - option "SPA에서 토큰을 직접 관리하면서 드러난 Browser Credential 경계" - option "Visibility OR이 Keyset Index를 깨뜨린 문제" - generic [ref=f58e54]: - generic [ref=f58e55]: 관계 1 이유 - textbox "관계 1 이유" [ref=f58e56]: 이 기준이 풀려던 문제다. - generic [ref=f58e57]: - button "위로" [disabled] [ref=f58e58] - button "아래로" [ref=f58e59] - button "삭제" [ref=f58e60] - generic [ref=f58e61]: - generic [ref=f58e62]: - generic [ref=f58e63]: 관계 2 대상 - combobox "관계 2 대상" [ref=f58e64]: - option "대상 선택" - option - option - option - option - option - option - option - option - option "실제 동시 트래픽에서도 이 구조가 안정적인가" - option "서버 세션 기반 인증 구조는 다중 인스턴스에서 어떻게 운영할 것인가" - option "ANALYZE 이후 Cardinality Estimate는 어떻게 달라지는가" - option "Authorization Code Flow의 Endpoint와 Credential 이동 기준" - option "Authorization Code와 PKCE가 보호하는 구간" - option "Bearer JWT가 인증된 principal이 되기까지" - option "BFF 인증 구조 설계 기준" - option "BFF가 OAuth Token을 관리하는 조건" - option "BFF의 Session과 OAuth2AuthorizedClient를 어디에 저장할 것인가" - option "Browser Token을 없애면서 BFF에 Session과 CSRF 책임이 생긴 과정" - option "Collection Fetch Join Pagination의 In-memory Paging" - option "Cookie로 인증하는 요청에서 CSRF token이 하는 일" - option "브라우저가 credential을 보관하는 위치와 그 성질" - option "DTO 변환 과정에서 발생한 Highlight 컬렉션 N+1" - option "필드 접근 없이 발생한 EAGER ToOne N+1" - option "Feed Visibility Query Pattern" - option "feed_visible을 Production CQRS로 승격할 것인가" - option "Fetch Join · Batch · Projection 선택 기준" [disabled] - option "Fetch Join으로 N+1을 해결하다 만난 MultiBag과 행 폭증" - option "Fetch Type과 Fetch Strategy 구분" - option "Forward-Auth 구조에서 Application Authorization을 어디까지 Edge에 둘 것인가" - option "Forward-Auth에서 Client가 보낸 Identity Header를 신뢰하면 안 되는 이유" - option "Forward-Auth에서 Identity Header를 신뢰하기 위한 조건" - option "Forward-Auth와 Nginx auth_request의 동작" - option "Highlight 없는 FeedItem을 허용할 것인가" - option "외부 IdP와의 연동이라도 별도의 인증 방식이 아니다." - option "외부 IdP 연동과 Application 인증 구조의 경계" - option "외부 IdP Brokering의 동작" - option "JPA N+1 정량 진단 기준" - option "Keyset Pagination 설계 기준" - option "OAuth/OIDC 인증 패턴 선택 기준" - option "OAuth Token과 Application Session을 구분하는 기준" - option "PostgreSQL Query Plan 측정 기준" [selected] - option "Projection 이후에도 1,509행을 읽은 Row Over-fetch" [disabled] - option "Public Client와 Confidential Client 구분 기준" - option "Refresh Token 관리만 서버로 이전, Access Token은 여전히 Browser에 노출" - option "Refresh Token Rotation과 다중 Replica 경쟁을 어떻게 처리할 것인가" - option "Round Trip과 Row Volume을 독립 측정할 것인가" - option "SPA에서 토큰을 직접 관리하면서 드러난 Browser Credential 경계" - option "Visibility OR이 Keyset Index를 깨뜨린 문제" - generic [ref=f58e65]: - generic [ref=f58e66]: 관계 2 이유 - textbox "관계 2 이유" [ref=f58e67]: 세 방식을 실행계획으로 비교한 기준이다. - generic [ref=f58e68]: - button "위로" [ref=f58e69] - button "아래로" [ref=f58e70] - button "삭제" [ref=f58e71] - generic [ref=f58e72]: - generic [ref=f58e73]: - generic [ref=f58e74]: 관계 3 대상 - combobox "관계 3 대상" [ref=f58e75]: - option "대상 선택" - option - option - option - option - option - option - option - option - option "실제 동시 트래픽에서도 이 구조가 안정적인가" - option "서버 세션 기반 인증 구조는 다중 인스턴스에서 어떻게 운영할 것인가" - option "ANALYZE 이후 Cardinality Estimate는 어떻게 달라지는가" - option "Authorization Code Flow의 Endpoint와 Credential 이동 기준" - option "Authorization Code와 PKCE가 보호하는 구간" - option "Bearer JWT가 인증된 principal이 되기까지" - option "BFF 인증 구조 설계 기준" - option "BFF가 OAuth Token을 관리하는 조건" - option "BFF의 Session과 OAuth2AuthorizedClient를 어디에 저장할 것인가" - option "Browser Token을 없애면서 BFF에 Session과 CSRF 책임이 생긴 과정" - option "Collection Fetch Join Pagination의 In-memory Paging" - option "Cookie로 인증하는 요청에서 CSRF token이 하는 일" - option "브라우저가 credential을 보관하는 위치와 그 성질" - option "DTO 변환 과정에서 발생한 Highlight 컬렉션 N+1" - option "필드 접근 없이 발생한 EAGER ToOne N+1" - option "Feed Visibility Query Pattern" - option "feed_visible을 Production CQRS로 승격할 것인가" - option "Fetch Join · Batch · Projection 선택 기준" [selected] - option "Fetch Join으로 N+1을 해결하다 만난 MultiBag과 행 폭증" - option "Fetch Type과 Fetch Strategy 구분" - option "Forward-Auth 구조에서 Application Authorization을 어디까지 Edge에 둘 것인가" - option "Forward-Auth에서 Client가 보낸 Identity Header를 신뢰하면 안 되는 이유" - option "Forward-Auth에서 Identity Header를 신뢰하기 위한 조건" - option "Forward-Auth와 Nginx auth_request의 동작" - option "Highlight 없는 FeedItem을 허용할 것인가" - option "외부 IdP와의 연동이라도 별도의 인증 방식이 아니다." - option "외부 IdP 연동과 Application 인증 구조의 경계" - option "외부 IdP Brokering의 동작" - option "JPA N+1 정량 진단 기준" - option "Keyset Pagination 설계 기준" - option "OAuth/OIDC 인증 패턴 선택 기준" - option "OAuth Token과 Application Session을 구분하는 기준" - option "PostgreSQL Query Plan 측정 기준" [disabled] - option "Projection 이후에도 1,509행을 읽은 Row Over-fetch" [disabled] - option "Public Client와 Confidential Client 구분 기준" - option "Refresh Token 관리만 서버로 이전, Access Token은 여전히 Browser에 노출" - option "Refresh Token Rotation과 다중 Replica 경쟁을 어떻게 처리할 것인가" - option "Round Trip과 Row Volume을 독립 측정할 것인가" - option "SPA에서 토큰을 직접 관리하면서 드러난 Browser Credential 경계" - option "Visibility OR이 Keyset Index를 깨뜨린 문제" - generic [ref=f58e76]: - generic [ref=f58e77]: 관계 3 이유 - textbox "관계 3 이유" [ref=f58e78]: 앞 단계에서 왕복과 적재를 푼 기준이다. - generic [ref=f58e79]: - button "위로" [ref=f58e80] - button "아래로" [disabled] [ref=f58e81] - button "삭제" [ref=f58e82] - button "관계 추가" [ref=f58e83] - region [ref=f58e84]: - generic [ref=f58e85]: - paragraph [ref=f58e86]: REFERENCE - heading "재사용할 기준" [level=2] [ref=f58e87] - generic [ref=f58e88]: - generic [ref=f58e89]: 이 기준을 쓰는 이유 - textbox "이 기준을 쓰는 이유" [ref=f58e90] - group "판단 기준" [ref=f58e91]: - paragraph [ref=f58e93]: 아직 입력한 판단 기준이 없습니다. - button "판단 기준 추가" [ref=f58e94] - group "적용할 때" [ref=f58e95]: - paragraph [ref=f58e97]: 아직 입력한 항목이 없습니다. - button "적용할 때 추가" [ref=f58e98] - group "예외와 주의" [ref=f58e99]: - paragraph [ref=f58e101]: 아직 입력한 항목이 없습니다. - button "예외와 주의 추가" [ref=f58e102] - group "예시" [ref=f58e103]: - paragraph [ref=f58e105]: 아직 입력한 항목이 없습니다. - button "예시 추가" [ref=f58e106] - generic [ref=f58e107]: - generic [ref=f58e108]: 마지막 검증일 - textbox "마지막 검증일" [ref=f58e109] - region [ref=f58e110]: - generic [ref=f58e111]: - paragraph [ref=f58e112]: LIVE - heading "즉시 미리보기" [level=2] [ref=f58e113] - generic [ref=f58e116]: - generic [ref=f58e117]: - navigation "문서 경로" [ref=f58e118]: - link "Reference" [ref=f58e119] [cursor=pointer]: - /url: /explore/references - generic [ref=f58e120]: / - generic [ref=f58e121]: JPA 피드 조회 성능 - generic [ref=f58e122]: / - generic [ref=f58e123]: Liner N + 1문제 - heading "Top-N-per-group 선택 기준" [level=1] [ref=f58e124] - paragraph [ref=f58e125]: 부모마다 상위 N개를 뽑는 일은 LIMIT으로 표현되지 않는다. 윈도우 함수, LATERAL, 애플리케이션 그룹핑 세 가지가 같은 결과를 만들지만 읽는 행수가 다르다. - generic [ref=f58e126]: - generic [ref=f58e127]: - term [ref=f58e128]: 유형 - definition [ref=f58e129]: Reference - generic [ref=f58e130]: - term [ref=f58e131]: 프로젝트 - definition [ref=f58e132]: Liner N + 1문제 - generic [ref=f58e133]: - term [ref=f58e134]: 게시 - definition [ref=f58e135]: 게시 전 - region [ref=f58e136]: - paragraph [ref=f58e137]: Purpose - heading "이 기준을 쓰는 이유" [level=2] [ref=f58e138] - article [ref=f58e139]: - region [ref=f58e140]: - heading "판단 기준" [level=2] [ref=f58e141] - list - region [ref=f58e142]: - heading "적용할 때" [level=2] [ref=f58e143] - list - region [ref=f58e144]: - heading "예외와 주의" [level=2] [ref=f58e145] - list - region [ref=f58e146]: - heading "예시" [level=2] [ref=f58e147] - list - paragraph [ref=f58e148]: 마지막 검증 - complementary [ref=f58e149]: - heading "작업 상태" [level=2] [ref=f58e150] - status "편집 상태" [ref=f58e151]: 저장됨 - generic [ref=f58e152]: - generic [ref=f58e153]: - term [ref=f58e154]: 저장 버전 - definition [ref=f58e155]: "2" - generic [ref=f58e156]: - term [ref=f58e157]: 종류 - definition [ref=f58e158]: Reference - paragraph [ref=f58e159]: 불완전한 초안도 저장할 수 있습니다. Ctrl+S 로도 저장합니다. 게시를 누르면 채워야 할 칸을 그 자리에 표시합니다. - generic [ref=f58e160]: - button "저장" [disabled] [ref=f58e161] - button "게시" [ref=f58e162] - paragraph [ref=f58e163]: 버전 2으로 저장했습니다.