Slides
|
@ -27,15 +27,54 @@ textbook: Ch. 20.1, 20.3, 20.4
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<img src="2021-03-18/node_resources.svg" height="500px">
|
<img src="2021-03-18/node_resources.svg" height="500px" />
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Communication Models</h3>
|
||||||
|
<img src="2021-03-18/communication_base.svg" />
|
||||||
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<h3>Splitting Work</h3>
|
<h3>Shared Memory</h3>
|
||||||
|
<img src="2021-03-18/communication_sharedmem.svg" />
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Non-Uniform Memory Access</h3>
|
||||||
|
<img src="2021-03-18/communication_numa.svg" />
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Shared Nothing / Message Passing</h3>
|
||||||
|
<img src="2021-03-18/communication_sharednothing.svg" />
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<dl>
|
||||||
|
<dt class="fragment highlight-grey" data-fragment-index=1>Shared Memory</dt>
|
||||||
|
<dd class="fragment highlight-grey" data-fragment-index=1>HDFS, S3, RAM+Modern OSes</dd>
|
||||||
|
<dt class="fragment highlight-grey" data-fragment-index=1>NUMA</dt>
|
||||||
|
<dd class="fragment highlight-grey" data-fragment-index=1>AMD CPUs</dd>
|
||||||
|
<dt>Shared Nothing</dt>
|
||||||
|
<dd>MPP, Actor Model</dd>
|
||||||
|
|
||||||
|
<p class="fragment" data-fragment-index=1>Today we want to clearly see the communications.</p>
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>The Basic Model</h3>
|
||||||
|
|
||||||
|
<svg data-src="2021-03-18/single_worker.svg" />
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Putting Workers Together</h3>
|
||||||
|
|
||||||
<svg data-src="2021-03-18/assembly_line.svg" height="500px"/>
|
<svg data-src="2021-03-18/assembly_line.svg" height="500px"/>
|
||||||
|
|
||||||
|
@ -43,7 +82,39 @@ textbook: Ch. 20.1, 20.3, 20.4
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
|
<svg data-src="2021-03-18/bottlenecks.svg" />
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<section>
|
||||||
|
<h3>No Parallelism</h3>
|
||||||
|
<img src="2021-03-18/query.svg">
|
||||||
|
<attribution>freesvg.org</attribution>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>"Pipeline" Parallelism</h3>
|
||||||
|
<img src="2021-03-18/query_pipeline.svg">
|
||||||
|
<attribution>freesvg.org</attribution>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>"Pipeline" Parallelism</h3>
|
||||||
|
<img src="2021-03-18/query_partition.svg">
|
||||||
|
<attribution>freesvg.org</attribution>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Together</h3>
|
||||||
|
<img src="2021-03-18/query_full.svg">
|
||||||
|
<attribution>freesvg.org</attribution>
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<section>
|
||||||
|
<svg data-src="2021-03-18/partition_challenge.svg" />
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
|
@ -51,17 +122,400 @@ textbook: Ch. 20.1, 20.3, 20.4
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Replication</th>
|
<th class="fragment highlight-grey" data-fragment-index=3>Replication</th>
|
||||||
<td style="width: 20px"></td>
|
<td style="width: 20px"></td>
|
||||||
<th>Partitioning (Sharding)</th>
|
<th>Partitioning (Sharding)</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><img class="fragment" src="2021-03-18/replication.svg" /></td>
|
<td><img class="fragment" data-fragment-index=1 src="2021-03-18/replication.svg" /></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td><img class="fragment" src="2021-03-18/partitioning.svg" /></td>
|
<td><img class="fragment" data-fragment-index=2 src="2021-03-18/partitioning.svg" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>How to Partition Data?</h3>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Arbitrarily</li>
|
||||||
|
<li class="fragment highlight-grey" data-fragment-index="2">Range</li>
|
||||||
|
<li class="fragment highlight-grey" data-fragment-index="2">Hash</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p class="fragment" data-fragment-index="1" style="font-size: 70%">look familiar?</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<p>Can we run each worker on one partition?</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Filter</h3>
|
||||||
|
|
||||||
|
<h2 class="fragment">Yes</h2>
|
||||||
|
|
||||||
|
<p class="fragment">$N$ partitions in, $N$ partitions out</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Project</h3>
|
||||||
|
|
||||||
|
<h2 class="fragment">Yes</h2>
|
||||||
|
|
||||||
|
<p class="fragment">$N$ partitions in, $N$ partitions out</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Union</h3>
|
||||||
|
|
||||||
|
<h2 class="fragment">Yes</h2>
|
||||||
|
|
||||||
|
<p class="fragment">Trick question, just combines partitions!</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>(Single-row) Aggregate</h3>
|
||||||
|
|
||||||
|
<h2 class="fragment">No</h2>
|
||||||
|
|
||||||
|
<p class="fragment">$N$ partitions in, $1$ partition out</p>
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<section>
|
||||||
|
<svg data-src="2021-03-18/query_aggregate.svg" />
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Partial Aggregation</h3>
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<dt>Algebraic Aggregates (Count, Sum, Avg, Min, Max)</dt>
|
||||||
|
<dd>Bounded-size intermediate state</dd>
|
||||||
|
|
||||||
|
<dt class="fragment highlight-grey" data-fragment-index=1>Holistic Aggregates (Median, Mode, Count-Distinct)</dt>
|
||||||
|
<dd class="fragment highlight-grey" data-fragment-index=1><b>Un</b>bounded-size intermediate state</dd>
|
||||||
|
</dl>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<div>
|
||||||
|
$$\Sigma_{SUM} (R_1 \uplus R_2 \uplus \ldots \uplus R_N)$$
|
||||||
|
</div>
|
||||||
|
<p class="fragment">Aggregate needs to process $N$ <b>partitions</b>.</p>
|
||||||
|
|
||||||
|
<div class="fragment" style="margin-top: 100px">
|
||||||
|
$$\Sigma_{SUM} (\Sigma_{SUM}(R_1) \uplus \Sigma_{SUM}(R_2) \uplus \ldots \uplus \Sigma_{SUM}(R_N))$$
|
||||||
|
</div>
|
||||||
|
<p class="fragment">Final aggregate only needs to process $N$ <b>tuples</b>.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<div>
|
||||||
|
$$\Sigma_{AVG} (R_1 \uplus R_2 \uplus \ldots \uplus R_N)$$
|
||||||
|
</div>
|
||||||
|
<p>↓↓↓↓↓</p>
|
||||||
|
<div>
|
||||||
|
$$\Sigma_{\frac{SUM(A)}{SUM(B)}} (\Sigma_{A \leftarrow SUM,\; B \leftarrow COUNT}(R_1) \ldots \Sigma_{A \leftarrow SUM,\; B \leftarrow COUNT}(R_N))$$
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Basic Aggregate Pattern</h3>
|
||||||
|
<dl>
|
||||||
|
<dt>Init</dt>
|
||||||
|
<dd>Define a starting value for the accumulator</dd>
|
||||||
|
<dt>Fold(Accum, New)</dt>
|
||||||
|
<dd>Merge a new value into the accumulator</dd>
|
||||||
|
<dt>Finalize(Accum)</dt>
|
||||||
|
<dd>Extract the aggregate from the accumulator.</dd>
|
||||||
|
<dt class="fragment" data-fragment-index=1>Merge(Accum, Accum)</dt>
|
||||||
|
<dd class="fragment" data-fragment-index=1>Merge two accumulators together.</dd>
|
||||||
|
</dl>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<img src="2021-03-18/query_aggregate_merge.svg" />
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<section>
|
||||||
|
<h3>Joins</h3>
|
||||||
|
|
||||||
|
<h2 class="fragment">No</h2>
|
||||||
|
|
||||||
|
<p class="fragment">Every partition from one table needs to pair <br/>with every partition from the other.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
$$(R_1 \uplus \ldots \uplus R_N) \bowtie (S_1 \uplus \ldots \uplus S_K)$$
|
||||||
|
<p style="margin-bottom: 50px; margin-top: 50px;">↓↓↓↓↓↓</p>
|
||||||
|
$$(R_1 \bowtie S_1) \uplus \ldots \uplus (R_1 \bowtie S_K)$$
|
||||||
|
$$\ldots\uplus \ldots \uplus \ldots$$
|
||||||
|
$$(R_N \bowtie S_1) \uplus \ldots \uplus (R_N \bowtie S_K)$$
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<% (1..4).each do |j| %><td>$S_<%= j %>$</td><%end%>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<% (1..4).each do |i| %>
|
||||||
|
<tr>
|
||||||
|
<td>$R_<%=i%>$</td>
|
||||||
|
<% (1..4).each do |j| %><td>$R_<%=i%>\bowtie S_<%=j%>$</td><%end%>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<p class="fragment">$N$ workers gets us $\sqrt{N}$ scaling</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>How to Partition Data?</h3>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li class="fragment highlight-current-blue" data-fragment-index=1>Arbitrarily</li>
|
||||||
|
<li class="fragment highlight-current-blue" data-fragment-index=2>Range</li>
|
||||||
|
<li class="fragment highlight-current-blue" data-fragment-index=2>Hash</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
$$R \bowtie_{A} S$$
|
||||||
|
|
||||||
|
$$R_i = \sigma_{\texttt{hash}(A) = i}(R)$$
|
||||||
|
$$S_i = \sigma_{\texttt{hash}(A) = i}(S)$$
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<% (1..4).each do |j| %><td>$S_<%= j %>$</td><%end%>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<% (1..4).each do |i| %>
|
||||||
|
<tr>
|
||||||
|
<td>$R_<%=i%>$</td>
|
||||||
|
<% (1..4).each do |j| %>
|
||||||
|
<% if i == j %>
|
||||||
|
<td>$R_<%=i%>\bowtie S_<%=j%>$</td>
|
||||||
|
<% else %>
|
||||||
|
<td class="fragment highlight-grey" data-fragment-index=1>$R_<%=i%>\bowtie S_<%=j%>$</td>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</table>
|
||||||
|
<p class="fragment">Back to $N$ scaling for $N$ workers</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<p>What if the partitions aren't aligned so nicely?</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<svg data-src="2021-03-18/reshuffle.svg" />
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<section>
|
||||||
|
<p>Can we do better?</p>
|
||||||
|
<p class="fragment">Focus on $R_1 \bowtie_B S_1$</p>
|
||||||
|
|
||||||
|
<p style="margin-top: 100px" class="fragment"><b>Problem: </b> All tuples in $R_1$ and $S_1$ need to be<br/> sent to the same worker.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Data Transfer</h3>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Limited IO/<span class="fragment highlight-blue">Network</span> bandwidth</li>
|
||||||
|
<li>Compute needed to receive data</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<p><b>Idea 1</b>: Put the worker on the node that has the data!</p>
|
||||||
|
<p class="fragment" style="margin-top: 100px"><b>Problem:</b> What if the data is on 2 different nodes?</p>
|
||||||
|
<p class="fragment" style="margin-top: 100px"><b>Idea 1.b:</b> Put the worker on one of the nodes with data.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<p>Can we reduce network use more?</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<svg data-src="2021-03-18/semijoin_naive.svg" />
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<svg data-src="2021-03-18/semijoin_actual.svg" />
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<svg data-src="2021-03-18/semijoin_example.svg" />
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<section>
|
||||||
|
<p><b>Problem: </b> Worker 2 is still sending a lot of data.</p>
|
||||||
|
<p class="fragment" style="margin-top: 50px;"><b>Idea:</b> Compress $\pi_B(S_1)$</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Lossy Compression</h3>
|
||||||
|
<p>(not all errors are equal)</p>
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
<dt class="fragment">False Positives</dt>
|
||||||
|
<dd class="fragment">($b \in \pi_B(S_1)$ when it isn't)</dd>
|
||||||
|
<dd class="fragment">not ideal, but ok</dd>
|
||||||
|
|
||||||
|
<dt class="fragment">False Negatives</dt>
|
||||||
|
<dd class="fragment">($b \not\in \pi_B(S_1)$ when it is)</dd>
|
||||||
|
<dd class="fragment">bad, wrong answer!</dd>
|
||||||
|
</dl>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Bloom Filters</h3>
|
||||||
|
|
||||||
|
$$filter \leftarrow \texttt{Bloom}(\textbf{Alice}, \textbf{Bob}, \textbf{Carol}, \textbf{Dave})$$
|
||||||
|
|
||||||
|
<table style="margin-top: 100px;">
|
||||||
|
<tr>
|
||||||
|
<td class="fragment"><b>User</b>: Is Alice part of the set?</td>
|
||||||
|
<td class="fragment">$filter$: Yes</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="fragment"><b>User</b>: Is Eve part of the set?</td>
|
||||||
|
<td class="fragment">$filter$: No</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="fragment"><b>User</b>: Is Fred part of the set?</td>
|
||||||
|
<td class="fragment">$filter$: Yes</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Bloom Filter</h3>
|
||||||
|
|
||||||
|
<p style="margin-top: 50px;">Test <b>always</b> returns Yes if the element is in the set.</p>
|
||||||
|
<p style="margin-top: 50px;">Test <b>usually</b> returns No if the element is not in the set.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>Bloom Filters</h3>
|
||||||
|
|
||||||
|
<p style="margin-top: 50px;">A bloom filter is an array of bits.</p>
|
||||||
|
|
||||||
|
<p style="margin-top: 50px;">$M$: Number of bits in the array.</p>
|
||||||
|
<p style="margin-top: 50px;">$K$: Number of hash functions.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3>For one record/key</h3>
|
||||||
|
<ol>
|
||||||
|
<li class="fragment">$\forall i \in [M] : filter[i] = 0$</li>
|
||||||
|
<li class="fragment">$\forall j \in [K] : filter[\texttt{hash}_j(key)] = 1$</li>
|
||||||
|
</ol>
|
||||||
|
<p class="fragment">Each bit vector has $\sim K$ bits set.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>$Key_1$</td>
|
||||||
|
<td>00101010</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>$Key_2$</td>
|
||||||
|
<td>01010110</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>$Key_3$</td>
|
||||||
|
<td>10000110</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>$Key_4$</td>
|
||||||
|
<td>01001100</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="fragment">
|
||||||
|
<h4 style="margin-top: 30px;">Filters are combined by Bitwise-OR</h4>
|
||||||
|
$$Key_1 \;|\; Key_2 = 01111110$$
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="fragment">
|
||||||
|
<h4 style="margin-top: 30px;">Test for inclusion by checking for bits</h4>
|
||||||
|
$$Key_i \;\&\; filter = Key_i$$
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>$Key_1$</td>
|
||||||
|
<td>00101010</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>$Key_2$</td>
|
||||||
|
<td>01010110</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>$Key_3$</td>
|
||||||
|
<td>10000110</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>$Key_4$</td>
|
||||||
|
<td>01001100</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div style="margin-top: 50px">
|
||||||
|
$$Key_1 \;|\; Key_2 = 01111110$$
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table style="margin-top: 50px">
|
||||||
|
<tr>
|
||||||
|
<td class="fragment">$Key_1 \;\&\; 01111110$</td>
|
||||||
|
<td class="fragment">00101010</td>
|
||||||
|
<td class="fragment">✅</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="fragment">$Key_3 \;\&\; 01111110$</td>
|
||||||
|
<td class="fragment"><span class="fragment highlight-blue">0</span>0101010</td>
|
||||||
|
<td class="fragment">❌</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="fragment">$Key_4 \;\&\; 01111110$</td>
|
||||||
|
<td class="fragment">01001100</td>
|
||||||
|
<td class="fragment">✅</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p class="fragment">(False positive)</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<svg data-src="2021-03-18/semijoin_bloom.svg" />
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<b>Next time:</b> Online Aggregation/AQP
|
||||||
</section>
|
</section>
|
260
src/teaching/cse-562/2021sp/slide/2021-03-18/bottlenecks.svg
Normal file
|
@ -0,0 +1,260 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="171.68761mm"
|
||||||
|
height="87.875458mm"
|
||||||
|
viewBox="0 0 171.68761 87.875457"
|
||||||
|
version="1.1"
|
||||||
|
id="svg8"
|
||||||
|
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
|
||||||
|
sodipodi:docname="bottlenecks.svg">
|
||||||
|
<defs
|
||||||
|
id="defs2">
|
||||||
|
<marker
|
||||||
|
style="overflow:visible"
|
||||||
|
id="marker1165"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto"
|
||||||
|
inkscape:stockid="Arrow1Send"
|
||||||
|
inkscape:isstock="true">
|
||||||
|
<path
|
||||||
|
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||||
|
id="path1163" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
style="overflow:visible"
|
||||||
|
id="Arrow1Send"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto"
|
||||||
|
inkscape:stockid="Arrow1Send"
|
||||||
|
inkscape:isstock="true"
|
||||||
|
inkscape:collect="always">
|
||||||
|
<path
|
||||||
|
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||||
|
id="path874" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
style="overflow:visible"
|
||||||
|
id="Arrow1Lend"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto"
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
inkscape:isstock="true">
|
||||||
|
<path
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||||
|
id="path862" />
|
||||||
|
</marker>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1.4"
|
||||||
|
inkscape:cx="279.46815"
|
||||||
|
inkscape:cy="226.86306"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="g1628"
|
||||||
|
inkscape:document-rotation="0"
|
||||||
|
showgrid="false"
|
||||||
|
showguides="false"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1053"
|
||||||
|
inkscape:window-x="960"
|
||||||
|
inkscape:window-y="398"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-13.436605,-9.5141266)">
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#f2f2f2;stroke:#666666;stroke-width:0.765;stroke-linecap:round;stroke-linejoin:round"
|
||||||
|
id="rect837"
|
||||||
|
width="32.54221"
|
||||||
|
height="27.25053"
|
||||||
|
x="96.097656"
|
||||||
|
y="38.458027" />
|
||||||
|
<g
|
||||||
|
id="g1243"
|
||||||
|
transform="translate(-2.1166667)">
|
||||||
|
<path
|
||||||
|
style="fill:#b7c8b7;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 21.263086,49.360465 c -0.267094,-0.50955 2.120303,1.04783 2.120303,1.04783 0.275309,0.87331 -4.678209,3.86992 -4.203639,4.57355 0.08806,0.13057 0.298849,0.13171 0.456112,0.12324 1.958039,-0.10548 1.643695,-0.51018 0.924552,2.07107 -0.759335,2.72552 -2.631408,7.04601 -0.727315,9.72643 1.431419,2.01503 8.156855,0.49263 10.50295,1.34368 2.80526,1.01761 -0.23087,5.51466 1.861436,6.47197 2.107555,0.96427 4.968264,-5.44646 7.026622,-5.84327 1.578464,-0.3043 4.253698,2.3967 6.903342,2.02175 2.49412,-0.35295 2.9383,-2.77104 3.15582,-4.78312 0.0566,-0.52371 -0.3789,-1.82506 0.0863,-1.57793 1.32556,0.70421 1.33757,2.81312 3.40236,2.44088 4.02909,-0.72637 4.79448,-7.66811 5.11588,-10.72498 0.18535,-1.76289 0.19262,-2.07744 -0.4931,-3.57499 -0.13908,-0.30376 -0.29385,-0.61436 -0.53008,-0.85059 -0.13585,-0.13585 -0.55728,0.52731 -0.43146,0.38213 0.63225,-0.72949 0.8041,-3.3544 0.80129,-3.55031 -0.0423,-2.94821 -0.97864,-6.30729 -4.37624,-6.68153 -1.32381,-0.14582 -2.42337,0.5059 -2.45315,0.43145 -0.64682,-1.61711 1.7164,-4.09357 0.57939,-6.76781 -2.40689,-5.66099 -6.48811,-0.36794 -7.384116,-0.45614 -1.403738,-0.13818 -1.366869,-4.63302 -2.194274,-5.43641 -3.322669,-3.2262 -6.641729,4.88229 -8.518236,6.26236 -0.796171,0.58553 -4.668523,-3.48922 -7.470413,-3.0449 -1.360363,0.21573 -1.691002,1.86261 -1.738161,2.89697 -0.120227,2.63701 1.600118,3.05995 0.714991,3.10654 -2.053582,0.1081 -5.822659,-1.48935 -7.445753,0.20957 -3.199069,3.34851 0.207446,10.02054 4.314589,10.18256"
|
||||||
|
id="path833"
|
||||||
|
sodipodi:nodetypes="csssssssssssssssssssssssssssc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Send)"
|
||||||
|
d="M 59.174498,52.062708 H 72.224251"
|
||||||
|
id="path857" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||||
|
x="29.074074"
|
||||||
|
y="53.967762"
|
||||||
|
id="text1217"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1215"
|
||||||
|
x="29.074074"
|
||||||
|
y="53.967762"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583">Input</tspan></text>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g1473">
|
||||||
|
<rect
|
||||||
|
style="opacity:0.61;fill:#f2f2f2;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||||
|
id="rect1287"
|
||||||
|
width="23.579447"
|
||||||
|
height="9.7594995"
|
||||||
|
x="72.518211"
|
||||||
|
y="47.203541" />
|
||||||
|
<rect
|
||||||
|
style="opacity:0.61;fill:#ac9393;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||||
|
id="rect1331"
|
||||||
|
width="6.2962499"
|
||||||
|
height="8.4129181"
|
||||||
|
x="73.576538"
|
||||||
|
y="47.876831" />
|
||||||
|
<rect
|
||||||
|
style="opacity:0.61;fill:#deaa87;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||||
|
id="rect1348"
|
||||||
|
width="6.2962499"
|
||||||
|
height="8.4129181"
|
||||||
|
x="80.984871"
|
||||||
|
y="47.876831" />
|
||||||
|
<rect
|
||||||
|
style="opacity:0.61;fill:#b7bec8;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||||
|
id="rect1350"
|
||||||
|
width="6.2962499"
|
||||||
|
height="8.4129181"
|
||||||
|
x="88.393196"
|
||||||
|
y="47.876831" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||||
|
x="76.251434"
|
||||||
|
y="60.455574"
|
||||||
|
id="text1465"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1463"
|
||||||
|
x="76.251434"
|
||||||
|
y="60.455574"
|
||||||
|
style="font-size:4.93889px;stroke-width:0.264583">queue</tspan></text>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g1267"
|
||||||
|
transform="translate(21.166667)">
|
||||||
|
<path
|
||||||
|
style="fill:#c8b7be;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 127.09644,49.360465 c -0.26709,-0.50955 2.1203,1.04783 2.1203,1.04783 0.27531,0.87331 -4.67821,3.86992 -4.20364,4.57355 0.0881,0.13057 0.29885,0.13171 0.45611,0.12324 1.95805,-0.10548 1.6437,-0.51018 0.92456,2.07107 -0.75934,2.72552 -2.63141,7.04601 -0.72732,9.72643 1.43142,2.01503 8.15686,0.49263 10.50296,1.34368 2.80526,1.01761 -0.23087,5.51466 1.86144,6.47197 2.10755,0.96427 4.96826,-5.44646 7.02662,-5.84327 1.57846,-0.3043 4.2537,2.3967 6.90335,2.02175 2.49412,-0.35295 2.9383,-2.77104 3.15582,-4.78312 0.0566,-0.52371 -0.3789,-1.82506 0.0863,-1.57793 1.32556,0.70421 1.33757,2.81312 3.40236,2.44088 4.02909,-0.72637 4.79448,-7.66811 5.11588,-10.72498 0.18535,-1.76289 0.19262,-2.07744 -0.4931,-3.57499 -0.13908,-0.30376 -0.29385,-0.61436 -0.53008,-0.85059 -0.13585,-0.13585 -0.55728,0.52731 -0.43146,0.38213 0.63225,-0.72949 0.8041,-3.3544 0.80129,-3.55031 -0.0423,-2.94821 -0.97864,-6.30729 -4.37624,-6.68153 -1.32381,-0.14582 -2.42337,0.5059 -2.45315,0.43145 -0.64682,-1.61711 1.7164,-4.09357 0.57939,-6.76781 -2.40689,-5.66099 -6.48811,-0.36794 -7.38412,-0.45614 -1.40374,-0.13818 -1.36687,-4.63302 -2.19428,-5.43641 -3.32267,-3.2262 -6.64173,4.88229 -8.51824,6.26236 -0.79617,0.58553 -4.66852,-3.48922 -7.47042,-3.0449 -1.36036,0.21573 -1.691,1.86261 -1.73816,2.89697 -0.12022,2.63701 1.60012,3.05995 0.71499,3.10654 -2.05358,0.1081 -5.82266,-1.48935 -7.44575,0.20957 -3.19907,3.34851 0.20744,10.02054 4.31459,10.18256"
|
||||||
|
id="path835"
|
||||||
|
sodipodi:nodetypes="csssssssssssssssssssssssssssc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1165)"
|
||||||
|
d="m 110.50369,52.062708 h 13.04976"
|
||||||
|
id="path1161" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||||
|
x="131.8241"
|
||||||
|
y="53.967762"
|
||||||
|
id="text1221"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1219"
|
||||||
|
x="131.8241"
|
||||||
|
y="53.967762"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583">Output</tspan></text>
|
||||||
|
</g>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||||
|
x="99.939186"
|
||||||
|
y="53.967762"
|
||||||
|
id="text1225"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1223"
|
||||||
|
x="99.939186"
|
||||||
|
y="53.967762"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583">Worker</tspan></text>
|
||||||
|
<g
|
||||||
|
id="g1628"
|
||||||
|
class="fragment"
|
||||||
|
transform="translate(-0.0686789,8.9547067)">
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||||
|
x="30.771627"
|
||||||
|
y="5.919992"
|
||||||
|
id="text1570"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1568"
|
||||||
|
x="30.771627"
|
||||||
|
y="5.919992"
|
||||||
|
style="font-size:7.05556px;stroke-width:0.264583">Data doesn't</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="30.771627"
|
||||||
|
y="14.739442"
|
||||||
|
style="font-size:7.05556px;stroke-width:0.264583"
|
||||||
|
id="tspan1572">arrive fast enough</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 55.120706,16.017924 9.320191,25.751104"
|
||||||
|
id="path1574"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g1634"
|
||||||
|
class="fragment">
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 112.90783,61.428105 -9.86475,22.179882"
|
||||||
|
id="path1576"
|
||||||
|
sodipodi:nodetypes="cc" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||||
|
x="30.300447"
|
||||||
|
y="88.47023"
|
||||||
|
id="text1580"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="30.300447"
|
||||||
|
y="88.47023"
|
||||||
|
style="font-size:7.05556px;stroke-width:0.264583"
|
||||||
|
id="tspan1588">Worker processes data </tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="30.300447"
|
||||||
|
y="97.28968"
|
||||||
|
style="font-size:7.05556px;stroke-width:0.264583"
|
||||||
|
id="tspan1592">slower than it arrives</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 15 KiB |
|
@ -13,7 +13,7 @@
|
||||||
viewBox="0 0 261.96362 119.64035"
|
viewBox="0 0 261.96362 119.64035"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg78"
|
id="svg78"
|
||||||
inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
|
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
|
||||||
sodipodi:docname="communication_base.svg">
|
sodipodi:docname="communication_base.svg">
|
||||||
<defs
|
<defs
|
||||||
id="defs72">
|
id="defs72">
|
||||||
|
@ -251,10 +251,10 @@
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
inkscape:document-rotation="0"
|
inkscape:document-rotation="0"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
inkscape:window-width="2048"
|
inkscape:window-width="1920"
|
||||||
inkscape:window-height="1152"
|
inkscape:window-height="1053"
|
||||||
inkscape:window-x="0"
|
inkscape:window-x="960"
|
||||||
inkscape:window-y="0"
|
inkscape:window-y="398"
|
||||||
inkscape:window-maximized="1" />
|
inkscape:window-maximized="1" />
|
||||||
<metadata
|
<metadata
|
||||||
id="metadata75">
|
id="metadata75">
|
||||||
|
@ -264,7 +264,7 @@
|
||||||
<dc:format>image/svg+xml</dc:format>
|
<dc:format>image/svg+xml</dc:format>
|
||||||
<dc:type
|
<dc:type
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
<dc:title></dc:title>
|
<dc:title />
|
||||||
</cc:Work>
|
</cc:Work>
|
||||||
</rdf:RDF>
|
</rdf:RDF>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
@ -427,7 +427,7 @@
|
||||||
id="image163" />
|
id="image163" />
|
||||||
</g>
|
</g>
|
||||||
<path
|
<path
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Lend);marker-start:url(#Arrow1Lstart)"
|
style="fill:none;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)"
|
||||||
d="M 100.44746,91.834535 V 101.96247"
|
d="M 100.44746,91.834535 V 101.96247"
|
||||||
id="path167" />
|
id="path167" />
|
||||||
<path
|
<path
|
||||||
|
|
Before Width: | Height: | Size: 404 KiB After Width: | Height: | Size: 404 KiB |
After Width: | Height: | Size: 413 KiB |
After Width: | Height: | Size: 198 KiB |
After Width: | Height: | Size: 408 KiB |
After Width: | Height: | Size: 157 KiB |
493
src/teaching/cse-562/2021sp/slide/2021-03-18/query.svg
Normal file
After Width: | Height: | Size: 96 KiB |
626
src/teaching/cse-562/2021sp/slide/2021-03-18/query_aggregate.svg
Normal file
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 34 KiB |
923
src/teaching/cse-562/2021sp/slide/2021-03-18/query_full.svg
Normal file
After Width: | Height: | Size: 177 KiB |
782
src/teaching/cse-562/2021sp/slide/2021-03-18/query_partition.svg
Normal file
After Width: | Height: | Size: 241 KiB |
637
src/teaching/cse-562/2021sp/slide/2021-03-18/query_pipeline.svg
Normal file
After Width: | Height: | Size: 166 KiB |
716
src/teaching/cse-562/2021sp/slide/2021-03-18/reshuffle.svg
Normal file
After Width: | Height: | Size: 32 KiB |
364
src/teaching/cse-562/2021sp/slide/2021-03-18/semijoin_actual.svg
Normal file
After Width: | Height: | Size: 172 KiB |
286
src/teaching/cse-562/2021sp/slide/2021-03-18/semijoin_bloom.svg
Normal file
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 62 KiB |
264
src/teaching/cse-562/2021sp/slide/2021-03-18/semijoin_naive.svg
Normal file
After Width: | Height: | Size: 125 KiB |
295
src/teaching/cse-562/2021sp/slide/2021-03-18/single_worker.svg
Normal file
|
@ -0,0 +1,295 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="171.84918mm"
|
||||||
|
height="65.214546mm"
|
||||||
|
viewBox="0 0 171.84919 65.214546"
|
||||||
|
version="1.1"
|
||||||
|
id="svg8"
|
||||||
|
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
|
||||||
|
sodipodi:docname="single_worker.svg">
|
||||||
|
<defs
|
||||||
|
id="defs2">
|
||||||
|
<marker
|
||||||
|
style="overflow:visible"
|
||||||
|
id="marker1165"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto"
|
||||||
|
inkscape:stockid="Arrow1Send"
|
||||||
|
inkscape:isstock="true">
|
||||||
|
<path
|
||||||
|
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||||
|
id="path1163" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
style="overflow:visible"
|
||||||
|
id="Arrow1Send"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto"
|
||||||
|
inkscape:stockid="Arrow1Send"
|
||||||
|
inkscape:isstock="true"
|
||||||
|
inkscape:collect="always">
|
||||||
|
<path
|
||||||
|
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||||
|
id="path874" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
style="overflow:visible"
|
||||||
|
id="Arrow1Lend"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto"
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
inkscape:isstock="true">
|
||||||
|
<path
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||||
|
id="path862" />
|
||||||
|
</marker>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1.4"
|
||||||
|
inkscape:cx="279.46815"
|
||||||
|
inkscape:cy="125.14743"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="g1548"
|
||||||
|
inkscape:document-rotation="0"
|
||||||
|
showgrid="false"
|
||||||
|
showguides="false"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1053"
|
||||||
|
inkscape:window-x="960"
|
||||||
|
inkscape:window-y="398"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-13.436605,-28.866865)">
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#f2f2f2;stroke:#666666;stroke-width:0.765;stroke-linecap:round;stroke-linejoin:round"
|
||||||
|
id="rect837"
|
||||||
|
width="32.54221"
|
||||||
|
height="27.25053"
|
||||||
|
x="96.097656"
|
||||||
|
y="38.458027" />
|
||||||
|
<g
|
||||||
|
id="g1243"
|
||||||
|
transform="translate(-2.1166667)"
|
||||||
|
class="fragment">
|
||||||
|
<path
|
||||||
|
style="fill:#b7c8b7;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 21.263086,49.360465 c -0.267094,-0.50955 2.120303,1.04783 2.120303,1.04783 0.275309,0.87331 -4.678209,3.86992 -4.203639,4.57355 0.08806,0.13057 0.298849,0.13171 0.456112,0.12324 1.958039,-0.10548 1.643695,-0.51018 0.924552,2.07107 -0.759335,2.72552 -2.631408,7.04601 -0.727315,9.72643 1.431419,2.01503 8.156855,0.49263 10.50295,1.34368 2.80526,1.01761 -0.23087,5.51466 1.861436,6.47197 2.107555,0.96427 4.968264,-5.44646 7.026622,-5.84327 1.578464,-0.3043 4.253698,2.3967 6.903342,2.02175 2.49412,-0.35295 2.9383,-2.77104 3.15582,-4.78312 0.0566,-0.52371 -0.3789,-1.82506 0.0863,-1.57793 1.32556,0.70421 1.33757,2.81312 3.40236,2.44088 4.02909,-0.72637 4.79448,-7.66811 5.11588,-10.72498 0.18535,-1.76289 0.19262,-2.07744 -0.4931,-3.57499 -0.13908,-0.30376 -0.29385,-0.61436 -0.53008,-0.85059 -0.13585,-0.13585 -0.55728,0.52731 -0.43146,0.38213 0.63225,-0.72949 0.8041,-3.3544 0.80129,-3.55031 -0.0423,-2.94821 -0.97864,-6.30729 -4.37624,-6.68153 -1.32381,-0.14582 -2.42337,0.5059 -2.45315,0.43145 -0.64682,-1.61711 1.7164,-4.09357 0.57939,-6.76781 -2.40689,-5.66099 -6.48811,-0.36794 -7.384116,-0.45614 -1.403738,-0.13818 -1.366869,-4.63302 -2.194274,-5.43641 -3.322669,-3.2262 -6.641729,4.88229 -8.518236,6.26236 -0.796171,0.58553 -4.668523,-3.48922 -7.470413,-3.0449 -1.360363,0.21573 -1.691002,1.86261 -1.738161,2.89697 -0.120227,2.63701 1.600118,3.05995 0.714991,3.10654 -2.053582,0.1081 -5.822659,-1.48935 -7.445753,0.20957 -3.199069,3.34851 0.207446,10.02054 4.314589,10.18256"
|
||||||
|
id="path833"
|
||||||
|
sodipodi:nodetypes="csssssssssssssssssssssssssssc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Send)"
|
||||||
|
d="M 59.174498,52.062708 H 72.224251"
|
||||||
|
id="path857" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||||
|
x="29.074074"
|
||||||
|
y="53.967762"
|
||||||
|
id="text1217"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1215"
|
||||||
|
x="29.074074"
|
||||||
|
y="53.967762"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583">Input</tspan></text>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g1473"
|
||||||
|
class="fragment">
|
||||||
|
<rect
|
||||||
|
style="opacity:0.61;fill:#f2f2f2;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||||
|
id="rect1287"
|
||||||
|
width="23.579447"
|
||||||
|
height="9.7594995"
|
||||||
|
x="72.518211"
|
||||||
|
y="47.203541" />
|
||||||
|
<rect
|
||||||
|
style="opacity:0.61;fill:#ac9393;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||||
|
id="rect1331"
|
||||||
|
width="6.2962499"
|
||||||
|
height="8.4129181"
|
||||||
|
x="73.576538"
|
||||||
|
y="47.876831" />
|
||||||
|
<rect
|
||||||
|
style="opacity:0.61;fill:#deaa87;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||||
|
id="rect1348"
|
||||||
|
width="6.2962499"
|
||||||
|
height="8.4129181"
|
||||||
|
x="80.984871"
|
||||||
|
y="47.876831" />
|
||||||
|
<rect
|
||||||
|
style="opacity:0.61;fill:#b7bec8;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||||
|
id="rect1350"
|
||||||
|
width="6.2962499"
|
||||||
|
height="8.4129181"
|
||||||
|
x="88.393196"
|
||||||
|
y="47.876831" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93889px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||||
|
x="76.251434"
|
||||||
|
y="60.455574"
|
||||||
|
id="text1465"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1463"
|
||||||
|
x="76.251434"
|
||||||
|
y="60.455574"
|
||||||
|
style="font-size:4.93889px;stroke-width:0.264583">queue</tspan></text>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g1267"
|
||||||
|
transform="translate(21.166667)"
|
||||||
|
class="fragment">
|
||||||
|
<path
|
||||||
|
style="fill:#c8b7be;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 127.09644,49.360465 c -0.26709,-0.50955 2.1203,1.04783 2.1203,1.04783 0.27531,0.87331 -4.67821,3.86992 -4.20364,4.57355 0.0881,0.13057 0.29885,0.13171 0.45611,0.12324 1.95805,-0.10548 1.6437,-0.51018 0.92456,2.07107 -0.75934,2.72552 -2.63141,7.04601 -0.72732,9.72643 1.43142,2.01503 8.15686,0.49263 10.50296,1.34368 2.80526,1.01761 -0.23087,5.51466 1.86144,6.47197 2.10755,0.96427 4.96826,-5.44646 7.02662,-5.84327 1.57846,-0.3043 4.2537,2.3967 6.90335,2.02175 2.49412,-0.35295 2.9383,-2.77104 3.15582,-4.78312 0.0566,-0.52371 -0.3789,-1.82506 0.0863,-1.57793 1.32556,0.70421 1.33757,2.81312 3.40236,2.44088 4.02909,-0.72637 4.79448,-7.66811 5.11588,-10.72498 0.18535,-1.76289 0.19262,-2.07744 -0.4931,-3.57499 -0.13908,-0.30376 -0.29385,-0.61436 -0.53008,-0.85059 -0.13585,-0.13585 -0.55728,0.52731 -0.43146,0.38213 0.63225,-0.72949 0.8041,-3.3544 0.80129,-3.55031 -0.0423,-2.94821 -0.97864,-6.30729 -4.37624,-6.68153 -1.32381,-0.14582 -2.42337,0.5059 -2.45315,0.43145 -0.64682,-1.61711 1.7164,-4.09357 0.57939,-6.76781 -2.40689,-5.66099 -6.48811,-0.36794 -7.38412,-0.45614 -1.40374,-0.13818 -1.36687,-4.63302 -2.19428,-5.43641 -3.32267,-3.2262 -6.64173,4.88229 -8.51824,6.26236 -0.79617,0.58553 -4.66852,-3.48922 -7.47042,-3.0449 -1.36036,0.21573 -1.691,1.86261 -1.73816,2.89697 -0.12022,2.63701 1.60012,3.05995 0.71499,3.10654 -2.05358,0.1081 -5.82266,-1.48935 -7.44575,0.20957 -3.19907,3.34851 0.20744,10.02054 4.31459,10.18256"
|
||||||
|
id="path835"
|
||||||
|
sodipodi:nodetypes="csssssssssssssssssssssssssssc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1165)"
|
||||||
|
d="m 110.50369,52.062708 h 13.04976"
|
||||||
|
id="path1161" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||||
|
x="131.8241"
|
||||||
|
y="53.967762"
|
||||||
|
id="text1221"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1219"
|
||||||
|
x="131.8241"
|
||||||
|
y="53.967762"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583">Output</tspan></text>
|
||||||
|
</g>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||||
|
x="99.939186"
|
||||||
|
y="53.967762"
|
||||||
|
id="text1225"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1223"
|
||||||
|
x="99.939186"
|
||||||
|
y="53.967762"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583">Worker</tspan></text>
|
||||||
|
<g
|
||||||
|
id="g1539"
|
||||||
|
class="fragment">
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||||
|
x="14.75823"
|
||||||
|
y="84.088089"
|
||||||
|
id="text1503"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1501"
|
||||||
|
x="14.75823"
|
||||||
|
y="84.088089"
|
||||||
|
style="font-size:7.05556px;stroke-width:0.264583">Raw</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="14.75823"
|
||||||
|
y="92.907539"
|
||||||
|
style="font-size:7.05556px;stroke-width:0.264583"
|
||||||
|
id="tspan1505">Data</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||||
|
x="46.071609"
|
||||||
|
y="85.162056"
|
||||||
|
id="text1509"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1507"
|
||||||
|
x="46.071609"
|
||||||
|
y="85.162056"
|
||||||
|
style="font-size:7.05556px;stroke-width:0.264583">Another</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="46.071609"
|
||||||
|
y="93.981506"
|
||||||
|
style="font-size:7.05556px;stroke-width:0.264583"
|
||||||
|
id="tspan1511">Worker</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="M 19.667352,77.54475 26.10379,61.538088"
|
||||||
|
id="path1523" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="M 53.943199,78.561459 43.529845,61.223914"
|
||||||
|
id="path1525" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g1548"
|
||||||
|
class="fragment">
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||||
|
x="122.35214"
|
||||||
|
y="83.883438"
|
||||||
|
id="text1515"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1513"
|
||||||
|
x="122.35214"
|
||||||
|
y="83.883438"
|
||||||
|
style="font-size:7.05556px;stroke-width:0.264583">Another</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="122.35214"
|
||||||
|
y="92.702888"
|
||||||
|
style="font-size:7.05556px;stroke-width:0.264583"
|
||||||
|
id="tspan1517">Worker</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||||
|
x="157.65266"
|
||||||
|
y="83.883438"
|
||||||
|
id="text1521"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1519"
|
||||||
|
x="157.65266"
|
||||||
|
y="83.883438"
|
||||||
|
style="font-size:7.05556px;stroke-width:0.264583">Console</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="M 137.94379,76.102239 157.4274,60.200363"
|
||||||
|
id="path1527" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="M 171.74163,77.087598 166.83712,60.972983"
|
||||||
|
id="path1529" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 17 KiB |