diagrama_bbdds.drawio 15 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <mxfile host="app.diagrams.net">
  2. <diagram name="Data Models" id="gWxjKlz6B-a68IHoGXtU">
  3. <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">
  4. <root>
  5. <mxCell id="0" />
  6. <mxCell id="1" parent="0" />
  7. <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">
  8. <mxGeometry height="360" width="500" x="-60" y="20" as="geometry" />
  9. </mxCell>
  10. <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">
  11. <mxGeometry relative="1" as="geometry" />
  12. </mxCell>
  13. <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">
  14. <mxGeometry relative="1" as="geometry" />
  15. </mxCell>
  16. <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="&lt;div style=&quot;box-sizing: border-box; width: 100%; background: rgb(228, 228, 228); padding: 2px;&quot;&gt;&lt;b&gt;ITEM&lt;/b&gt;&lt;/div&gt;&lt;table style=&quot;width: 100%;&quot; cellpadding=&quot;2&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;id&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;FK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;category_id&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;FK&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/td&gt;&lt;td&gt;seller_id&lt;br&gt;name&lt;br&gt;description&lt;br&gt;starting_price&lt;br&gt;created_at&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;" vertex="1">
  17. <mxGeometry height="180" width="180" x="30" y="110" as="geometry" />
  18. </mxCell>
  19. <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="&lt;div style=&quot;box-sizing: border-box; width: 100%; background: rgb(228, 228, 228); padding: 2px;&quot;&gt;&lt;b&gt;CATEGORY&lt;/b&gt;&lt;/div&gt;&lt;table style=&quot;width: 100%;&quot; cellpadding=&quot;2&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;id&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br&gt;&lt;/td&gt;&lt;td&gt;name&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;" vertex="1">
  20. <mxGeometry height="80" width="180" x="280" y="90" as="geometry" />
  21. </mxCell>
  22. <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="&lt;div style=&quot;box-sizing: border-box; width: 100%; background: rgb(228, 228, 228); padding: 2px;&quot;&gt;&lt;b&gt;SELLER&lt;/b&gt;&lt;/div&gt;&lt;table style=&quot;width: 100%;&quot; cellpadding=&quot;2&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;id&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br&gt;&lt;/td&gt;&lt;td&gt;user_id&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/td&gt;&lt;td&gt;rating&lt;br&gt;created_at&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;" vertex="1">
  23. <mxGeometry height="120" width="180" x="280" y="210" as="geometry" />
  24. </mxCell>
  25. <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">
  26. <mxGeometry height="360" width="360" x="570" y="20" as="geometry" />
  27. </mxCell>
  28. <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="&lt;div style=&quot;box-sizing: border-box; width: 100%; background: rgb(228, 228, 228); padding: 2px;&quot;&gt;&lt;b&gt;USER&lt;/b&gt;&lt;/div&gt;&lt;table style=&quot;width: 100%;&quot; cellpadding=&quot;2&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;PK&lt;/b&gt;&lt;/td&gt;&lt;td&gt;id&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br&gt;&lt;/td&gt;&lt;td&gt;username&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/td&gt;&lt;td&gt;email&lt;br&gt;created_at&lt;br&gt;external_id&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;" vertex="1">
  29. <mxGeometry height="180" width="180" x="90" y="80" as="geometry" />
  30. </mxCell>
  31. <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">
  32. <mxGeometry relative="1" as="geometry">
  33. <Array as="points">
  34. <mxPoint x="515" y="545" />
  35. <mxPoint x="515" y="350" />
  36. <mxPoint x="590" y="350" />
  37. <mxPoint x="590" y="235" />
  38. </Array>
  39. </mxGeometry>
  40. </mxCell>
  41. <mxCell id="gePvX5wIa_L2-Gd-ft29-9" parent="1" style="swimlane;startSize=40;fillColor=#fff2cc;strokeColor=#d6b656;" value="MongoDB (Persistence)" vertex="1">
  42. <mxGeometry height="440" width="420" x="-50" y="435" as="geometry" />
  43. </mxCell>
  44. <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="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;&lt;font style=&quot;font-size: 16px;&quot;&gt;BID&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;font face=&quot;Lucida Console&quot; style=&quot;font-size: 16px;&quot;&gt;&amp;nbsp;{&lt;br style=&quot;padding: 0px; margin: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;auctionId&lt;/b&gt;: &quot;uuid&quot;,&lt;br style=&quot;padding: 0px; margin: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;itemId&lt;/b&gt;: &quot;uuid&quot;,&lt;br style=&quot;padding: 0px; margin: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;sellerId&lt;/b&gt;: &quot;uuid&quot;,&lt;br style=&quot;padding: 0px; margin: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;finalPrice&lt;/b&gt;: 250.0,&lt;br style=&quot;padding: 0px; margin: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;winnerUserId&lt;/b&gt;: &quot;uuid&quot;,&lt;br style=&quot;padding: 0px; margin: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;bids&lt;/b&gt;: [&lt;br style=&quot;padding: 0px; margin: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;b&gt;userId&lt;/b&gt;: &quot;u1&quot;, &lt;b&gt;amount&lt;/b&gt;: 200},&lt;br style=&quot;padding: 0px; margin: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;b&gt;userId&lt;/b&gt;: &quot;u2&quot;, &lt;b&gt;amount&lt;/b&gt;: 250}&lt;br style=&quot;padding: 0px; margin: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;]&lt;br style=&quot;padding: 0px; margin: 0px;&quot;&gt;&amp;nbsp;}&lt;/font&gt;&lt;/div&gt;" vertex="1">
  45. <mxGeometry height="270" width="330" x="45" y="70" as="geometry" />
  46. </mxCell>
  47. <mxCell id="gePvX5wIa_L2-Gd-ft29-11" parent="1" style="swimlane;startSize=40;fillColor=#f8cecc;strokeColor=#b85450;" value="Redis (State)" vertex="1">
  48. <mxGeometry height="390" width="320" x="610" y="435" as="geometry" />
  49. </mxCell>
  50. <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="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;b&gt;Key: auction:{id}&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-align: center;&quot;&gt;&amp;nbsp;Type: HASH&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br style=&quot;padding: 0px; margin: 0px; font-size: 16px; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-align: center;&quot;&gt;&amp;nbsp;currentPrice&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&amp;nbsp;&lt;font style=&quot;font-size: 16px;&quot;&gt;itemId&lt;/font&gt;&lt;br style=&quot;padding: 0px; margin: 0px; font-size: 16px; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-align: center;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: center;&quot;&gt;&lt;font style=&quot;font-size: 16px;&quot;&gt;winnerUserId&lt;/font&gt;&lt;/span&gt;&lt;br style=&quot;padding: 0px; margin: 0px; font-size: 16px; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-align: center;&quot;&gt;&amp;nbsp;endTime&lt;/span&gt;&lt;/div&gt;" vertex="1">
  51. <mxGeometry height="155" width="210" x="60" y="60" as="geometry" />
  52. </mxCell>
  53. <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="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Key: auction:{id}:bids&lt;/span&gt;&lt;br style=&quot;padding: 0px; margin: 0px; font-size: 16px;&quot;&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot; style=&quot;border-style:solid;&quot;&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-align: center;&quot;&gt;&amp;nbsp;Type:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 16px; text-align: center; background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;ZSET&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;height:2px;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-align: center;&quot;&gt;&amp;nbsp;score → amount&lt;/span&gt;&lt;br style=&quot;padding: 0px; margin: 0px; font-size: 16px; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 16px; text-align: center;&quot;&gt;&amp;nbsp;value → userId&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;" vertex="1">
  54. <mxGeometry height="130" width="210" x="60" y="230" as="geometry" />
  55. </mxCell>
  56. <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">
  57. <mxGeometry relative="1" as="geometry" />
  58. </mxCell>
  59. <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">
  60. <mxGeometry relative="1" as="geometry" />
  61. </mxCell>
  62. <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">
  63. <mxGeometry relative="1" as="geometry">
  64. <Array as="points">
  65. <mxPoint x="470" y="730" />
  66. <mxPoint x="470" y="320" />
  67. </Array>
  68. </mxGeometry>
  69. </mxCell>
  70. </root>
  71. </mxGraphModel>
  72. </diagram>
  73. </mxfile>