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

nordisk/nornir

.nornir/assets/warehouse-write-path.svg

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1180 300" font-family="'DejaVu Sans', 'Segoe UI', sans-serif">
  <defs>
    <linearGradient id="ww-board" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#0b1c2e"/><stop offset="1" stop-color="#06111d"/>
    </linearGradient>
    <linearGradient id="ww-chip" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#14384f"/><stop offset="1" stop-color="#0e2a3e"/>
    </linearGradient>
    <linearGradient id="ww-hot" x1="0" y1="0" x2="1" y2="0">
      <stop offset="0" stop-color="#3a1220"/><stop offset="1" stop-color="#2a0d18"/>
    </linearGradient>
    <marker id="ww-arr" 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="#6fd3f5"/>
    </marker>
  </defs>
  <rect x="0" y="0" width="1180" height="300" rx="10" fill="url(#ww-board)"/>
  <text x="24" y="38" fill="#cfe9f7" font-size="19" font-weight="700">funnel_events — the warehouse WRITE path (one append = one snapshot)</text>

  <!-- chips -->
  <g font-size="14" fill="#dff2fb" text-anchor="middle">
    <rect x="24"  y="90" width="150" height="72" rx="9" fill="url(#ww-chip)" stroke="#2f6f92"/>
    <text x="99"  y="122">Event</text><text x="99" y="142" fill="#8fbdd6" font-size="11">IdeaSubmitted…</text>

    <rect x="214" y="90" width="180" height="72" rx="9" fill="url(#ww-chip)" stroke="#2f6f92"/>
    <text x="304" y="118">row-encode</text><text x="304" y="138" fill="#8fbdd6" font-size="11">1-row RecordBatch</text><text x="304" y="153" fill="#8fbdd6" font-size="11">per-append builders</text>

    <rect x="434" y="90" width="170" height="72" rx="9" fill="url(#ww-chip)" stroke="#2f6f92"/>
    <text x="519" y="118">ensure_schema</text><text x="519" y="138" fill="#8fbdd6" font-size="11">every call</text>

    <rect x="644" y="90" width="150" height="72" rx="9" fill="url(#ww-chip)" stroke="#2f6f92"/>
    <text x="719" y="122">append_batch</text><text x="719" y="142" fill="#8fbdd6" font-size="11">TableIdent alloc</text>

    <!-- bottleneck -->
    <rect x="834" y="82" width="200" height="88" rx="9" fill="url(#ww-hot)" stroke="#d8607e" stroke-width="2"/>
    <text x="934" y="112" fill="#ffd9e2" font-weight="700">Iceberg snapshot</text>
    <text x="934" y="132" fill="#ffd9e2">commit (fsync)</text>
    <text x="934" y="154" fill="#ff9db4" font-size="12" font-weight="700">≈24.5 ms / append  🔥</text>

    <rect x="1054" y="90" width="102" height="72" rx="9" fill="url(#ww-chip)" stroke="#2f6f92"/>
    <text x="1105" y="122">table</text><text x="1105" y="142" fill="#8fbdd6" font-size="11">+1 snapshot</text>
  </g>

  <!-- arrows -->
  <g stroke="#6fd3f5" stroke-width="2" fill="none" marker-end="url(#ww-arr)">
    <path d="M174 126 H214"/><path d="M394 126 H434"/><path d="M604 126 H644"/><path d="M794 126 H834"/><path d="M1034 126 H1054"/>
  </g>

  <!-- the win -->
  <rect x="214" y="210" width="820" height="58" rx="9" fill="#0e2a1e" stroke="#3f9d6a"/>
  <text x="234" y="238" fill="#bff0d2" font-size="14" font-weight="700">THE WIN → batch N events into ONE append</text>
  <text x="234" y="257" fill="#8fd6ac" font-size="12">one snapshot + builders sized once → amortizes the ~24.5 ms fsync across the batch (light run: 41 ev/s serial)</text>
  <text x="24" y="238" fill="#8fbdd6" font-size="12">serial</text>
  <path d="M120 233 H200" stroke="#6fd3f5" stroke-width="2" fill="none" marker-end="url(#ww-arr)"/>
  <text x="24" y="255" fill="#8fbdd6" font-size="11">today</text>
</svg>