Merge pull request #828 from nosqlbench/nosqlbench-824

nosqlbench-824
This commit is contained in:
Jonathan Shook 2022-12-07 15:45:18 -06:00 committed by GitHub
commit 03a3afd86e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 953 additions and 0 deletions

View File

@ -0,0 +1,743 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
- Copyright (c) 2022 nosqlbench
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-->
<svg
width="14in"
height="8.5in"
viewBox="0 0 355.6 215.9"
version="1.1"
id="svg8"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="docs-publishing-flow.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs2">
<marker
style="overflow:visible;"
id="Arrow1Lend"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:isstock="true">
<path
transform="scale(0.8) rotate(180) translate(12.5,0)"
style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path10457" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lstart"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Lstart"
inkscape:isstock="true">
<path
transform="scale(0.8) translate(12.5,0)"
style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path10454" />
</marker>
<linearGradient
inkscape:collect="always"
id="linearGradient983">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop979" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop981" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient983"
id="linearGradient985"
x1="131.67278"
y1="63.5"
x2="173.12723"
y2="63.5"
gradientUnits="userSpaceOnUse" />
<linearGradient
gradientTransform="matrix(3.7795276,0,0,3.7795276,-496.71822,-166.61139)"
inkscape:collect="always"
xlink:href="#linearGradient983"
id="linearGradient985-1"
x1="131.67278"
y1="63.5"
x2="173.12723"
y2="63.5"
gradientUnits="userSpaceOnUse" />
<linearGradient
gradientTransform="matrix(3.7795276,0,0,3.7795276,-304.71821,-473.13109)"
inkscape:collect="always"
xlink:href="#linearGradient983"
id="linearGradient985-14"
x1="131.67278"
y1="63.5"
x2="173.12723"
y2="63.5"
gradientUnits="userSpaceOnUse" />
<marker
style="overflow:visible"
id="Arrow1Lend-3"
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:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path10457-6" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lend-6"
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:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path10457-2" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lend-1"
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:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path10457-8" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lend-9"
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:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path10457-20" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lend-37"
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:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path10457-5" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lend-2"
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:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path10457-28" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lend-7"
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:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path10457-53" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lend-62"
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:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path10457-9" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lend-27"
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:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path10457-0" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lend-36"
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:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path10457-06" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lend-61"
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:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path10457-87" />
</marker>
<marker
style="overflow:visible"
id="Arrow1Lend-20"
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:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path10457-23" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.060049"
inkscape:cx="685.17788"
inkscape:cy="241.49911"
inkscape:document-units="mm"
inkscape:current-layer="layer2"
showgrid="true"
units="in"
inkscape:window-width="3840"
inkscape:window-height="2019"
inkscape:window-x="0"
inkscape:window-y="2160"
inkscape:window-maximized="1"
inkscape:pagecheckerboard="0">
<inkscape:grid
type="xygrid"
id="grid895"
units="in"
spacingx="3.175"
spacingy="3.175"
empspacing="8"
color="#3f3fff"
opacity="0.21568627"
empcolor="#3f3fff"
empopacity="0.42352941" />
<inkscape:grid
type="xygrid"
id="grid918"
units="in"
spacingx="1.5875"
spacingy="1.5875"
empspacing="8"
dotted="false"
color="#3f3fff"
opacity="0.0627451" />
</sodipodi:namedview>
<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" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="data"
style="display:inline"
transform="translate(0,76.2)">
<g
id="g3395"
transform="translate(-101.6,28.574999)">
<rect
style="fill:none;stroke:#4861d1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
id="rect853"
width="79.375"
height="30.1625"
x="117.475"
y="-47.625" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="163.23721"
y="-35.909264"
id="text1713"><tspan
sodipodi:role="line"
id="tspan1711"
style="text-align:center;text-anchor:middle;stroke-width:0.264583"
x="163.23721"
y="-35.909264">NB</tspan><tspan
sodipodi:role="line"
style="text-align:center;text-anchor:middle;stroke-width:0.264583"
x="163.23721"
y="-22.68014"
id="tspan1580">main branch</tspan></text>
</g>
<g
id="g3230"
transform="translate(171.45,17.4625)">
<rect
style="display:inline;fill:none;stroke:#4861d1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
id="rect853-3"
width="60.324997"
height="31.749998"
x="96.837502"
y="22.225" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="102.53144"
y="33.94603"
id="text2399"><tspan
sodipodi:role="line"
id="tspan2397"
style="stroke-width:0.264583"
x="102.53144"
y="33.94603">RELEASED</tspan><tspan
sodipodi:role="line"
style="stroke-width:0.264583"
x="102.53144"
y="47.175156"
id="tspan24378">NB-DOCS</tspan></text>
</g>
<g
id="g3230-6"
transform="translate(173.0375,-41.275)"
style="display:inline">
<rect
style="display:inline;fill:none;stroke:#4861d1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
id="rect853-3-7"
width="58.737499"
height="30.162498"
x="96.837502"
y="22.225" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="99.298256"
y="34.417007"
id="text2399-5"><tspan
sodipodi:role="line"
id="tspan2397-3"
style="stroke-width:0.264583"
x="99.298256"
y="34.417007">NB-BUILD-</tspan><tspan
sodipodi:role="line"
style="stroke-width:0.264583"
x="99.298256"
y="47.646133"
id="tspan3616">DOCS</tspan></text>
</g>
<g
id="g8349"
transform="translate(36.515457,20.6375)">
<ellipse
style="fill:none;stroke:#4861d1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
id="path4433"
cx="127.79375"
cy="-24.606251"
rx="18.25625"
ry="15.08125" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="127.69779"
y="-30.149092"
id="text1713-6"><tspan
sodipodi:role="line"
id="tspan1711-2"
style="font-size:5.64444px;text-align:center;text-anchor:middle;stroke-width:0.264583"
x="127.69779"
y="-30.149092">non-</tspan><tspan
sodipodi:role="line"
style="font-size:5.64444px;text-align:center;text-anchor:middle;stroke-width:0.264583"
x="127.69779"
y="-23.093542"
id="tspan4984">release</tspan><tspan
sodipodi:role="line"
style="font-size:5.64444px;text-align:center;text-anchor:middle;stroke-width:0.264583"
x="127.69779"
y="-16.037991"
id="tspan4986">build</tspan></text>
</g>
<g
id="g8349-9"
style="display:inline"
transform="translate(36.152018,80.16875)">
<ellipse
style="fill:none;stroke:#4861d1;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
id="path4433-1"
cx="127.79375"
cy="-24.606251"
rx="18.25625"
ry="15.08125" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="127.69779"
y="-26.017361"
id="text1713-6-2"><tspan
sodipodi:role="line"
style="font-size:5.64444px;text-align:center;text-anchor:middle;stroke-width:0.264583"
x="127.69779"
y="-26.017361"
id="tspan4984-0">release</tspan><tspan
sodipodi:role="line"
style="font-size:5.64444px;text-align:center;text-anchor:middle;stroke-width:0.264583"
x="127.69779"
y="-18.961811"
id="tspan4986-9">build</tspan></text>
</g>
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
d="m 95.249998,-3.9687508 50.802952,0"
id="path10370"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#g3395"
inkscape:connection-end="#g8349" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
d="m 83.019593,11.112499 65.723847,36.09988"
id="path10372"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#g3395"
inkscape:connection-end="#g8349-9" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
d="m 182.56545,-3.9687507 87.30955,2e-7"
id="path10817"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#g8349"
inkscape:connection-end="#g3230-6" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
d="m 182.20202,55.562499 86.08548,0"
id="path10921"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#g8349-9"
inkscape:connection-end="#g3230" />
<g
id="g11511"
transform="translate(155.575,-112.7125)">
<circle
style="font-variation-settings:normal;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
id="path11306"
cx="56.960236"
cy="65.919228"
r="2.7336953" />
<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 57.15,68.2625 -10e-7,6.35 -3.174999,6.35"
id="path11421"
sodipodi:nodetypes="ccc" />
<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 57.149999,74.6125 3.175001,6.35"
id="path11423"
sodipodi:nodetypes="cc" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 53.975,71.4375 h 6.35"
id="path11425"
sodipodi:nodetypes="cc" />
</g>
<path
style="font-variation-settings:normal;display:inline;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
d="m 212.725,-40.77668 57.15,24.313495"
id="path11775"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#g11511"
inkscape:connection-end="#g3230-6" />
<path
style="font-variation-settings:normal;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
d="M 212.725,-40.77668 95.249998,-13.263682"
id="path11944"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#g11511"
inkscape:connection-end="#g3395" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#Arrow1Lend);stop-color:#000000;stop-opacity:1"
d="m 299.04267,11.112499 -0.381,28.575001"
id="path12048"
inkscape:connector-type="polyline"
inkscape:connector-curvature="0"
inkscape:connection-start="#g3230-6"
inkscape:connection-end="#g3230" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="127.40736"
y="-43.492035"
id="text13414"><tspan
sodipodi:role="line"
id="tspan13412"
style="font-size:6.35px;stroke-width:0.264583"
x="127.40736"
y="-43.492035">edit embeded</tspan><tspan
sodipodi:role="line"
style="font-size:6.35px;stroke-width:0.264583"
x="127.40736"
y="-35.554535"
id="tspan13944">docs, javadoc,</tspan><tspan
sodipodi:role="line"
style="font-size:6.35px;stroke-width:0.264583"
x="127.40736"
y="-27.617033"
id="tspan26081">and code</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="229.11111"
y="-41.987053"
id="text13414-7"><tspan
sodipodi:role="line"
style="font-size:6.35px;stroke-width:0.264583"
x="229.11111"
y="-41.987053"
id="tspan13944-6">edit docs</tspan><tspan
sodipodi:role="line"
style="font-size:6.35px;stroke-width:0.264583"
x="229.11111"
y="-34.049553"
id="tspan18006">content</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="300.85052"
y="18.575722"
id="text13414-7-1"><tspan
sodipodi:role="line"
style="font-size:6.35px;stroke-width:0.264583"
x="300.85052"
y="18.575722"
id="tspan18006-9">publish <tspan
style="font-weight:bold"
id="tspan19860">all</tspan> docs</tspan><tspan
sodipodi:role="line"
style="font-size:6.35px;stroke-width:0.264583"
x="300.85052"
y="26.513222"
id="tspan18420">content to <tspan
style="font-weight:bold"
id="tspan21172">main</tspan></tspan><tspan
sodipodi:role="line"
style="font-size:6.35px;stroke-width:0.264583"
x="300.85052"
y="34.450722"
id="tspan18422">docs site</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="185.48294"
y="52.958786"
id="text13414-7-1-3"><tspan
sodipodi:role="line"
style="font-size:6.35px;stroke-width:0.264583"
x="185.48294"
y="52.958786"
id="tspan18006-9-1">publish <tspan
style="font-weight:bold"
id="tspan19284">embedded</tspan></tspan><tspan
sodipodi:role="line"
style="font-size:6.35px;stroke-width:0.264583"
x="185.48294"
y="60.896286"
id="tspan18941">docs content to <tspan
style="font-weight:bold"
id="tspan10164">main</tspan></tspan><tspan
sodipodi:role="line"
style="font-size:6.35px;stroke-width:0.264583"
x="185.48294"
y="68.833786"
id="tspan18422-4">docs site</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="185.37083"
y="-5.9306483"
id="text13414-7-1-3-7"><tspan
sodipodi:role="line"
style="font-size:6.35px;stroke-width:0.264583"
x="185.37083"
y="-5.9306483"
id="tspan18006-9-1-8">publish <tspan
style="font-weight:bold"
id="tspan18684">embedded</tspan></tspan><tspan
sodipodi:role="line"
style="font-size:6.35px;stroke-width:0.264583"
x="185.37083"
y="2.0068517"
id="tspan18941-4">docs content to <tspan
style="font-weight:bold"
id="tspan11314">preview</tspan></tspan><tspan
sodipodi:role="line"
style="font-size:6.35px;stroke-width:0.264583"
x="185.37083"
y="9.9443502"
id="tspan18422-4-5">docs site</tspan></text>
<text
xml:space="preserve"
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
x="133.32997"
y="27.209949"
id="text27722"><tspan
sodipodi:role="line"
id="tspan27720"
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
x="133.32997"
y="27.209949">on push to main</tspan><tspan
sodipodi:role="line"
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
x="133.32997"
y="31.619661"
id="tspan27724">and change to</tspan><tspan
sodipodi:role="line"
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
x="133.32997"
y="36.029373"
id="tspan27726">RELEASENOTES.md</tspan></text>
<text
xml:space="preserve"
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;display:inline;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
x="259.55676"
y="18.714157"
id="text27722-6"><tspan
sodipodi:role="line"
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
x="259.55676"
y="18.714157"
id="tspan27726-6">Initially, this doc site</tspan><tspan
sodipodi:role="line"
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
x="259.55676"
y="23.123869"
id="tspan69260">will be checkpointed </tspan><tspan
sodipodi:role="line"
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
x="259.55676"
y="27.533583"
id="tspan69262">manually into the </tspan><tspan
sodipodi:role="line"
style="font-weight:bold;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
x="259.55676"
y="31.943295"
id="tspan69264">main docs site</tspan></text>
<text
xml:space="preserve"
style="font-size:3.52777px;line-height:1.25;font-family:sans-serif;display:inline;stroke-width:0.264583"
x="106.08576"
y="0.33000755"
id="text27722-5"><tspan
sodipodi:role="line"
id="tspan27720-9"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;line-height:1.25;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;white-space:normal;opacity:1;vector-effect:none;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
x="106.08576"
y="0.33000755">on push to main</tspan><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;line-height:1.25;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;white-space:normal;opacity:1;vector-effect:none;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
x="106.08576"
y="4.7397203"
id="tspan27724-2">and NO change to</tspan><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.52777px;line-height:1.25;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;white-space:normal;opacity:1;vector-effect:none;fill:#5939cc;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
x="106.08576"
y="9.1494331"
id="tspan27726-2">RELEASENOTES.md</tspan></text>
</g>
<g
inkscape:label="boxes"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-4.9)"
style="display:inline;opacity:0.438" />
</svg>

After

Width:  |  Height:  |  Size: 31 KiB

View File

@ -0,0 +1,89 @@
/*
* Copyright (c) 2022 nosqlbench
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.nosqlbench.virtdata.library.basics.shared.from_long.to_long;
import io.nosqlbench.virtdata.api.annotations.Example;
import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper;
import java.util.function.LongUnaryOperator;
/**
* <P>Compute a value which increases monotonically with respect to the cycle value.
* All values for f(X+(m>=0)) will be equal or greater than f(X). In effect, this
* means that with a sequence of monotonic inputs, the results will be monotonic as
* well as clustered. The values will approximate input/average, but will vary in frequency
* around a simple binomial distribution.</P>
*
* <p>The practical effect of this is to be able to compute a sequence of values
* over inputs which can act as foreign keys, but which are effectively ordered.</p>
*
* <H3>Call for Ideas</H3>
* <p>Due to the complexity of generalizing this as a pure function over other distributions,
* this is the only function of this type for now. If you are interested in this problem
* domain and have some suggestions for how to extend it to other distributions, please
* join the project or let us know.</p>
*/
@ThreadSafeMapper
public class TriangularStepFunction implements LongUnaryOperator {
private final Hash hasher = new Hash();
private final long average;
private final LongUnaryOperator sizer;
private final long variance;
@Example({"TriangularStepFunction(100,20)","Create a sequence of values where the average is 100, but the range of values is between 80 and 120."})
@Example({"TriangularStepFunction(80,10)","Create a sequence of values where the average is 80, but the range of values is between 70 and 90."})
TriangularStepFunction(long average, long variance) {
if (average<=0 || variance < 0 || variance > average) {
throw new RuntimeException(
"The average must be positive, variance non-negative and the variance must be less than the average. " +
"You provided average=" + average + ", variance=" + variance + "."
);
}
this.average = average;
this.variance = variance;
this.sizer = new HashRange(average-variance,average+variance);
}
TriangularStepFunction(long average) {
this(average, average/2);
}
@Override
public long applyAsLong(long operand) {
// window number
long count = operand / average;
// offset within window
long offset = operand % average;
// base of window
long base = operand - offset;
// variate up to window size
long variance = sizer.applyAsLong(base);
// variate offset from start of window
long slice = base + variance;
// select current or next window
long result = ((slice)>operand) ? count : count + 1;
return result;
}
@Override
public String toString() {
return this.getClass().getSimpleName()+"{average="+ average +",variance="+variance+"}";
}
}

View File

@ -0,0 +1,121 @@
/*
* Copyright (c) 2022 nosqlbench
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.nosqlbench.virtdata.library.basics.shared.from_long.to_long;
import org.junit.jupiter.api.Test;
import java.security.InvalidParameterException;
import java.util.Arrays;
import java.util.LongSummaryStatistics;
import java.util.stream.IntStream;
import static org.assertj.core.api.Assertions.assertThat;
public class TriangularStepFunctionTest {
private static final int LABEL=0;
private static final int FREQUENCY=1;
@Test
public void testExample1() {
TriangularStepFunction e1 = new TriangularStepFunction(100, 20);
int[] runLengths = this.rleStatsFor(e1, 0, 10000);
System.out.println(Arrays.toString(runLengths));
assertThat(IntStream.of(runLengths).min().orElseThrow()).isEqualTo(80L);
assertThat(IntStream.of(runLengths).max().orElseThrow()).isEqualTo(120L);
}
@Test
public void testExample2() {
TriangularStepFunction e1 = new TriangularStepFunction(80, 10);
int[] runLengths = this.rleStatsFor(e1, 0, 10000);
System.out.println(Arrays.toString(runLengths));
assertThat(IntStream.of(runLengths).min().orElseThrow()).isEqualTo(70L);
assertThat(IntStream.of(runLengths).max().orElseThrow()).isEqualTo(90L);
}
@Test
public void testIncrementalVariance() {
TriangularStepFunction f = new TriangularStepFunction(100, 0);
assertThat(f.applyAsLong(0L)).isEqualTo(0L);
assertThat(f.applyAsLong(1L)).isEqualTo(0L);
assertThat(f.applyAsLong(99L)).isEqualTo(0L);
assertThat(f.applyAsLong(100L)).isEqualTo(1L);
}
@Test
public void testVariance() {
long first=0;
TriangularStepFunction f = new TriangularStepFunction(100,1);
var rlestats = rleStatsFor(f, 0, 100000);
LongSummaryStatistics stats99to101 = statsForRle((int) f.applyAsLong(first),rlestats);
assertThat(stats99to101.getMin()).isEqualTo(99L);
assertThat(stats99to101.getMax()).isEqualTo(101L);
int[][] histo = histoFor(rlestats);
LongSummaryStatistics histoStats = new LongSummaryStatistics();
for (int[] ints : histo) {
histoStats.accept(ints[LABEL]);
}
assertThat(histoStats.getAverage()).isEqualTo(100);
}
private int[] rleStatsFor(TriangularStepFunction f, long firstTrialIncl, long lastTrialExcl) {
long firstBucket = f.applyAsLong(firstTrialIncl);
long lastBucket = f.applyAsLong(lastTrialExcl);
if (firstBucket>Integer.MAX_VALUE||lastBucket>Integer.MAX_VALUE) {
throw new InvalidParameterException("can't fit result data into range of ints from long [" + firstBucket + ","+lastBucket+"]");
}
int base = (int) firstBucket;
int[] counts = new int[(((int) lastBucket-(int)firstBucket))+1];
for (long trial=firstTrialIncl; trial < lastTrialExcl; trial++) {
long result = f.applyAsLong(trial);
counts[(int)(result-base)]++;
}
// remove last partial, as only the front initial partial is compensated
counts= Arrays.copyOfRange(counts,0,counts.length-1);
return counts;
}
private int[][] histoFor(int[] counts) {
var minval = IntStream.of(counts).min().orElseThrow();
var maxval = IntStream.of(counts).max().orElseThrow();
int[][] histo = new int[(maxval-minval)+1][2];
for (int i = 0; i <= histo[LABEL].length; i++) {
histo[i][LABEL]=i+minval;
}
for (int count : counts) {
System.out.println(count);
histo[count-minval][FREQUENCY]++;
}
return histo;
}
private LongSummaryStatistics statsForRle(int base, int[] counts) {
LongSummaryStatistics stats = new LongSummaryStatistics();
for (int element = 0; element < counts.length; element++) {
int count = counts[element];
if (count==0) {
continue;
}
stats.accept(count);
}
return stats;
}
}