| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <mxfile host="app.diagrams.net">
- <diagram name="Data Models" id="gWxjKlz6B-a68IHoGXtU">
- <mxGraphModel dx="2241" dy="791" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
- <root>
- <mxCell id="0" />
- <mxCell id="1" parent="0" />
- <mxCell id="gePvX5wIa_L2-Gd-ft29-1" parent="1" style="swimlane;startSize=40;fontSize=16;fillColor=#dae8fc;strokeColor=#6c8ebf;" value="Catalog DB (SQL)" vertex="1">
- <mxGeometry height="360" width="500" x="-60" y="20" as="geometry" />
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-21" edge="1" parent="gePvX5wIa_L2-Gd-ft29-1" source="gePvX5wIa_L2-Gd-ft29-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="gePvX5wIa_L2-Gd-ft29-16">
- <mxGeometry relative="1" as="geometry" />
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-22" edge="1" parent="gePvX5wIa_L2-Gd-ft29-1" source="gePvX5wIa_L2-Gd-ft29-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="gePvX5wIa_L2-Gd-ft29-17">
- <mxGeometry relative="1" as="geometry" />
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-15" parent="gePvX5wIa_L2-Gd-ft29-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;fontSize=16;" value="<div style="box-sizing: border-box; width: 100%; background: rgb(228, 228, 228); padding: 2px;"><b>ITEM</b></div><table style="width: 100%;" cellpadding="2" cellspacing="0"><tbody><tr><td><b>PK</b></td><td>id</td></tr><tr><td><b>FK</b></td><td>category_id</td></tr><tr><td><b>FK</b><br><br><br><br><br></td><td>seller_id<br>name<br>description<br>starting_price<br>created_at<br><br><br></td></tr></tbody></table>" vertex="1">
- <mxGeometry height="180" width="180" x="30" y="110" as="geometry" />
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-16" parent="gePvX5wIa_L2-Gd-ft29-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;fontSize=16;" value="<div style="box-sizing: border-box; width: 100%; background: rgb(228, 228, 228); padding: 2px;"><b>CATEGORY</b></div><table style="width: 100%;" cellpadding="2" cellspacing="0"><tbody><tr><td><b>PK</b></td><td>id</td></tr><tr><td><br></td><td>name</td></tr><tr><td></td><td><br><br><br></td></tr></tbody></table>" vertex="1">
- <mxGeometry height="80" width="180" x="280" y="90" as="geometry" />
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-17" parent="gePvX5wIa_L2-Gd-ft29-1" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;fontSize=16;" value="<div style="box-sizing: border-box; width: 100%; background: rgb(228, 228, 228); padding: 2px;"><b>SELLER</b></div><table style="width: 100%;" cellpadding="2" cellspacing="0"><tbody><tr><td><b>PK</b></td><td>id</td></tr><tr><td><br></td><td>user_id</td></tr><tr><td><br><br><br><br><br></td><td>rating<br>created_at<br><br><br><br></td></tr></tbody></table>" vertex="1">
- <mxGeometry height="120" width="180" x="280" y="210" as="geometry" />
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-7" parent="1" style="swimlane;startSize=40;fontSize=16;fillColor=#dae8fc;strokeColor=#6c8ebf;" value="User Service (SQL)" vertex="1">
- <mxGeometry height="360" width="360" x="570" y="20" as="geometry" />
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-19" parent="gePvX5wIa_L2-Gd-ft29-7" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;fontSize=16;" value="<div style="box-sizing: border-box; width: 100%; background: rgb(228, 228, 228); padding: 2px;"><b>USER</b></div><table style="width: 100%;" cellpadding="2" cellspacing="0"><tbody><tr><td><b>PK</b></td><td>id</td></tr><tr><td><br></td><td>username</td></tr><tr><td><br><br><br><br><br></td><td>email<br>created_at<br>external_id<br><br><br><br><br></td></tr></tbody></table>" vertex="1">
- <mxGeometry height="180" width="180" x="90" y="80" as="geometry" />
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-26" edge="1" parent="1" source="gePvX5wIa_L2-Gd-ft29-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.997;exitY=0.148;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;exitPerimeter=0;" target="gePvX5wIa_L2-Gd-ft29-19">
- <mxGeometry relative="1" as="geometry">
- <Array as="points">
- <mxPoint x="515" y="545" />
- <mxPoint x="515" y="350" />
- <mxPoint x="590" y="350" />
- <mxPoint x="590" y="235" />
- </Array>
- </mxGeometry>
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-9" parent="1" style="swimlane;startSize=40;fillColor=#fff2cc;strokeColor=#d6b656;" value="MongoDB (Persistence)" vertex="1">
- <mxGeometry height="440" width="420" x="-50" y="435" as="geometry" />
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-23" parent="gePvX5wIa_L2-Gd-ft29-9" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b><font style="font-size: 16px;">BID</font></b></p><hr size="1" style="border-style:solid;"><div style="height:2px;"><font face="Lucida Console" style="font-size: 16px;">&nbsp;{<br style="padding: 0px; margin: 0px;">&nbsp; &nbsp; &nbsp;<b>auctionId</b>: "uuid",<br style="padding: 0px; margin: 0px;">&nbsp; &nbsp; &nbsp;<b>itemId</b>: "uuid",<br style="padding: 0px; margin: 0px;">&nbsp; &nbsp; &nbsp;<b>sellerId</b>: "uuid",<br style="padding: 0px; margin: 0px;">&nbsp; &nbsp; &nbsp;<b>finalPrice</b>: 250.0,<br style="padding: 0px; margin: 0px;">&nbsp; &nbsp; &nbsp;<b>winnerUserId</b>: "uuid",<br style="padding: 0px; margin: 0px;">&nbsp; &nbsp; &nbsp;<b>bids</b>: [<br style="padding: 0px; margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<b>userId</b>: "u1", <b>amount</b>: 200},<br style="padding: 0px; margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<b>userId</b>: "u2", <b>amount</b>: 250}<br style="padding: 0px; margin: 0px;">&nbsp; &nbsp; &nbsp;]<br style="padding: 0px; margin: 0px;">&nbsp;}</font></div>" vertex="1">
- <mxGeometry height="270" width="330" x="45" y="70" as="geometry" />
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-11" parent="1" style="swimlane;startSize=40;fillColor=#f8cecc;strokeColor=#b85450;" value="Redis (State)" vertex="1">
- <mxGeometry height="390" width="320" x="610" y="435" as="geometry" />
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-24" parent="gePvX5wIa_L2-Gd-ft29-11" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="<p style="margin:0px;margin-top:4px;text-align:center;"><span style="font-size: 16px;"><b>Key: auction:{id}</b></span></p><hr size="1" style="border-style:solid;"><div style="height:2px;"><span style="font-size: 16px; text-align: center;">&nbsp;Type: HASH</span></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br style="padding: 0px; margin: 0px; font-size: 16px; text-align: center;"><span style="font-size: 16px; text-align: center;">&nbsp;currentPrice</span></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;">&nbsp;<font style="font-size: 16px;">itemId</font><br style="padding: 0px; margin: 0px; font-size: 16px; text-align: center;"><span style="font-size: 16px; text-align: center;">&nbsp;</span><span style="text-align: center;"><font style="font-size: 16px;">winnerUserId</font></span><br style="padding: 0px; margin: 0px; font-size: 16px; text-align: center;"><span style="font-size: 16px; text-align: center;">&nbsp;endTime</span></div>" vertex="1">
- <mxGeometry height="155" width="210" x="60" y="60" as="geometry" />
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-25" parent="gePvX5wIa_L2-Gd-ft29-11" style="verticalAlign=top;align=left;overflow=fill;html=1;whiteSpace=wrap;" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b><span style="font-size: 16px;">Key: auction:{id}:bids</span><br style="padding: 0px; margin: 0px; font-size: 16px;"></b></p><hr size="1" style="border-style:solid;"><div style="height:2px;"><span style="font-size: 16px; text-align: center;">&nbsp;Type:&nbsp;</span><span style="font-size: 16px; text-align: center; background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">ZSET</span></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><br></div><div style="height:2px;"><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></div><div style="height:2px;"><div style=""><span style="font-size: 16px; text-align: center;">&nbsp;score → amount</span><br style="padding: 0px; margin: 0px; font-size: 16px; text-align: center;"><span style="font-size: 16px; text-align: center;">&nbsp;value → userId</span></div></div>" vertex="1">
- <mxGeometry height="130" width="210" x="60" y="230" as="geometry" />
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-20" edge="1" parent="1" source="gePvX5wIa_L2-Gd-ft29-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="gePvX5wIa_L2-Gd-ft29-19">
- <mxGeometry relative="1" as="geometry" />
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-27" edge="1" parent="1" source="gePvX5wIa_L2-Gd-ft29-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="gePvX5wIa_L2-Gd-ft29-19">
- <mxGeometry relative="1" as="geometry" />
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-28" edge="1" parent="1" source="gePvX5wIa_L2-Gd-ft29-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" target="gePvX5wIa_L2-Gd-ft29-17">
- <mxGeometry relative="1" as="geometry">
- <Array as="points">
- <mxPoint x="470" y="730" />
- <mxPoint x="470" y="320" />
- </Array>
- </mxGeometry>
- </mxCell>
- </root>
- </mxGraphModel>
- </diagram>
- </mxfile>
|