feat: 가상화 문서들 추가
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,156 @@
|
||||
{
|
||||
"version": "1.1",
|
||||
"title": "프로젝션은 엔티티 적재를 없앴지만 페이지당 자식 전량은 남긴다",
|
||||
"question": "스칼라 프로젝션으로 바꾼 뒤에도 남아 있는 과조회는 무엇인가?",
|
||||
"type": "data-flow",
|
||||
"direction": "TB",
|
||||
"audience": [
|
||||
"조회 전략을 단계적으로 바꾸는 백엔드 개발자"
|
||||
],
|
||||
"summary": "자식 IN 조회가 페이지 부모의 하이라이트를 전부 가져오고 화면은 부모별 최신 몇 개만 쓴다.",
|
||||
"alt": "페이지 부모에서 자식 IN 조회를 거쳐 자식 행 전량이 나오고, 화면이 그중 부모별 최신 몇 개만 쓰는 흐름. IN 조회 상자에는 엔티티 적재가 없다는 표시가 붙어 있다.",
|
||||
"long_description": "페이지 부모의 키가 자식 IN 조회로 들어간다. 이 조회는 엔티티를 만들지 않지만 페이지 부모의 하이라이트를 전부 가져온다. 화면이 실제로 쓰는 것은 부모별 최신 몇 개뿐이라 가져온 자식 행과 쓰는 자식 행 사이에 차이가 남는다.",
|
||||
"composition": {
|
||||
"profile": "component-flow",
|
||||
"diagram_only": true,
|
||||
"reference_ids": [
|
||||
"payment-event-flow"
|
||||
],
|
||||
"rationale": "부모 키에서 자식 조회를 거쳐 화면까지 값이 한 방향으로 흐르고, 그 경로의 마지막 구간에서만 양이 줄어드는 것이 이 절의 주장이다.",
|
||||
"focus_node": "fetched-child-rows"
|
||||
},
|
||||
"groups": [],
|
||||
"nodes": [
|
||||
{
|
||||
"id": "page-parents",
|
||||
"label": "페이지 부모",
|
||||
"kind": "source",
|
||||
"role": "source",
|
||||
"shape": "box",
|
||||
"description": "첫 페이지에 실린 부모 행",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 1121,
|
||||
"end_line": 1122
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "child-in-query",
|
||||
"label": "자식 IN 조회",
|
||||
"kind": "service",
|
||||
"role": "service",
|
||||
"shape": "box",
|
||||
"details": [
|
||||
"엔티티 적재 없음"
|
||||
],
|
||||
"description": "스칼라 프로젝션으로 바꾼 자식 조회",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 1121,
|
||||
"end_line": 1122
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "fetched-child-rows",
|
||||
"label": "자식 행 전량",
|
||||
"kind": "store",
|
||||
"role": "store",
|
||||
"shape": "box",
|
||||
"details": [
|
||||
"페이지 부모 하이라이트 전량"
|
||||
],
|
||||
"emphasis": "primary",
|
||||
"description": "IN 조회가 실제로 가져온 자식 행",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 1121,
|
||||
"end_line": 1123
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "screen-need",
|
||||
"label": "화면 사용분",
|
||||
"kind": "sink",
|
||||
"role": "sink",
|
||||
"shape": "box",
|
||||
"details": [
|
||||
"부모당 최신 몇 개"
|
||||
],
|
||||
"description": "화면 렌더링에 필요한 범위",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 1124,
|
||||
"end_line": 1125
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
}
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"id": "keys-in",
|
||||
"from": "page-parents",
|
||||
"to": "child-in-query",
|
||||
"label": "부모 키 IN",
|
||||
"kind": "query",
|
||||
"style": "solid",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 1121,
|
||||
"end_line": 1122
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "fetch-all",
|
||||
"from": "child-in-query",
|
||||
"to": "fetched-child-rows",
|
||||
"label": "부모별 전량 반환",
|
||||
"kind": "response",
|
||||
"style": "solid",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 1121,
|
||||
"end_line": 1123
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
},
|
||||
{
|
||||
"id": "use-some",
|
||||
"from": "fetched-child-rows",
|
||||
"to": "screen-need",
|
||||
"label": "부분 사용",
|
||||
"kind": "transform",
|
||||
"style": "dashed",
|
||||
"evidence": [
|
||||
{
|
||||
"start_line": 1124,
|
||||
"end_line": 1125
|
||||
}
|
||||
],
|
||||
"assumption": false
|
||||
}
|
||||
],
|
||||
"legend": [],
|
||||
"metadata": {
|
||||
"rationale": "엔티티 과적재가 사라진 자리와 아직 남은 과조회 자리를 한 경로 위에서 갈라 보여야 하므로 흐름으로 그린다."
|
||||
},
|
||||
"source_context": {
|
||||
"document": "docs/n+1liner/final/document.md",
|
||||
"document_sha256": "385ca44db5bf763cb1ff28a67d531d68876402b35d21dc54f2bc702e8bda0053",
|
||||
"anchor": {
|
||||
"kind": "heading",
|
||||
"value": "12.6 프로젝션이 못 푸는 것 — 페이지당 전량",
|
||||
"line": 1119
|
||||
}
|
||||
},
|
||||
"id": "projection-row-over-fetch"
|
||||
}
|
||||
Reference in New Issue
Block a user