<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Scale-Kv on Mini Fish</title>
    <link>https://blog.minifish.org/tags/scale-kv/</link>
    <description>Recent content in Scale-Kv on Mini Fish</description>
    <image>
      <title>Mini Fish</title>
      <url>https://blog.minifish.org/android-chrome-512x512.png</url>
      <link>https://blog.minifish.org/android-chrome-512x512.png</link>
    </image>
    <generator>Hugo -- 0.161.1</generator>
    <language>en-US</language>
    <copyright>Mini Fish 2014-present. Licensed under CC-BY-NC</copyright>
    <lastBuildDate>Sat, 30 May 2026 09:00:00 +0800</lastBuildDate>
    <atom:link href="https://blog.minifish.org/tags/scale-kv/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>scale-kv: A Storage Experiment About Complexity</title>
      <link>https://blog.minifish.org/posts/scale-kv-storage-experiment/</link>
      <pubDate>Sat, 30 May 2026 09:00:00 +0800</pubDate>
      <guid>https://blog.minifish.org/posts/scale-kv-storage-experiment/</guid>
      <description>A project note on scale-kv, a Rust experiment with transactional KV storage, page B&#43;trees, quorum commit paths, Cap&amp;#39;n Proto RPC, and storage-system design notes.</description>
      <content:encoded><![CDATA[<p><code>scale-kv</code> is a Rust storage experiment. It contains transactional KV code, page structures, quorum client paths, Cap&rsquo;n Proto RPC, performance notes, and a growing set of documents about capacity, observability, fault drills, and roadmap choices.</p>
<p>The most useful lesson from the project is not a feature. It is how quickly storage complexity expands.</p>
<h2 id="what-it-explores">What it explores</h2>
<p>The codebase touches several storage-system ideas:</p>
<ul>
<li>transactional KV</li>
<li>page-based B+tree structures</li>
<li>secondary indexes</li>
<li>WAL encoding and replay</li>
<li>embedded compute paths</li>
<li>quorum commit experiments</li>
<li>RPC schema generation</li>
<li>redb and sled comparisons</li>
<li>performance baselines</li>
</ul>
<p>Each of these is reasonable on its own. Together, they create a system that needs strong boundaries to stay understandable.</p>
<h2 id="why-this-is-hard">Why this is hard</h2>
<p>Storage systems are full of cross-cutting constraints:</p>
<ul>
<li>write durability affects read visibility</li>
<li>page layout affects compaction and recovery</li>
<li>transactions affect indexing</li>
<li>indexes affect write amplification</li>
<li>replication affects latency and failure handling</li>
<li>observability affects whether any benchmark can be trusted</li>
</ul>
<p>It is easy to add one more subsystem and hard to know when the conceptual model has become too large.</p>
<h2 id="documents-as-part-of-the-project">Documents as part of the project</h2>
<p>One good part of <code>scale-kv</code> is that it includes design notes: API drafts, capacity models, fault drills, observability notes, and performance snapshots.</p>
<p>For this kind of experiment, documents are not decoration. They are the only way to keep track of what the system is supposed to prove.</p>
<h2 id="what-i-learned">What I learned</h2>
<p>The project reinforced a simple rule: decide what a storage experiment is testing before building the next layer.</p>
<p>If the goal is page structure, do not also invent distributed commit. If the goal is quorum behavior, use the simplest storage backend that can support the test. If the goal is API design, avoid mixing it with WAL recovery work.</p>
<p>That does not mean the project failed. It means the project taught the lesson it was supposed to teach: complexity is the main resource being spent.</p>
<h2 id="current-status">Current status</h2>
<p><code>scale-kv</code> is private and experimental. It may remain a lab rather than a product, which is a valid outcome for a systems project.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
