Slides for Tuesday

This commit is contained in:
Oliver Kennedy 2021-03-22 00:20:35 -04:00
parent b7c72ea161
commit a947cd05ff
Signed by: okennedy
GPG key ID: 3E5F9B3ABD3FDB60
13 changed files with 4555 additions and 1 deletions

View file

@ -54,6 +54,8 @@ schedule:
materials:
lecture: https://youtu.be/VGJMx1DZtK8
slides: slide/2021-03-04-Indexing2.html
bLSM_trees: "https://dl-acm-org.gate.lib.buffalo.edu/citation.cfm?id=2213862"
learned_indexes: "https://dl-acm-org.gate.lib.buffalo.edu/ft_gateway.cfm?id=3196909&type=pdf"
- date: "Mar. 9"
topic: "Cost-Based Optimization"
materials:
@ -75,6 +77,12 @@ schedule:
slides: slide/2021-03-18-ParallelQueries.html
- date: "Mar. 23"
topic: "Online Aggregation/Approximate Query Processing"
materials:
slides: slide/2021-03-23-ApproximateQueryProcessing.html
online_agg: https://dl-acm-org.gate.lib.buffalo.edu/doi/10.1145/253262.253291
ripple_joins: https://dl-acm-org.gate.lib.buffalo.edu/doi/10.1145/304181.304208
blinkdb: https://dl-acm-org.gate.lib.buffalo.edu/doi/10.14778/2367502.2367533
other_readings: https://gitlab.odin.cse.buffalo.edu/odin-lab/documentation/-/wikis/ReadingList-Approximate-QPs
- date: "Mar. 25"
topic: "Streaming Queries"
- date: "Mar. 30"
@ -179,7 +187,7 @@ In this course, you will learn...
<div style="display: inline-block; padding-left: 10px; border-left: solid 1px black;">
<% if data.has_key? "due" %>Due: <u><%= data["due"] %></u><br/><% end %>
<%=data["topic"]%>
<% unless data.fetch("materials", {}).empty? %> ( <%= data["materials"].map { |r,url| "<a href=\"#{url}\">#{r}</a>" }.join(" | ") %> )<% end %>
<% unless data.fetch("materials", {}).empty? %> ( <%= data["materials"].map { |r,url| "<a href=\"#{url}\">#{r.sub("_", " ")}</a>" }.join(" | ") %> )<% end %>
<% if data.has_key? "textbook" then %>
<div style="font-size:70%; margin-left:20px;"><%= data["textbook"] %></div>
<% end %>

View file

@ -0,0 +1,462 @@
---
template: templates/cse4562_2021_slides.erb
title: OLA and AQP
date: March 23, 2021
textbook: (readings only)
---
<section>
<!-- 2019 by OK
This lecture fell a bit flat.
- There are a number of bugs in the builds that need to be worked out
- More examples would be helpful
- A deeper dive into the math might also be useful.
- More detail in the solutions to the birthday paradox
-->
<section>
<p style="font-size: larger;">What is the best, correct technique for task <b>X</b>, when <b>Y</b> is true?</p>
<ol style="margin-top: 20px;">
<li>How do you define <i>Correct</i> and <i>Best</i>?</li>
<li>What correct alternatives are available?</li>
<li>How do you find the best available alternative</li>
</ol>
</section>
<section>
<p><b>So Far</b>: Correct = The original RA for a query.</p>
<p class="fragment">Only queries guaranteed to produce identical results are correct</p>
</section>
<section>
<p>What happens when <i>Correct</i> allows for a margin of error?</p>
</section>
<section>
<ul>
<li>Aggregate query with some margin of error.</li>
<li><code>ORDER BY LIMIT</code> (Top-K) with some margin of error.</li>
<li><code>LIMIT</code> without <code>ORDER BY</code> (Any-K).</li>
</ul>
<p class="fragment">Sacrifice a little accuracy for a lot of speed</p>
</section>
<section>
<h3>Online Aggregation</h3>
<h3 style="margin-top: 100px;">Approximate Query Processing</h3>
</section>
<section>
<pre><code>
SELECT SUM(A) FROM R
</code></pre>
<p class="fragment">Naively, you need to see all values of <code>R.A</code></p>
</section>
<section>
<h3>Online Aggregation</h3>
<p style="margin-top: 60px; font-size: 80%">$Avg(3,6,10,9,1,3,9,7,9,4,7,9,2,1,2,4,10,8,9,7) = 6$</p>
<p class="fragment">$Avg(3,6,10,9,1) = 5.8$ <span class="fragment">$\approx 6$</span></p>
<p class="fragment" style="margin-top: 60px;">$Sum\left(\frac{k}{N}\; Samples\right) \cdot \frac{N}{k} \approx Sum(*)$</p>
<p class="fragment" style="font-weight: bold; margin-top: 60px;">Sampling lets you approximate aggregate values with orders of magnitude less data.</p>
</section>
</section>
<section>
<section>
<p><b>Question: </b> How accurate is an estimate from $N$ samples</p>
</section>
<section>
<p>With $n$ tuples sampled uniformly <i>with</i> replacement</p>
<table>
<tr class="fragment">
<td style="font-size: 70%">$|AVG(samples) - AVG(real)|$</td>
<td>The absolute error</td>
</tr>
<tr class="fragment">
<td style="font-size: 60%">$P(|AVG(samples) - AVG(real)| \geq \epsilon)$</td>
<td>Its probability of exceeding error threshold $\epsilon$</td>
</tr>
<tr class="fragment">
<td style="font-size: 40%">$P(|AVG(samples) - AVG(real)| \geq \epsilon) \leq 2e^{\frac{2n\epsilon^2}{(max(real) - min(real))^2}}$</td>
<td>... is below a threshold based on $\epsilon$, $n$, and the min/max value.</td>
</tr>
</table>
<p class="fragment">"Hoeffding's Bound"</p>
<p class="fragment">See also "Chernoff's Bound" (similar) and "Serfling's Bound" (works <i>without</i> replacement).</p>
</section>
<section>
<p>What about non-sum-based aggregates?</p>
<h3 class="fragment">Bootstrapping</h3>
</section>
<section>
<p><b>Idea 1:</b> Generate a bunch of samples of the same size and see how they're distributed.</p>
</section>
<section>
<svg data-src="2021-03-23/NaiveBootstrap.svg" />
<p class="fragment">The resulting histogram models the distribution of samples.</p>
</section>
<section>
<p><b>Problem:</b> Generating samples is expensive!</p>
<p style="margin-top: 100px" class="fragment"><b>Idea 2:</b> Generate one sample, then <i>resample</i> to see how its distributed</p>
</section>
<section>
<svg data-src="2021-03-23/NormalBootstrap.svg" />
<p class="fragment">The resulting histogram still models (in expectation) the distribution of samples.</p>
</section>
<section>
<h3>Error Bounds</h3>
<dl>
<dt>SUM, COUNT, AVG (sampling with replacement)</dt>
<dd><a href="https://en.wikipedia.org/wiki/Hoeffding's_inequality">Hoeffding's Bound</a></dd>
<dd><a href="https://en.wikipedia.org/wiki/Chernoff_bound">Chernoff's Bound</a></dd>
<dt>SUM, COUNT, AVG (sampling without replacement)</dt>
<dd><a href="https://doi.org/10.1214%2Faos%2F1176342611">Serfling's Bound</a></dd>
<dt>Any Other Aggregate</dt>
<dd><a href="https://en.wikipedia.org/wiki/Bootstrapping_(statistics)">Bootstrapping</a></dd>
</dl>
</section>
</section>
<section>
<section>
<img src="2021-03-23/OnlineAggregation.png"/>
<p class="fragment">Keep adding samples until you reach a target accuracy</p>
<p class="fragment">Keep adding samples until you run out of time</p>
</section>
<section>
<h3>Generating Samples</h3>
<dl>
<div class="fragment">
<dt>Sampling From Disk</dt>
<dd>Random seeks are slow</dd>
</div>
<div class="fragment">
<dt>Sampling For Group-By or Selections</dt>
<dd>Low-frequency events don't get sampled</dd>
</div>
<div class="fragment">
<dt>Sampling From Joins</dt>
<dd>Fixing the Birthday Paradox</dd>
</div>
</dl>
</section>
</section>
<section>
<section>
<h3>Sampling From Disk</h3>
</section>
<section>
<p><b>Idea 1:</b> Pick Randomly!</p>
<pre><code class="python">
for i from 1 to num_samples:
sample_id = random(0, num_records)
samples += [ table.where( rowid = sample_id ) ]
</code></pre>
</section>
<section>
<img src="graphics/Clipart/facepalm.jpg"/>
</section>
<section>
<p><b>Problem:</b> Random scans are EXPENSIVE.</p>
</section>
<section>
<p><b>Idea 2:</b> Assume data already randomized!</p>
<p class="fragment">Pick a random start record and read sequentially from there.</p>
</section>
<section>
<img src="graphics/Clipart/facepalm.jpg"/>
</section>
<section>
<p><b>Problem:</b> Sequential records are almost never IID.</p>
</section>
<section>
<p><b>Idea 3:</b> Prebuild samples!</p>
<p class="fragment">Shuffle data into fixed size sample buckets (e.g., <a href="https://dl.acm.org/citation.cfm?id=2465355">BlinkDB</a>).</p>
</section>
</section>
<section>
<section>
<h3>Sampling From Group-By</h3>
</section>
<section>
<table>
<tr><th>Employee</th><th>City</th><th>Salary</th></tr>
<tr><td>Alice</td><td>NYC</td><td>$120k</td></tr>
<tr><td>Bob</td><td>NYC</td><td>$110k</td></tr>
<tr><td>Carol</td><td>NYC</td><td>$115k</td></tr>
<tr><td>Dave</td><td>Syracuse</td><td>$80k</td></tr>
</table>
<pre><code class="sql">
SELECT City, AVG(Salary) FROM NYS_Salaries;
</code></pre>
</section>
<section>
<p><b>Problem:</b> Most data is about NYC. With $N$ samples taken uniformly, margins of error for other cities are much bigger</p>
</section>
<section>
<h3>Stratified Sampling</h3>
<p style="margin-top: 50px;" class="fragment">Generate $\frac{N}{\texttt{COUNT}(\texttt{DISTINCT } City)}$ samples for <u>each</u> group</p>
<p style="margin-top: 50px;" class="fragment">Use $\texttt{COUNT}(\texttt{DISTINCT } City)$ instead of $\texttt{COUNT}(*)$ as the total group size</p>
</section>
<section>
<h3>Index Striding</h3>
</section>
<section>
<svg data-src="2021-03-23/IndexStriding.svg"/>
<attribution><a href="http://dl-acm-org.gate.lib.buffalo.edu/citation.cfm?id=253260.253291">"Online Aggregation" (Hellerstein et. al.)</a></attribution>
</section>
<section>
<p><b>Idea 2:</b> Pre-generate sample buckets across a range of different strata (e.g., <a href="https://dl.acm.org/citation.cfm?id=2465355">BlinkDB</a>).</p>
</section>
</section>
<section>
<section>
<h3>Sampling from Joins</h3>
</section>
<section>
<svg data-src="2021-03-23/JoinIssue.svg" />
</section>
<section>
<h3>The Birthday Paradox</h3>
<p style="margin-top: 50px;">
Assume: $\texttt{UNIQ}(A, R) = \texttt{UNIQ}(A, S) = N$
</p>
<p style="margin-top: 50px;">
It takes $O(\sqrt{N})$ samples from both $R$ and $S$ <br/> to get even <b>one match.</b>
</p>
</section>
<section>
<h3>Weighted Joins</h3>
<dl>
<dt>Exploit Foreign Keys</dt>
<dd>Sample from the referencing table, join with full reference tables</dd>
<dt>Stratified Sampling</dt>
<dd>For many-many joins, stratify on the join attribute(s)</dd>
</dl>
</section>
<section>
<h3>"Join Synopses"</h3>
<p>$R \bowtie_B S \bowtie_C T$</p>
<ul>
<li>$R.B$ is a foreign key reference to $S.B$</li>
<li>$S.C$ is a foreign key reference to $T.C$</li>
</ul>
<p class="fragment">Sample from R, Use all of S, T</p>
</section>
<section>
<h3>"Join Synopses"</h3>
<svg data-src="2021-03-23/JoinIssue-FKs.svg" />
</section>
<section>
<h3>"Join Synopses"</h3>
<ul>
<li class="fragment">Foreign keys keep intermediate state small.</li>
<li class="fragment">Fast evaluation with INLJ or In-Mem Hash Join.</li>
<li class="fragment">Sampling is <b>not</b> biased.</li>
</ul>
<attribution><a href="https://dl-acm-org.gate.lib.buffalo.edu/doi/10.1145/304182.304207">"Join synopses for approximate query answering" (Acharya et. al.)</a></attribution>
</section>
<section>
<h3>Stratified Sampling</h3>
<svg data-src="2021-03-23/JoinIssue-Stratified.svg" />
</section>
<section>
<h3>Stratified Sampling</h3>
<p>For each tuple sampled from $R$, sample exactly one joining tuple from $S$</p>
</section>
<section>
<p class="fragment"><b>Question: </b> Are we biasing the sampling process</p>
<p class="fragment"><b>Goal: </b> Sample $r \bowtie s$ with probability $p((r\bowtie s) \in R\bowtie S)$</p>
<p class="fragment"><b>Actual: </b> Sample $r \bowtie s$ with probability $p(r \in R) p((r\bowtie s) \in R\bowtie S | r \in R)$</p>
</section>
<section>
<h3>Bayes' Theorem</h3>
<p>
$p(r \in R) p((r\bowtie s) \in R\bowtie S) | r \in R)$
<span class="fragment">$= p(r \in R, (r\bowtie s) \in R\bowtie S)$</span>
</p>
<p class="fragment">$\neq p((r\bowtie s) \in R\bowtie S)$</p>
</section>
<section>
<h3>Corrective Factor</h3>
<p class="fragment">
$p(r \in R, (r\bowtie s) \in R\bowtie S)$
<span class="fragment">$\cdot n$</span>
<span class="fragment">$= p((r\bowtie s) \in R\bowtie S)$</span>
</p>
<p class="fragment">
$n = \frac{ p((r\bowtie s) \in R\bowtie S) }{ p(r \in R, (r\bowtie s) \in R\bowtie S) }$
</p>
<p class="fragment">
$ = \frac{ 1 }{ p(r \in R | (r\bowtie s) \in R\bowtie S) } $
<span class="fragment">$\approx |R| \cdot |\{\;s\;|s \in S, r.A = S.A\;\}$</span>
</p>
<p class="fragment">The probability that a tuple in $R$ participates in a join.</p>
<p></p>
</section>
<section>
<p>Should I sample from $R$ or $S$ first?</p>
<p class="fragment">(What if only one tuple from $R$ joins with every tuple from $S$)</p>
</section>
<section>
<h3>"Wander Join"</h3>
<p>Sample with all join orders at random.</p>
</ul>
<attribution><a href="https://www.cs.utah.edu/~lifeifei/papers/wanderjoin.pdf">"Wander Join: Online Aggregation via Random Walks" (Li et. al.)</a></attribution>
</section>
</section>
<section>
<section>
<h3>Convergent Joins</h3>
<dl>
<dt><a href="https://dl.acm.org/citation.cfm?id=304208">Ripple Join</a></dt>
<dd>Incrementally increase the sample size</dd>
<dt><a href="https://dl.acm.org/citation.cfm?id=1687675">Turbo DBO Join</a></dt>
<dd>Re-use data loading to get "lucky" joins</dd>
</dl>
</section>
<section>
<p><b>Idea 1:</b> Start small, keep making the sample size bigger</p>
</section>
<section>
<h3>Ripple Join</h3>
$$Q = R \bowtie S$$
<ol style="font-size: 80%">
<li class="fragment">$Q \leftarrow \emptyset$, $R_{sample} \leftarrow \emptyset$, and $S_{sample} \leftarrow \emptyset$</li>
<li class="fragment">Sample $r \in R$</li>
<ol>
<li class="fragment">$Q \leftarrow r \bowtie S_{sample}$</li>
<li class="fragment">$R_{sample} \leftarrow R_{sample} \uplus \{r\}$</li>
</ol>
<li class="fragment">Sample $s \in S$</li>
<ol>
<li class="fragment">$Q \leftarrow s \bowtie R_{sample}$</li>
<li class="fragment">$S_{sample} \leftarrow S_{sample} \uplus \{s\}$</li>
</ol>
<li class="fragment">Goto 2</li>
</ol>
</section>
<section>
<h3>Ripple Join</h3>
<svg data-src="2021-03-23/RippleJoin.svg"/>
</section>
<section>
<p><b>Idea 2:</b> Normal BNLJ, but piggyback sampling off of the results.</p>
</section>
<section>
<img src="2021-03-23/DBOJoinOverview.png"/>
</section>
<section>
<img src="2021-03-23/DBOJoin1.png"/>
</section>
<section>
<img src="2021-03-23/DBOJoin2.png"/>
</section>
<!--
Sampling from disk:
- Assume randomness
- Logarithmic Sample Scan
- Prebuild Samples
Sampling from Group-By/Selection (Stratified)
- Index-Striding
- Prebuild Stratified Samples (Blink)
- Something from Olken's papers?
Sampling from Joins
- Follow FDs / Sample from LHS only
- Weight samples by RHS multiplicity (Aqua? PFOLA? )
- Ripple Join
- Tiered Joins
- Leaky Joins?
-->
</section>

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

View file

@ -0,0 +1,328 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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="144.05374mm"
height="70.35627mm"
viewBox="0 0 144.05374 70.35627"
version="1.1"
id="svg8"
sodipodi:docname="New document 1.2019_03_04_13_49_51.0.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<defs
id="defs2">
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker958"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path956"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker3676"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path3674"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker3562"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:collect="always">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path3560"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker3472"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path3470"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker3082"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path3080"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker2316"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:collect="always">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path2314"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1116"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:collect="always">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1114"
inkscape:connector-curvature="0" />
</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="275.07085"
inkscape:cy="83.297814"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1387"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<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(-16.506155,-54.21796)">
<g
id="g824"
transform="translate(2.3071602,26.726953)"
style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:nodetypes="ccc"
inkscape:connector-curvature="0"
id="path815"
d="M 86.225865,27.92402 15.646571,68.672994 Z"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccc"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 86.225865,27.92402 156.80516,68.672994 Z"
id="path817"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path819"
d="M 15.646571,68.672992 H 156.80516"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<rect
style="opacity:1;fill:none;fill-opacity:1;stroke:#ac9d93;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect826"
width="142.05374"
height="12.828938"
x="17.506155"
y="101.49234"
ry="0.3697499" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46666622px;line-height:125%;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="27.929665"
y="110.98042"
id="text2374"><tspan
sodipodi:role="line"
id="tspan2372"
x="27.929665"
y="110.98042"
style="stroke-width:0.26458332px">Buf</tspan></text>
<rect
style="opacity:1;fill:none;fill-opacity:1;stroke:#ac9d93;stroke-width:3.77952766;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2664"
width="0"
height="0"
x="0"
y="0"
transform="scale(0.26458333)" />
<g
id="g3011"
transform="translate(-3.1750001)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46666622px;line-height:125%;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="66.468857"
y="110.71315"
id="text2996"><tspan
sodipodi:role="line"
id="tspan2994"
x="66.468857"
y="110.71315"
style="stroke-width:0.26458332px">Syr</tspan></text>
<rect
style="opacity:1;fill:none;fill-opacity:1;stroke:#ac9d93;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2998"
width="15.367966"
height="12.828934"
x="59.386219"
y="101.49234"
ry="0.3697499" />
</g>
<g
id="g3016">
<rect
ry="0.3697499"
y="101.49234"
x="38.219543"
height="12.828934"
width="17.773392"
id="rect2674"
style="opacity:1;fill:none;fill-opacity:1;stroke:#ac9d93;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text3002"
y="110.44588"
x="47.023319"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46666622px;line-height:125%;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="stroke-width:0.26458332px"
y="110.44588"
x="47.023319"
id="tspan3000"
sodipodi:role="line">Roc</tspan></text>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46666622px;line-height:125%;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="114.09384"
y="110.71315"
id="text3006"><tspan
sodipodi:role="line"
id="tspan3004"
x="114.09384"
y="110.71315"
style="stroke-width:0.26458332px">NYC</tspan></text>
<path
inkscape:connector-curvature="0"
id="path954"
d="M 88.533024,54.650973 38.615074,95.077871"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker958)"
sodipodi:nodetypes="cc"
class="fragment" />
<path
inkscape:connector-curvature="0"
id="path1112"
d="m 38.838187,124.57423 v -9.38801"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1116)"
sodipodi:nodetypes="cc"
class="fragment" />
<g
id="g3831"
class="fragment">
<path
sodipodi:nodetypes="cc"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker2316)"
d="M 88.533024,54.650973 56.077574,95.077871"
id="path2312"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path3078"
d="M 88.533024,54.650973 71.423407,95.077871"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker3082)"
sodipodi:nodetypes="cc" />
</g>
<g
id="g3854"
class="fragment">
<path
inkscape:connector-curvature="0"
id="path3468"
d="m 18.729853,124.57423 v -9.38801"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker3472)"
sodipodi:nodetypes="cc" />
<path
sodipodi:nodetypes="cc"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker3562)"
d="m 56.829856,124.57423 v -9.38801"
id="path3558"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path3672"
d="m 72.17569,124.57423 v -9.38801"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker3676)"
sodipodi:nodetypes="cc" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,303 @@
<?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="139.64166mm"
height="131.2554mm"
viewBox="0 0 139.64166 131.25541"
version="1.1"
id="svg8"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
sodipodi:docname="JoinIssue-FKs.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.64"
inkscape:cx="214.95617"
inkscape:cy="400.45264"
inkscape:document-units="mm"
inkscape:current-layer="layer2"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1053"
inkscape:window-x="960"
inkscape:window-y="398"
inkscape:window-maximized="1"
inkscape:document-rotation="0" />
<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 />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-11.141665,-19.84579)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5778px;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="82.398811"
y="34.684521"
id="text12"><tspan
sodipodi:role="line"
x="82.398811"
y="34.684521"
style="font-size:22.5778px;stroke-width:0.264583"
id="tspan16">⋈</tspan></text>
<text
id="text24"
y="70.970238"
x="58.208336"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5778px;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"
xml:space="preserve"><tspan
id="tspan22"
style="font-size:22.5778px;stroke-width:0.264583"
y="70.970238"
x="58.208336"
sodipodi:role="line">⋈</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5778px;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.994051"
y="113.30357"
id="text28"><tspan
sodipodi:role="line"
x="30.994051"
y="113.30357"
style="font-size:22.5778px;stroke-width:0.264583"
id="tspan32">σ</tspan></text>
<flowRoot
xml:space="preserve"
id="flowRoot38"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48px;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"
transform="scale(0.26458333)"><flowRegion
id="flowRegion40"><rect
id="rect42"
width="108.57143"
height="608.57141"
x="114.28571"
y="525.37683" /></flowRegion><flowPara
id="flowPara44" /></flowRoot>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;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="32.203571"
y="151.1012"
id="text57"><tspan
sodipodi:role="line"
id="tspan55"
x="32.203571"
y="151.1012"
style="font-size:19.7556px;stroke-width:0.264583">R</tspan></text>
<text
id="text61"
y="114.05953"
x="79.072617"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;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"
xml:space="preserve"><tspan
style="font-size:19.7556px;stroke-width:0.264583"
y="114.05953"
x="79.072617"
id="tspan59"
sodipodi:role="line">S</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;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="111.57857"
y="72.482147"
id="text65"><tspan
sodipodi:role="line"
id="tspan63"
x="111.57857"
y="72.482147"
style="font-size:19.7556px;stroke-width:0.264583">T</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 66.145832,56.807941 89.296874,36.550779 114.51497,54.740885"
id="path69"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 84.335936,96.49544 65.732421,71.690753 37.207031,98.149088"
id="path71"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 37.207031,115.09896 v 18.60351"
id="path73"
inkscape:connector-curvature="0" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
transform="translate(-11.141665,-19.84579)">
<g
id="g893"
transform="translate(-5.374349,-3.3072916)"
class="fragment">
<rect
ry="2.4804688"
y="138.24998"
x="17.016014"
height="14.882812"
width="53.330074"
id="rect884"
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
<text
id="text888"
y="148.02716"
x="43.424736"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.7px;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:8.46667px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.264583"
y="148.02716"
x="43.424736"
id="tspan886"
sodipodi:role="line">100 Tuples</tspan></text>
</g>
<g
transform="translate(-5.374349,-40.927734)"
id="g901"
class="fragment">
<rect
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
id="rect895"
width="53.330074"
height="14.882812"
x="17.016014"
y="138.24998"
ry="2.4804688" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.7px;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="43.424736"
y="148.02716"
id="text899"><tspan
sodipodi:role="line"
id="tspan897"
x="43.424736"
y="148.02716"
style="font-size:8.46667px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.264583">10 Tuples</tspan></text>
</g>
<g
class="fragment"
transform="translate(53.776558,-40.927734)"
id="g949">
<rect
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
id="rect943"
width="53.330074"
height="14.882812"
x="17.016014"
y="138.24998"
ry="2.4804688" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.7px;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="43.424736"
y="148.02716"
id="text947"><tspan
sodipodi:role="line"
id="tspan945"
x="43.424736"
y="148.02716"
style="font-size:8.46667px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.264583">1M Tuples</tspan></text>
</g>
<g
class="fragment"
id="g941"
transform="translate(20.257161,-80.615234)">
<rect
ry="2.4804688"
y="138.24998"
x="17.016014"
height="14.882812"
width="53.330074"
id="rect935"
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
<text
id="text939"
y="148.02716"
x="43.424736"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.7px;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:8.46667px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.264583"
y="148.02716"
x="43.424736"
id="tspan937"
sodipodi:role="line">10 Tuples</tspan></text>
</g>
<g
class="fragment"
transform="translate(79.937235,-80.615234)"
id="g949-4">
<rect
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
id="rect943-9"
width="53.330074"
height="14.882812"
x="17.016014"
y="138.24998"
ry="2.4804688" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.7px;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="43.424736"
y="148.02716"
id="text947-2"><tspan
sodipodi:role="line"
id="tspan945-0"
x="43.424736"
y="148.02716"
style="font-size:8.46667px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.264583">1M Tuples</tspan></text>
</g>
<g
transform="translate(46.302083,-116.16862)"
id="g925"
class="fragment">
<rect
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
id="rect919"
width="53.330074"
height="14.882812"
x="17.016014"
y="138.24998"
ry="2.4804688" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.7px;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="43.424736"
y="148.02716"
id="text923"><tspan
sodipodi:role="line"
id="tspan921"
x="43.424736"
y="148.02716"
style="font-size:8.46667px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.264583">10 Tuples</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -0,0 +1,277 @@
<?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="179.94807mm"
height="129.7733mm"
viewBox="0 0 179.94807 129.7733"
version="1.1"
id="svg900"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
sodipodi:docname="JoinIssue-Stratified.svg">
<defs
id="defs894" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="497.09232"
inkscape:cy="357.69738"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
inkscape:document-rotation="0"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1053"
inkscape:window-x="960"
inkscape:window-y="398"
inkscape:window-maximized="1" />
<metadata
id="metadata897">
<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(-18.913943,-14.657025)">
<text
id="text24"
y="64.299385"
x="85.448387"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5778px;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"
xml:space="preserve"><tspan
id="tspan22"
style="font-size:22.5778px;stroke-width:0.264583"
y="64.299385"
x="85.448387"
sodipodi:role="line">⋈</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5778px;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="62.287003"
y="106.63271"
id="text28"><tspan
sodipodi:role="line"
x="62.287003"
y="106.63271"
style="font-size:22.5778px;stroke-width:0.264583"
id="tspan32">σ</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;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="63.496521"
y="144.43033"
id="text57"><tspan
sodipodi:role="line"
id="tspan55"
x="63.496521"
y="144.43033"
style="font-size:19.7556px;stroke-width:0.264583">R</tspan></text>
<text
id="text61"
y="107.38868"
x="110.36557"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;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"
xml:space="preserve"><tspan
style="font-size:19.7556px;stroke-width:0.264583"
y="107.38868"
x="110.36557"
id="tspan59"
sodipodi:role="line">S</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 115.62889,89.824584 97.025366,65.019894 68.499976,91.478234"
id="path71"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 68.499976,108.4281 v 18.60351"
id="path73"
inkscape:connector-curvature="0" />
<g
id="g893"
transform="translate(26.310982,-9.2159498)"
class="fragment">
<rect
ry="2.4804688"
y="138.24998"
x="17.016014"
height="14.882812"
width="53.330074"
id="rect884"
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
<text
id="text888"
y="148.02716"
x="43.424736"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.7px;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:8.46667px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.264583"
y="148.02716"
x="43.424736"
id="tspan886"
sodipodi:role="line">100 Tuples</tspan></text>
</g>
<g
id="g893-7"
transform="translate(26.310982,-45.794597)"
class="fragment">
<rect
ry="2.4804688"
y="138.24998"
x="17.016014"
height="14.882812"
width="53.330074"
id="rect884-3"
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
<text
id="text888-6"
y="148.02716"
x="43.424736"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.7px;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:8.46667px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.264583"
y="148.02716"
x="43.424736"
id="tspan886-5"
sodipodi:role="line">5 Tuples</tspan></text>
</g>
<g
id="g1647"
transform="translate(26.310982,-45.794597)"
class="fragment">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;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="-8.2958031"
y="68.717804"
id="text1585"><tspan
sodipodi:role="line"
id="tspan1583"
x="-8.2958031"
y="68.717804"
style="stroke-width:0.264583">&lt;'A', 3&gt;</tspan><tspan
sodipodi:role="line"
x="-8.2958031"
y="81.94693"
style="stroke-width:0.264583"
id="tspan1587">&lt;'B', 3&gt;</tspan><tspan
sodipodi:role="line"
x="-8.2958031"
y="95.176056"
style="stroke-width:0.264583"
id="tspan1589">&lt;'C', 7&gt;</tspan><tspan
sodipodi:role="line"
x="-8.2958031"
y="108.40517"
style="stroke-width:0.264583"
id="tspan1591">&lt;'D', 12&gt;</tspan><tspan
sodipodi:role="line"
x="-8.2958031"
y="121.6343"
style="stroke-width:0.264583"
id="tspan1593">&lt;'E', 14&gt;</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M -7.2947489,123.49058 17.016014,153.1328"
id="path1595"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 35.905754,60.505204 34.44033,77.744776"
id="path1597" />
</g>
<g
id="g1669"
class="fragment">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.5833px;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="132.08594"
y="45.530449"
id="text1601"><tspan
sodipodi:role="line"
id="tspan1599"
x="132.08594"
y="45.530449"
style="stroke-width:0.264583">Sample from</tspan><tspan
sodipodi:role="line"
x="132.08594"
y="58.759575"
style="stroke-width:0.264583"
id="tspan1603">σ<tspan
style="font-size:65%;baseline-shift:sub"
id="tspan1605">B∈{3,7,12,14}</tspan></tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 151.05674,63.033536 127.35921,97.423477"
id="path1662" />
</g>
<g
id="g893-5"
transform="translate(79.641052,-45.794597)"
class="fragment">
<rect
ry="2.4804688"
y="138.24998"
x="17.016014"
height="14.882812"
width="53.330074"
id="rect884-0"
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
<text
id="text888-9"
y="148.02716"
x="43.424736"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.7px;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:8.46667px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.264583"
y="148.02716"
x="43.424736"
id="tspan886-6"
sodipodi:role="line">100 Tuples</tspan></text>
</g>
<g
id="g1637"
transform="translate(53.890194,-89.321293)"
class="fragment">
<rect
ry="2.4804688"
y="138.24998"
x="17.016014"
height="14.882812"
width="53.330074"
id="rect1631"
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
<text
id="text1635"
y="148.02716"
x="43.424736"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.7px;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-size:8.46667px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.264583"
y="148.02716"
x="43.424736"
id="tspan1633"
sodipodi:role="line">120 Tuples</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,279 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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="113.48098mm"
height="129.51984mm"
viewBox="0 0 113.48098 129.51984"
version="1.1"
id="svg8"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
sodipodi:docname="2018-03-05-JoinIssue.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.64"
inkscape:cx="214.95617"
inkscape:cy="143.89299"
inkscape:document-units="mm"
inkscape:current-layer="layer2"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1440"
inkscape:window-height="852"
inkscape:window-x="0"
inkscape:window-y="0"
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(-11.141665,-21.581365)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.57777786px;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.26458332"
x="82.398811"
y="34.684521"
id="text12"><tspan
sodipodi:role="line"
x="82.398811"
y="34.684521"
style="font-size:22.57777786px;stroke-width:0.26458332"
id="tspan16">⋈</tspan></text>
<text
id="text24"
y="70.970238"
x="58.208336"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.57777786px;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.26458332"
xml:space="preserve"><tspan
id="tspan22"
style="font-size:22.57777786px;stroke-width:0.26458332"
y="70.970238"
x="58.208336"
sodipodi:role="line">⋈</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.57777786px;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.26458332"
x="30.994051"
y="113.30357"
id="text28"><tspan
sodipodi:role="line"
x="30.994051"
y="113.30357"
style="font-size:22.57777786px;stroke-width:0.26458332"
id="tspan32">σ</tspan></text>
<flowRoot
xml:space="preserve"
id="flowRoot38"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48px;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"
transform="scale(0.26458333)"><flowRegion
id="flowRegion40"><rect
id="rect42"
width="108.57143"
height="608.57141"
x="114.28571"
y="525.37683" /></flowRegion><flowPara
id="flowPara44"></flowPara></flowRoot> <text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.75555611px;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.26458332"
x="32.203571"
y="151.1012"
id="text57"><tspan
sodipodi:role="line"
id="tspan55"
x="32.203571"
y="151.1012"
style="font-size:19.75555611px;stroke-width:0.26458332">R</tspan></text>
<text
id="text61"
y="114.05953"
x="79.072617"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.75555611px;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.26458332"
xml:space="preserve"><tspan
style="font-size:19.75555611px;stroke-width:0.26458332"
y="114.05953"
x="79.072617"
id="tspan59"
sodipodi:role="line">S</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.75555611px;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.26458332"
x="111.57857"
y="72.482147"
id="text65"><tspan
sodipodi:role="line"
id="tspan63"
x="111.57857"
y="72.482147"
style="font-size:19.75555611px;stroke-width:0.26458332">T</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 66.145832,56.807941 89.296874,36.550779 114.51497,54.740885"
id="path69"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 84.335936,96.49544 65.732421,71.690753 37.207031,98.149088"
id="path71"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 37.207031,115.09896 v 18.60351"
id="path73"
inkscape:connector-curvature="0" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
transform="translate(-11.141665,-21.581365)">
<g
id="g893"
transform="translate(-5.374349,-3.3072916)"
class="fragment">
<rect
ry="2.4804688"
y="138.24998"
x="17.016014"
height="14.882812"
width="53.330074"
id="rect884"
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
<text
id="text888"
y="148.02716"
x="43.424736"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.69999981px;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:8.46666622px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.26458332"
y="148.02716"
x="43.424736"
id="tspan886"
sodipodi:role="line">100 Tuples</tspan></text>
</g>
<g
transform="translate(-5.374349,-40.927734)"
id="g901"
class="fragment">
<rect
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
id="rect895"
width="53.330074"
height="14.882812"
x="17.016014"
y="138.24998"
ry="2.4804688" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.69999981px;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="43.424736"
y="148.02716"
id="text899"><tspan
sodipodi:role="line"
id="tspan897"
x="43.424736"
y="148.02716"
style="font-size:8.46666622px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.26458332">10 Tuples</tspan></text>
</g>
<g
class="fragment"
transform="translate(53.776558,-40.927734)"
id="g949">
<rect
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
id="rect943"
width="53.330074"
height="14.882812"
x="17.016014"
y="138.24998"
ry="2.4804688" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.69999981px;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="43.424736"
y="148.02716"
id="text947"><tspan
sodipodi:role="line"
id="tspan945"
x="43.424736"
y="148.02716"
style="font-size:8.46666622px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.26458332">100 Tuples</tspan></text>
</g>
<g
class="fragment"
id="g941"
transform="translate(20.257161,-80.615234)">
<rect
ry="2.4804688"
y="138.24998"
x="17.016014"
height="14.882812"
width="53.330074"
id="rect935"
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
<text
id="text939"
y="148.02716"
x="43.424736"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.69999981px;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="font-size:8.46666622px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.26458332"
y="148.02716"
x="43.424736"
id="tspan937"
sodipodi:role="line">0 Tuples</tspan></text>
</g>
<g
transform="translate(46.302083,-116.16862)"
id="g925"
class="fragment">
<rect
style="fill:#0000ff;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
id="rect919"
width="53.330074"
height="14.882812"
x="17.016014"
y="138.24998"
ry="2.4804688" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.69999981px;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="43.424736"
y="148.02716"
id="text923"><tspan
sodipodi:role="line"
id="tspan921"
x="43.424736"
y="148.02716"
style="font-size:8.46666622px;text-align:center;text-anchor:middle;fill:#cccccc;stroke-width:0.26458332">0 Tuples</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 64 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View file

@ -0,0 +1,301 @@
<?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="84.097397mm"
height="82.036255mm"
viewBox="0 0 84.097397 82.036255"
version="1.1"
id="svg8"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
sodipodi:docname="RippleJoin.svg">
<defs
id="defs2">
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1123"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<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="path1121" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path828"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
</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="240.72803"
inkscape:cy="256.68319"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1053"
inkscape:window-x="960"
inkscape:window-y="398"
inkscape:window-maximized="1"
inkscape:document-rotation="0" />
<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 />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-8.1707806,-8.0637769)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;line-height:125%;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="60.098209"
y="14.236012"
id="text817"><tspan
sodipodi:role="line"
id="tspan815"
x="60.098209"
y="14.236012"
style="stroke-width:0.264583px">R</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;line-height:125%;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="10.29985"
y="59.630955"
id="text821"><tspan
sodipodi:role="line"
id="tspan819"
x="10.29985"
y="59.630955"
style="stroke-width:0.264583px">S</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
d="m 27.59226,26.369047 v 63.21652"
id="path823"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc"
class="" />
<path
inkscape:connector-curvature="0"
id="path1119"
d="M 27.59226,26.369047 H 91.753717"
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.265;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1123)"
sodipodi:nodetypes="cc"
class="" />
<rect
style="opacity:1;fill:none;fill-opacity:1;stroke:#ac9d93;stroke-width:0.265;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3496"
width="11.245876"
height="11.245876"
x="28.650593"
y="27.427382"
ry="0.3697499"
class="fragment" />
<rect
ry="0.3697499"
y="27.427382"
x="40.821426"
height="11.245876"
width="11.245876"
id="rect3498"
style="opacity:1;fill:none;fill-opacity:1;stroke:#ac9d93;stroke-width:0.265;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
class="fragment" />
<rect
style="opacity:1;fill:none;fill-opacity:1;stroke:#ac9d93;stroke-width:0.265;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3500"
width="23.41671"
height="11.245876"
x="28.650593"
y="39.598217"
ry="0.3697499"
class="fragment" />
<rect
style="opacity:1;fill:none;fill-opacity:1;stroke:#ac9d93;stroke-width:0.265;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3504"
width="11.24588"
height="23.440046"
x="52.992264"
y="27.427382"
ry="0.3697499"
class="fragment" />
<rect
ry="0.3697499"
y="51.769054"
x="28.650593"
height="11.245876"
width="35.544064"
id="rect3506"
style="opacity:1;fill:none;fill-opacity:1;stroke:#ac9d93;stroke-width:0.265;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
class="fragment" />
<rect
ry="0.3697499"
y="27.427382"
x="65.163101"
height="35.535286"
width="11.24588"
id="rect3508"
style="opacity:1;fill:none;fill-opacity:1;stroke:#ac9d93;stroke-width:0.265;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
class="fragment" />
<text
id="text3512"
y="24.913839"
x="33.828865"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;line-height:125%;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="stroke-width:0.264583px"
y="24.913839"
x="33.828865"
id="tspan3510"
sodipodi:role="line">r<tspan
style="font-size:4.23333px"
id="tspan3514">1</tspan></tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;line-height:125%;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="45.999702"
y="24.913839"
id="text3520"><tspan
sodipodi:role="line"
id="tspan3518"
x="45.999702"
y="24.913839"
style="stroke-width:0.264583px">r<tspan
id="tspan3516"
style="font-size:4.23333px">2</tspan></tspan></text>
<text
id="text3526"
y="24.913839"
x="58.699707"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;line-height:125%;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="stroke-width:0.264583px"
y="24.913839"
x="58.699707"
id="tspan3524"
sodipodi:role="line">r<tspan
style="font-size:4.23333px"
id="tspan3522">3</tspan></tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;line-height:125%;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="70.870544"
y="24.913839"
id="text3532"><tspan
sodipodi:role="line"
id="tspan3530"
x="70.870544"
y="24.913839"
style="stroke-width:0.264583px">r<tspan
id="tspan3528"
style="font-size:4.23333px">4</tspan></tspan></text>
<text
id="text3538"
y="35.497173"
x="22.716368"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;line-height:125%;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="stroke-width:0.264583px"
y="35.497173"
x="22.716368"
id="tspan3536"
sodipodi:role="line">s<tspan
style="font-size:4.23333px"
id="tspan3534">1</tspan></tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;line-height:125%;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="22.716368"
y="47.668007"
id="text3544"><tspan
sodipodi:role="line"
id="tspan3542"
x="22.716368"
y="47.668007"
style="stroke-width:0.264583px">s<tspan
id="tspan3540"
style="font-size:4.23333px">2</tspan></tspan></text>
<text
id="text3550"
y="59.309677"
x="22.716368"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;line-height:125%;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="stroke-width:0.264583px"
y="59.309677"
x="22.716368"
id="tspan3548"
sodipodi:role="line">s<tspan
style="font-size:4.23333px"
id="tspan3546">3</tspan></tspan></text>
<text
id="text3556"
y="22.83497"
x="81.926346"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;line-height:125%;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="stroke-width:0.264583px"
y="22.83497"
x="81.926346"
id="tspan3554"
sodipodi:role="line">...<tspan
style="font-size:4.23333px"
id="tspan3552" /></tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;line-height:125%;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="23.283337"
y="67.114876"
id="text3562"><tspan
sodipodi:role="line"
id="tspan3560"
x="23.283337"
y="67.114876"
style="stroke-width:0.264583px">.</tspan><tspan
sodipodi:role="line"
x="23.283337"
y="77.698212"
style="stroke-width:0.264583px"
id="tspan3564">.</tspan><tspan
sodipodi:role="line"
x="23.283337"
y="88.281548"
style="stroke-width:0.264583px"
id="tspan3567">.</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB