Files
document-haness/docs/keycloak-session-store/final/assets/b2-primary-key-overwrite/b2-primary-key-overwrite.drawio
T

39 lines
3.6 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="app.diagrams.net" modified="2026-07-23T00:00:00.000Z" agent="techviz-harness" version="24.7.17" type="device">
<diagram id="b2-primary-key-overwrite" name="덮어쓰기를 만드는 기본키">
<mxGraphModel dx="1035" dy="305" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1035" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="n_s1" value="브라우저 A 세션" tooltip="세션 id 가 다르다. | Evidence: L745-L747" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#2563eb;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="70.0" y="60.0" width="150.0" height="64.0" as="geometry"/>
</mxCell>
<mxCell id="n_s2" value="브라우저 B 세션" tooltip="세션 id 가 다르다. | Evidence: L745-L747" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#2563eb;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="70.0" y="196.0" width="150.0" height="64.0" as="geometry"/>
</mxCell>
<mxCell id="n_token-row" value="토큰 행&lt;br/&gt;PRIMARY KEY (client_registration_id, principal_name)" tooltip="기본키에 세션 id 가 없어 둘이 같은 행을 쓴다. | Evidence: L776-L781" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;shape=cylinder3;boundedLbl=1;backgroundOutline=1;fillColor=#eef6fb;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
<mxGeometry x="380.0" y="124.5" width="300.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="n_leftover" value="로그아웃 후 남는 것&lt;br/&gt;평문 refresh token" tooltip="Redis 세션은 0 키인데 여기는 1 행이 남는다. | Evidence: L789-L794" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;shape=cylinder3;boundedLbl=1;backgroundOutline=1;fillColor=#eef6fb;strokeColor=#d97706;fillColor=#fffdf5;" vertex="1" parent="1">
<mxGeometry x="840.0" y="124.5" width="150.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="e_s1-t" value="principal 이름" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_s1" target="n_token-row">
<mxGeometry relative="1" as="geometry">
<mxPoint x="324.0" y="121.5" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_s2-t" value="같은 키 · 덮어쓰기" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_s2" target="n_token-row">
<mxGeometry relative="1" as="geometry">
<mxPoint x="324.0" y="198.5" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_t-l" value="로그아웃 미정리" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_token-row" target="n_leftover">
<mxGeometry relative="1" as="geometry">
<mxPoint x="760.0" y="132.0" as="offset"/>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>