ARCHITECTURE_5.svg 23 KB

1
  1. <svg id="mermaid-svg" width="100%" xmlns="http://www.w3.org/2000/svg" class="flowchart" style="max-width: 1019.8125px;" viewBox="0 0 1019.8125 620.2528686523438" role="graphics-document document" aria-roledescription="flowchart-v2" xmlns:xlink="http://www.w3.org/1999/xlink"><style xmlns="http://www.w3.org/1999/xhtml">@import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css");</style><style>#mermaid-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg .error-icon{fill:#552222;}#mermaid-svg .error-text{fill:#552222;stroke:#552222;}#mermaid-svg .edge-thickness-normal{stroke-width:1px;}#mermaid-svg .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg .marker{fill:#333333;stroke:#333333;}#mermaid-svg .marker.cross{stroke:#333333;}#mermaid-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg p{margin:0;}#mermaid-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg .cluster-label text{fill:#333;}#mermaid-svg .cluster-label span{color:#333;}#mermaid-svg .cluster-label span p{background-color:transparent;}#mermaid-svg .label text,#mermaid-svg span{fill:#333;color:#333;}#mermaid-svg .node rect,#mermaid-svg .node circle,#mermaid-svg .node ellipse,#mermaid-svg .node polygon,#mermaid-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg .rough-node .label text,#mermaid-svg .node .label text,#mermaid-svg .image-shape .label,#mermaid-svg .icon-shape .label{text-anchor:middle;}#mermaid-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg .rough-node .label,#mermaid-svg .node .label,#mermaid-svg .image-shape .label,#mermaid-svg .icon-shape .label{text-align:center;}#mermaid-svg .node.clickable{cursor:pointer;}#mermaid-svg .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg .arrowheadPath{fill:#333333;}#mermaid-svg .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg .cluster text{fill:#333;}#mermaid-svg .cluster span{color:#333;}#mermaid-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg rect.text{fill:none;stroke-width:0;}#mermaid-svg .icon-shape,#mermaid-svg .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg .icon-shape p,#mermaid-svg .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg .icon-shape rect,#mermaid-svg .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker id="mermaid-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="mermaid-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="mermaid-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="mermaid-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="mermaid-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="mermaid-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"/><g class="edgePaths"><path d="M98.455,372.591L112.812,346.148C127.168,319.704,155.881,266.817,173.737,240.373C191.594,213.93,198.594,213.93,202.094,213.93L205.594,213.93" id="L_APP_PG_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_APP_PG_0" data-points="W3sieCI6OTguNDU1MzU4NzgxODA5MSwieSI6MzcyLjU5MTM4ODcwMjM5MjZ9LHsieCI6MTg0LjU5Mzc1LCJ5IjoyMTMuOTI5OTIwMTk2NTMzMn0seyJ4IjoyMDkuNTkzNzUsInkiOjIxMy45Mjk5MjAxOTY1MzMyfV0=" marker-end="url(#mermaid-svg_flowchart-v2-pointEnd)"/><path d="M286.918,179.497L301.748,159.414C316.578,139.332,346.238,99.166,378.217,79.083C410.195,59,444.492,59,461.641,59L478.789,59" id="L_PG_TS_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_PG_TS_0" data-points="W3sieCI6Mjg2LjkxNzY4Mjk1NzE2MTE2LCJ5IjoxNzkuNDk3Mzc3MzI4MzUyOH0seyJ4IjozNzUuODk4NDM3NSwieSI6NTl9LHsieCI6NDc4Ljc4OTA2MjUsInkiOjU5fV0="/><path d="M664.836,59L675.165,59C685.495,59,706.154,59,720.65,59C735.146,59,743.479,59,747.646,59L751.813,59" id="L_TS_HG1_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_TS_HG1_0" data-points="W3sieCI6NjY0LjgzNTkzNzUsInkiOjU5fSx7IngiOjcyNi44MTI1LCJ5Ijo1OX0seyJ4Ijo3NTEuODEyNSwieSI6NTl9XQ=="/><path d="M309.984,213.93L320.97,213.93C331.956,213.93,353.927,213.93,375.898,213.93C397.87,213.93,419.841,213.93,430.827,213.93L441.813,213.93" id="L_PG_CORE_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_PG_CORE_0" data-points="W3sieCI6MzA5Ljk4NDM3NSwieSI6MjEzLjkyOTkyMDE5NjUzMzJ9LHsieCI6Mzc1Ljg5ODQzNzUsInkiOjIxMy45Mjk5MjAxOTY1MzMyfSx7IngiOjQ0MS44MTI1LCJ5IjoyMTMuOTI5OTIwMTk2NTMzMn1d"/><path d="M104.158,426.591L117.564,444.368C130.97,462.145,157.782,497.699,177.283,515.476C196.784,533.253,208.974,533.253,215.069,533.253L221.164,533.253" id="L_APP_RD_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_APP_RD_0" data-points="W3sieCI6MTA0LjE1ODEzMjg1MTA2NjQ1LCJ5Ijo0MjYuNTkxMzg4NzAyMzkyNn0seyJ4IjoxODQuNTkzNzUsInkiOjUzMy4yNTI4NTcyMDgyNTJ9LHsieCI6MjI1LjE2NDA2MjUsInkiOjUzMy4yNTI4NTcyMDgyNTJ9XQ==" marker-end="url(#mermaid-svg_flowchart-v2-pointEnd)"/><path d="M294.414,517.746L307.995,511.664C321.576,505.582,348.737,493.417,376.85,487.335C404.964,481.253,434.029,481.253,448.561,481.253L463.094,481.253" id="L_RD_DEDUPE_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_RD_DEDUPE_0" data-points="W3sieCI6Mjk0LjQxNDA2MjUsInkiOjUxNy43NDU5MjY3ODE2NjA2fSx7IngiOjM3NS44OTg0Mzc1LCJ5Ijo0ODEuMjUyODU3MjA4MjUxOTV9LHsieCI6NDYzLjA5Mzc1LCJ5Ijo0ODEuMjUyODU3MjA4MjUxOTV9XQ=="/><path d="M294.414,548.76L307.995,554.842C321.576,560.924,348.737,573.089,376.26,579.171C403.784,585.253,431.669,585.253,445.612,585.253L459.555,585.253" id="L_RD_RL_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_RD_RL_0" data-points="W3sieCI6Mjk0LjQxNDA2MjUsInkiOjU0OC43NTk3ODc2MzQ4NDMzfSx7IngiOjM3NS44OTg0Mzc1LCJ5Ijo1ODUuMjUyODU3MjA4MjUyfSx7IngiOjQ1OS41NTQ2ODc1LCJ5Ijo1ODUuMjUyODU3MjA4MjUyfV0="/><path d="M287.502,248.278L302.235,267.83C316.968,287.382,346.433,326.487,382.267,346.039C418.102,365.591,460.305,365.591,481.406,365.591L502.508,365.591" id="L_PG_CH_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_PG_CH_0" data-points="W3sieCI6Mjg3LjUwMjMzMTAzMDc0NTA0LCJ5IjoyNDguMjc3ODcxNjAxMzI0NTZ9LHsieCI6Mzc1Ljg5ODQzNzUsInkiOjM2NS41OTEzODg3MDIzOTI2fSx7IngiOjUwNi41MDc4MTI1LCJ5IjozNjUuNTkxMzg4NzAyMzkyNn1d" marker-end="url(#mermaid-svg_flowchart-v2-pointEnd)"/><path d="M614.224,329.99L632.989,312.375C651.753,294.759,689.283,259.527,720.58,241.911C751.878,224.296,776.943,224.296,789.475,224.296L802.008,224.296" id="L_CH_AR1_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_CH_AR1_0" data-points="W3sieCI6NjE0LjIyMzc1NDI1NjAxMSwieSI6MzI5Ljk5MDQ0NDY4ODgxNTg0fSx7IngiOjcyNi44MTI1LCJ5IjoyMjQuMjk1Njk0MzUxMTk2M30seyJ4Ijo4MDIuMDA3ODEyNSwieSI6MjI0LjI5NTY5NDM1MTE5NjN9XQ=="/><path d="M637.117,365.591L652.066,365.591C667.016,365.591,696.914,365.591,722.025,365.591C747.135,365.591,767.458,365.591,777.62,365.591L787.781,365.591" id="L_CH_AR2_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_CH_AR2_0" data-points="W3sieCI6NjM3LjExNzE4NzUsInkiOjM2NS41OTEzODg3MDIzOTI2fSx7IngiOjcyNi44MTI1LCJ5IjozNjUuNTkxMzg4NzAyMzkyNn0seyJ4Ijo3ODcuNzgxMjUsInkiOjM2NS41OTEzODg3MDIzOTI2fV0="/><path d="M623.472,399.293L640.696,413.01C657.919,426.726,692.366,454.159,714.958,467.875C737.549,481.591,748.286,481.591,753.655,481.591L759.023,481.591" id="L_CH_AGG_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_CH_AGG_0" data-points="W3sieCI6NjIzLjQ3MjIyMDg0ODM0NjUsInkiOjM5OS4yOTMxMzU3NTE4Njg3Nn0seyJ4Ijo3MjYuODEyNSwieSI6NDgxLjU5MTM4ODcwMjM5MjZ9LHsieCI6NzU5LjAyMzQzNzUsInkiOjQ4MS41OTEzODg3MDIzOTI2fV0="/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_APP_PG_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_PG_TS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_TS_HG1_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_PG_CORE_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_APP_RD_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_RD_DEDUPE_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_RD_RL_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(375.8984375, 365.5913887023926)"><g class="label" data-id="L_PG_CH_0" transform="translate(-40.9140625, -12)"><foreignObject width="81.828125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "><p>nightly cron</p></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_CH_AR1_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_CH_AR2_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_CH_AGG_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g></g><g class="nodes"><g class="node default " id="flowchart-APP-0" transform="translate(83.796875, 399.5913887023926)"><rect class="basic label-container" style="" x="-75.796875" y="-27" width="151.59375" height="54"/><g class="label" style="" transform="translate(-45.796875, -12)"><rect/><foreignObject width="91.59375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>App services</p></span></div></foreignObject></g></g><g class="node default " id="flowchart-PG-1" transform="translate(259.7890625, 213.9299201965332)"><path d="M0,11.135181975736568 a50.1953125,11.135181975736568 0,0,0 100.390625,0 a50.1953125,11.135181975736568 0,0,0 -100.390625,0 l0,50.13518197573657 a50.1953125,11.135181975736568 0,0,0 100.390625,0 l0,-50.13518197573657" class="basic label-container" style="" label-offset-y="11.135181975736568" transform="translate(-50.1953125, -36.20277296360486)"/><g class="label" style="" transform="translate(-42.6953125, -2)"><rect/><foreignObject width="85.390625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>Postgres 16</p></span></div></foreignObject></g></g><g class="node default " id="flowchart-TS-3" transform="translate(571.8125, 59)"><path d="M0,14.953282764856583 a93.0234375,14.953282764856583 0,0,0 186.046875,0 a93.0234375,14.953282764856583 0,0,0 -186.046875,0 l0,53.95328276485658 a93.0234375,14.953282764856583 0,0,0 186.046875,0 l0,-53.95328276485658" class="basic label-container" style="" label-offset-y="14.953282764856583" transform="translate(-93.0234375, -41.92992414728487)"/><g class="label" style="" transform="translate(-85.5234375, -2)"><rect/><foreignObject width="171.046875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>Timescale 2.x extension</p></span></div></foreignObject></g></g><g class="node default " id="flowchart-HG1-5" transform="translate(881.8125, 59)"><rect class="basic label-container" style="" x="-130" y="-51" width="260" height="102"/><g class="label" style="" transform="translate(-100, -36)"><rect/><foreignObject width="200" height="72"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel "><p>hypertables: alerts, deliveries<br />7d retention</p></span></div></foreignObject></g></g><g class="node default " id="flowchart-CORE-7" transform="translate(571.8125, 213.9299201965332)"><rect class="basic label-container" style="" x="-130" y="-63" width="260" height="126"/><g class="label" style="" transform="translate(-100, -48)"><rect/><foreignObject width="200" height="96"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel "><p>regular tables: companies,<br />individuals, groups, fcm_tokens,<br />sources, subscriptions, bots</p></span></div></foreignObject></g></g><g class="node default " id="flowchart-RD-9" transform="translate(259.7890625, 533.252857208252)"><path d="M0,8.912483912483912 a34.625,8.912483912483912 0,0,0 69.25,0 a34.625,8.912483912483912 0,0,0 -69.25,0 l0,47.912483912483914 a34.625,8.912483912483912 0,0,0 69.25,0 l0,-47.912483912483914" class="basic label-container" style="" label-offset-y="8.912483912483912" transform="translate(-34.625, -32.86872586872587)"/><g class="label" style="" transform="translate(-27.125, -2)"><rect/><foreignObject width="54.25" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>Redis 7</p></span></div></foreignObject></g></g><g class="node default " id="flowchart-DEDUPE-11" transform="translate(571.8125, 481.25285720825195)"><rect class="basic label-container" style="" x="-108.71875" y="-27" width="217.4375" height="54"/><g class="label" style="" transform="translate(-78.71875, -12)"><rect/><foreignObject width="157.4375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>dedupe keys, TTL 60s</p></span></div></foreignObject></g></g><g class="node default " id="flowchart-RL-13" transform="translate(571.8125, 585.252857208252)"><rect class="basic label-container" style="" x="-112.2578125" y="-27" width="224.515625" height="54"/><g class="label" style="" transform="translate(-82.2578125, -12)"><rect/><foreignObject width="164.515625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>rate-limit token buckets</p></span></div></foreignObject></g></g><g class="node default " id="flowchart-CH-15" transform="translate(571.8125, 365.5913887023926)"><path d="M0,12.774313833363898 a65.3046875,12.774313833363898 0,0,0 130.609375,0 a65.3046875,12.774313833363898 0,0,0 -130.609375,0 l0,51.7743138333639 a65.3046875,12.774313833363898 0,0,0 130.609375,0 l0,-51.7743138333639" class="basic label-container" style="" label-offset-y="12.774313833363898" transform="translate(-65.3046875, -38.66147075004585)"/><g class="label" style="" transform="translate(-57.8046875, -2)"><rect/><foreignObject width="115.609375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>ClickHouse 24.x</p></span></div></foreignObject></g></g><g class="node default " id="flowchart-AR1-17" transform="translate(881.8125, 224.2956943511963)"><rect class="basic label-container" style="" x="-79.8046875" y="-27" width="159.609375" height="54"/><g class="label" style="" transform="translate(-49.8046875, -12)"><rect/><foreignObject width="99.609375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>alerts_archive</p></span></div></foreignObject></g></g><g class="node default " id="flowchart-AR2-19" transform="translate(881.8125, 365.5913887023926)"><rect class="basic label-container" style="" x="-94.03125" y="-27" width="188.0625" height="54"/><g class="label" style="" transform="translate(-64.03125, -12)"><rect/><foreignObject width="128.0625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>deliveries_archive</p></span></div></foreignObject></g></g><g class="node default " id="flowchart-AGG-21" transform="translate(881.8125, 481.5913887023926)"><rect class="basic label-container" style="" x="-122.7890625" y="-39" width="245.578125" height="78"/><g class="label" style="" transform="translate(-92.7890625, -24)"><rect/><foreignObject width="185.578125" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>materialized aggregates<br />per-company, per-channel</p></span></div></foreignObject></g></g></g></g></g></svg>