| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <mxfile host="app.diagrams.net">
- <diagram name="Data Models" id="gWxjKlz6B-a68IHoGXtU">
- <mxGraphModel dx="2398" dy="876" 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;strokeWidth=2;" 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;strokeWidth=2;" 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="300" width="310" x="590" 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="65" 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;entryX=0;entryY=0.75;entryDx=0;entryDy=0;strokeWidth=2;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="gePvX5wIa_L2-Gd-ft29-19">
- <mxGeometry relative="1" as="geometry">
- <Array as="points">
- <mxPoint x="515" y="640" />
- <mxPoint x="515" y="350" />
- <mxPoint x="570" y="350" />
- <mxPoint x="570" y="235" />
- </Array>
- <mxPoint x="430" y="610" as="sourcePoint" />
- </mxGeometry>
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-9" parent="1" style="swimlane;startSize=40;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=16;" value="MongoDB (No-SQL)" vertex="1">
- <mxGeometry height="365" 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 style="">auctionId</b>: "uuid",<br style="padding: 0px; margin: 0px;">&nbsp; &nbsp; &nbsp;<b style="">itemId</b>: "uuid",<br style="padding: 0px; margin: 0px;">&nbsp; &nbsp; &nbsp;<b style="">sellerId</b>: "uuid",<br style="padding: 0px; margin: 0px;">&nbsp; &nbsp; &nbsp;<b style="">finalPrice</b>: 250.0,<br style="padding: 0px; margin: 0px;">&nbsp; &nbsp; &nbsp;<b style="">winnerUserId</b>: "uuid",<br style="padding: 0px; margin: 0px;">&nbsp; &nbsp; &nbsp;<b style="">bids</b>: [<br style="padding: 0px; margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<b style="">userId</b>: "u1", <b style="">amount</b>: 200},<br style="padding: 0px; margin: 0px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<b style="">userId</b>: "u2", <b style="">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;fontSize=16;" value="Redis (Key/Value)" vertex="1">
- <mxGeometry height="365" width="250" x="620" y="435" as="geometry" />
- </mxCell>
- <mxCell id="p3nAkC8L9AHW-8_PGBHP-5" parent="gePvX5wIa_L2-Gd-ft29-11" 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>Key: auction:{id}</b></div><table style="width: 100%;" cellpadding="2" cellspacing="0"><tbody><tr><td><br></td><td>itemId<br>startTime<br>endTime<br>currentPrice<br>winnerUserId<br><br></td></tr><tr><td><br></td><td><br></td></tr><tr><td><br><br><br><br><br></td><td><br><br><br><br></td></tr></tbody></table>" vertex="1">
- <mxGeometry height="130" width="180" x="40" y="70" as="geometry" />
- </mxCell>
- <mxCell id="p3nAkC8L9AHW-8_PGBHP-6" parent="gePvX5wIa_L2-Gd-ft29-11" 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>Key: auction:{id}:bids</b></div><table style="width: 100%;" cellpadding="2" cellspacing="0"><tbody><tr><td><br></td><td>userId<br>amount<br>timestamp<br><br><br><br></td></tr><tr><td><br></td><td><br></td></tr><tr><td><br><br><br><br><br></td><td><br><br><br><br></td></tr></tbody></table>" vertex="1">
- <mxGeometry height="90" width="180" x="40" y="225" 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;strokeWidth=2;" target="gePvX5wIa_L2-Gd-ft29-19">
- <mxGeometry relative="1" as="geometry" />
- </mxCell>
- <mxCell id="gePvX5wIa_L2-Gd-ft29-27" edge="1" parent="1" source="p3nAkC8L9AHW-8_PGBHP-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;strokeWidth=2;" target="gePvX5wIa_L2-Gd-ft29-15">
- <mxGeometry relative="1" as="geometry">
- <Array as="points">
- <mxPoint x="450" y="570" />
- <mxPoint x="450" y="420" />
- <mxPoint x="105" y="420" />
- </Array>
- <mxPoint x="665.0000000000005" y="535" as="sourcePoint" />
- </mxGeometry>
- </mxCell>
- <mxCell id="p3nAkC8L9AHW-8_PGBHP-2" edge="1" parent="1" source="gePvX5wIa_L2-Gd-ft29-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" target="gePvX5wIa_L2-Gd-ft29-15">
- <mxGeometry relative="1" as="geometry">
- <Array as="points">
- <mxPoint x="-90" y="573" />
- <mxPoint x="-90" y="220" />
- </Array>
- </mxGeometry>
- </mxCell>
- <mxCell id="p3nAkC8L9AHW-8_PGBHP-4" edge="1" parent="1" source="gePvX5wIa_L2-Gd-ft29-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;strokeWidth=2;" target="gePvX5wIa_L2-Gd-ft29-17">
- <mxGeometry relative="1" as="geometry">
- <Array as="points">
- <mxPoint x="400" y="573" />
- <mxPoint x="400" y="400" />
- <mxPoint x="355" y="400" />
- </Array>
- </mxGeometry>
- </mxCell>
- <mxCell id="p3nAkC8L9AHW-8_PGBHP-9" edge="1" parent="1" source="p3nAkC8L9AHW-8_PGBHP-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;strokeWidth=2;" target="gePvX5wIa_L2-Gd-ft29-19">
- <mxGeometry relative="1" as="geometry">
- <Array as="points">
- <mxPoint x="590" y="705" />
- <mxPoint x="590" y="360" />
- <mxPoint x="700" y="360" />
- </Array>
- </mxGeometry>
- </mxCell>
- <mxCell id="p3nAkC8L9AHW-8_PGBHP-11" edge="1" parent="1" source="p3nAkC8L9AHW-8_PGBHP-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;strokeWidth=2;" target="gePvX5wIa_L2-Gd-ft29-19">
- <mxGeometry relative="1" as="geometry">
- <Array as="points">
- <mxPoint x="890" y="570" />
- <mxPoint x="890" y="360" />
- <mxPoint x="790" y="360" />
- </Array>
- </mxGeometry>
- </mxCell>
- </root>
- </mxGraphModel>
- </diagram>
- </mxfile>
|