Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/skade

.nornir/assets/parquet_stream_reuse.svg

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1180 460" font-family="'DejaVu Sans', 'Segoe UI', sans-serif">
  <defs>
    <linearGradient id="board" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#0b1c2e"/>
      <stop offset="1" stop-color="#06111d"/>
    </linearGradient>
    <linearGradient id="chip" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#14384f"/>
      <stop offset="1" stop-color="#0e2a3e"/>
    </linearGradient>
    <linearGradient id="rail" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#173d57"/>
      <stop offset="1" stop-color="#0c2438"/>
    </linearGradient>
    <marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
      <path d="M0 0 L10 5 L0 10 z" fill="#7fd0c8"/>
    </marker>
  </defs>

  <rect x="0" y="0" width="1180" height="460" fill="url(#board)"/>
  <g stroke="#143a52" stroke-width="1">
    <line x1="0" y1="60" x2="1180" y2="60"/>
    <line x1="0" y1="410" x2="1180" y2="410"/>
  </g>
  <g fill="#16415c">
    <circle cx="40" cy="30" r="2"/><circle cx="1140" cy="30" r="2"/>
    <circle cx="40" cy="440" r="2"/><circle cx="1140" cy="440" r="2"/>
  </g>

  <text x="40" y="42" fill="#8fd3ea" font-size="20" font-weight="700">skade — stream OSM/GeoParquet windows (reuse, don't re-parse)</text>

  <!-- source file -->
  <g>
    <rect x="40" y="120" width="180" height="150" rx="10" fill="url(#rail)" stroke="#2b6a8c"/>
    <text x="130" y="150" fill="#cfeafc" font-size="16" font-weight="700" text-anchor="middle">nodes.parquet</text>
    <text x="130" y="176" fill="#8bb6cf" font-size="12" text-anchor="middle">OSM / GeoParquet</text>
    <g fill="#0e2a3e" stroke="#2b6a8c">
      <rect x="60" y="192" width="140" height="14" rx="3"/>
      <rect x="60" y="212" width="140" height="14" rx="3"/>
      <rect x="60" y="232" width="140" height="14" rx="3"/>
    </g>
    <text x="130" y="204" fill="#7fd0c8" font-size="10" text-anchor="middle">row group 0</text>
    <text x="130" y="224" fill="#7fd0c8" font-size="10" text-anchor="middle">row group 1</text>
    <text x="130" y="244" fill="#7fd0c8" font-size="10" text-anchor="middle">row group …</text>
  </g>

  <!-- ParquetWindows chip -->
  <g>
    <rect x="330" y="105" width="260" height="180" rx="12" fill="url(#chip)" stroke="#3aa0b8" stroke-width="2"/>
    <text x="460" y="132" fill="#d7f2ff" font-size="17" font-weight="700" text-anchor="middle">skade::ParquetWindows</text>
    <text x="460" y="156" fill="#9fd8e6" font-size="12" text-anchor="middle">open() — layout, no data read</text>
    <line x1="352" y1="170" x2="568" y2="170" stroke="#245a72"/>
    <text x="460" y="192" fill="#bfe6f2" font-size="12" text-anchor="middle">next() → one window</text>
    <text x="460" y="214" fill="#7fd0c8" font-size="11" text-anchor="middle">all-core decode (gatling forkjoin)</text>
    <text x="460" y="236" fill="#7fd0c8" font-size="11" text-anchor="middle">no private thread pool</text>
    <text x="460" y="266" fill="#8bb6cf" font-size="11" text-anchor="middle">peak memory = ONE window</text>
  </g>

  <!-- gatling workers -->
  <g fill="url(#rail)" stroke="#2b6a8c">
    <rect x="470" y="300" width="34" height="80" rx="4"/>
    <rect x="512" y="300" width="34" height="80" rx="4"/>
    <rect x="554" y="300" width="34" height="80" rx="4"/>
    <rect x="428" y="300" width="34" height="80" rx="4"/>
  </g>
  <text x="460" y="398" fill="#6fae86" font-size="11" text-anchor="middle">worker 0..threads</text>

  <!-- consumer -->
  <g>
    <rect x="710" y="120" width="200" height="150" rx="10" fill="url(#chip)" stroke="#3aa0b8" stroke-width="2"/>
    <text x="810" y="150" fill="#d7f2ff" font-size="16" font-weight="700" text-anchor="middle">korp MapLayer</text>
    <text x="810" y="176" fill="#9fd8e6" font-size="12" text-anchor="middle">features(view)</text>
    <text x="810" y="204" fill="#bfe6f2" font-size="11" text-anchor="middle">window → DrawFeatures</text>
    <text x="810" y="224" fill="#bfe6f2" font-size="11" text-anchor="middle">for the viewport</text>
    <text x="810" y="252" fill="#8bb6cf" font-size="11" text-anchor="middle">binds — never re-parses</text>
  </g>

  <!-- renderer -->
  <g>
    <rect x="990" y="150" width="150" height="90" rx="10" fill="url(#rail)" stroke="#2b6a8c"/>
    <text x="1065" y="185" fill="#cfeafc" font-size="15" font-weight="700" text-anchor="middle">shared</text>
    <text x="1065" y="208" fill="#cfeafc" font-size="15" font-weight="700" text-anchor="middle">renderer</text>
    <text x="1065" y="228" fill="#8bb6cf" font-size="10" text-anchor="middle">source-agnostic</text>
  </g>

  <!-- wires -->
  <g stroke="#7fd0c8" stroke-width="2.5" fill="none" marker-end="url(#arrow)">
    <path d="M224 195 L326 195"/>
    <path d="M594 195 L706 195"/>
    <path d="M914 195 L986 195"/>
  </g>
  <text x="640" y="186" fill="#9fd8e6" font-size="11" text-anchor="middle">RecordBatch window</text>
</svg>