<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>RollupDB.com</title>
    <link>https://rollupdb.com/</link>
    <description>Recent content on RollupDB.com</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 17 Oct 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://rollupdb.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>How RollupDB Was Tested With Killed Processes and an Outside Reference</title>
      <link>https://rollupdb.com/how-rollupdb-was-tested-with-killed-processes-and-an-outside-reference/</link>
      <pubDate>Sat, 17 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://rollupdb.com/how-rollupdb-was-tested-with-killed-processes-and-an-outside-reference/</guid>
      <description>&lt;p&gt;A database that throws data away on purpose had better be right about what it keeps. So RollupDB&amp;rsquo;s tests ask two questions over and over. Is the answer the same one you&amp;rsquo;d get from every raw reading? And does a write that was acknowledged survive the process dying, while one that wasn&amp;rsquo;t leaves no trace?&lt;/p&gt;&#xA;&lt;p&gt;All the numbers below come from one recorded run on a 4-CPU Linux machine in GitHub&amp;rsquo;s runners, Go 1.27.2. The script that made them and its full output are in the repository&amp;rsquo;s &lt;a href=&#34;https://github.com/rollupdb/rollupdb/tree/main/test/results&#34;&gt;test/results folder&lt;/a&gt;, so anyone can run it again and compare.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RollupDB Adds SQL, Automatic Rollups and Streams That Can Change</title>
      <link>https://rollupdb.com/rollupdb-adds-sql-automatic-rollups-and-streams-that-can-change/</link>
      <pubDate>Sat, 17 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://rollupdb.com/rollupdb-adds-sql-automatic-rollups-and-streams-that-can-change/</guid>
      <description>&lt;p&gt;RollupDB 0.4.0 is out. Since the first release three things have been added, one per version: rollups that run on their own, stream definitions you can change after the fact, and a read-only SQL interface over the retained buckets. Each one came out of the same question: what does someone need on day thirty that they didn&amp;rsquo;t need on day one?&lt;/p&gt;&#xA;&lt;p&gt;The short answer is that people forget to run &lt;code&gt;advance&lt;/code&gt;, they find out their retention was wrong, and they want to ask questions the JSON query wasn&amp;rsquo;t shaped for. So now &lt;code&gt;rollupdb serve&lt;/code&gt; rolls up every stream once a minute, a stream can take a new version with different retention or an added sketch, and every stream is a SQL view.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RollupDB Launches as an Open Source Database for Years of Statistics</title>
      <link>https://rollupdb.com/rollupdb-launches-as-an-open-source-database-for-years-of-statistics/</link>
      <pubDate>Sat, 17 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://rollupdb.com/rollupdb-launches-as-an-open-source-database-for-years-of-statistics/</guid>
      <description>&lt;p&gt;RollupDB 0.1 is out, under the Apache License 2.0. It&amp;rsquo;s an aggregate database in one file: you tell it which statistics matter, and it keeps those for years while it lets the raw events go. Seconds fold into minutes, minutes into hours, hours into days. A query a year later still gets the right count, the right extremes and a percentile with a stated error.&lt;/p&gt;&#xA;&lt;p&gt;The pitch is simple, and the numbers are what make it worth trying. In the recorded test, five years of readings from two services, 2.8 million of them, took 207 MB as raw JSON lines. The RollupDB file holding all of it was 15.4 MB, with seconds for the last day, minutes for the last day, hours for the last week and a bucket per day going back the full five years.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What an Aggregate Database Keeps When the Raw Events Are Gone</title>
      <link>https://rollupdb.com/what-an-aggregate-database-keeps-when-the-raw-events-are-gone/</link>
      <pubDate>Sat, 17 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://rollupdb.com/what-an-aggregate-database-keeps-when-the-raw-events-are-gone/</guid>
      <description>&lt;p&gt;Most databases keep what you put in. An aggregate database doesn&amp;rsquo;t. It keeps what you&amp;rsquo;ll ask about later, and only that. You tell it up front: for this stream of latencies, I want the count, the sum, the min and max, the mean, the variance and the 99th percentile, grouped by service. Then it&amp;rsquo;s free to throw the individual readings away, because it already has what those readings were going to be used for.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why the Project Is Called RollupDB</title>
      <link>https://rollupdb.com/why-the-project-is-called-rollupdb/</link>
      <pubDate>Sat, 17 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://rollupdb.com/why-the-project-is-called-rollupdb/</guid>
      <description>&lt;p&gt;A rollup is what monitoring people have called this for decades. You take sixty one-second readings and roll them up into one minute. Then sixty minutes into an hour, and so on, until a year of data fits on a page. Spreadsheets do it with subtotals, OLAP cubes do it along their dimensions, and every metrics system that ever ran out of disk has done it to its old data.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>https://rollupdb.com/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://rollupdb.com/about/</guid>
      <description>&lt;p&gt;RollupDB is an aggregate database in one file. You feed it numeric readings, say which statistics have to survive, and it keeps those statistics in time buckets that get coarser as the data ages. Seconds become minutes, minutes become hours, hours become days. The raw events are never stored, so the file stays small however long the history gets.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s open source under the Apache License 2.0 and written in Go. There&amp;rsquo;s one binary with no server to run and no C compiler needed, plus a Go library and a small HTTP service on the same engine. You can ask it questions as JSON queries or in read-only SQL, and it rolls data up on a schedule while the service runs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Contact</title>
      <link>https://rollupdb.com/contact/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://rollupdb.com/contact/</guid>
      <description>&lt;p&gt;The project would like to hear from:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Developers&lt;/strong&gt; trying RollupDB on their own telemetry, with what worked and what didn&amp;rsquo;t.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Anyone&lt;/strong&gt; with a workload the measurements should cover: more groups, longer history, a different mix of tiers.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Anyone&lt;/strong&gt; with a question about the engine, the numbers on this site or how they were measured.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Write to &lt;strong&gt;&lt;a href=&#34;mailto:info@rollupdb.com&#34;&gt;info@rollupdb.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;If you&amp;rsquo;re writing about a workload, it helps to say how many readings arrive per second, how many separate series (services, devices, endpoints) there are, how long the history should go back, and which statistics you need at each age.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Download RollupDB</title>
      <link>https://rollupdb.com/download/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://rollupdb.com/download/</guid>
      <description>&lt;p&gt;Each archive holds the &lt;code&gt;rollupdb&lt;/code&gt; command with its license files and the README. The links always point to the latest release.&lt;/p&gt;&#xA;&lt;div style=&#34;overflow-x:auto&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;System&lt;/th&gt;&#xA;          &lt;th&gt;Download&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Linux, x86-64&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/rollupdb/rollupdb/releases/latest/download/rollupdb_linux_amd64.tar.gz&#34;&gt;rollupdb_linux_amd64.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Linux, ARM64&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/rollupdb/rollupdb/releases/latest/download/rollupdb_linux_arm64.tar.gz&#34;&gt;rollupdb_linux_arm64.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;macOS, Apple silicon&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/rollupdb/rollupdb/releases/latest/download/rollupdb_darwin_arm64.tar.gz&#34;&gt;rollupdb_darwin_arm64.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;macOS, Intel&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/rollupdb/rollupdb/releases/latest/download/rollupdb_darwin_amd64.tar.gz&#34;&gt;rollupdb_darwin_amd64.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Windows, x86-64&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/rollupdb/rollupdb/releases/latest/download/rollupdb_windows_amd64.zip&#34;&gt;rollupdb_windows_amd64.zip&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;em&gt;Checksums are in &lt;a href=&#34;https://github.com/rollupdb/rollupdb/releases/latest/download/SHA256SUMS&#34;&gt;SHA256SUMS&lt;/a&gt;. Every release is listed on &lt;a href=&#34;https://github.com/rollupdb/rollupdb/releases&#34;&gt;GitHub&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;install&#34;&gt;Install&lt;/h2&gt;&#xA;&lt;p&gt;On Linux or macOS:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar -xzf rollupdb_linux_amd64.tar.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo mv rollupdb /usr/local/bin/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rollupdb version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On Windows, unzip the archive and run &lt;code&gt;rollupdb.exe version&lt;/code&gt; from the folder.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quick Start</title>
      <link>https://rollupdb.com/quick-start/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://rollupdb.com/quick-start/</guid>
      <description>&lt;p&gt;Five minutes, one binary. You&amp;rsquo;ll create a database, define a stream of API latencies, load ten thousand readings, ask for their percentiles, roll them up, take a snapshot and ask again in SQL. Every command below was run against the released binary before this page went up.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-get-the-binary&#34;&gt;1. Get the Binary&lt;/h2&gt;&#xA;&lt;p&gt;Download the archive for your system from the &lt;a href=&#34;https://rollupdb.com/download/&#34;&gt;download page&lt;/a&gt;, unpack it and check it runs:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rollupdb version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;2-say-what-to-keep&#34;&gt;2. Say What to Keep&lt;/h2&gt;&#xA;&lt;p&gt;A stream definition is the contract: which dimensions to group by, which statistics to keep, and how long each resolution lives. Save this as &lt;code&gt;latency.json&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reference</title>
      <link>https://rollupdb.com/reference/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://rollupdb.com/reference/</guid>
      <description>&lt;p&gt;A short map of RollupDB 0.4.1. The full contracts, with every limit and edge case, are in the &lt;a href=&#34;https://github.com/rollupdb/rollupdb/tree/main/docs&#34;&gt;docs folder&lt;/a&gt; of the code repository.&lt;/p&gt;&#xA;&lt;h2 id=&#34;commands&#34;&gt;Commands&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Command&lt;/th&gt;&#xA;          &lt;th&gt;What it does&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;rollupdb version&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Prints the version&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;rollupdb init FILE&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Creates a new database; never overwrites&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;rollupdb create-stream FILE DEFINITION.json&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Defines a stream&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;rollupdb update-stream FILE DEFINITION.json&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Adds the stream&amp;rsquo;s next version&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;rollupdb stream FILE NAME&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Shows a stream&amp;rsquo;s definition&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;rollupdb ingest FILE BATCH.json&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Ingests one batch of up to 10,000 readings&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;rollupdb ingest-ndjson FILE STREAM INPUT&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Ingests one reading per line from a file or &lt;code&gt;-&lt;/code&gt; for stdin, in committed batches (&lt;code&gt;--batch-size&lt;/code&gt;, default 1000)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;rollupdb query FILE QUERY.json&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Answers a query&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;rollupdb sql FILE STATEMENT&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Runs one read-only SQL statement, or &lt;code&gt;-&lt;/code&gt; to read it from stdin&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;rollupdb stats FILE NAME&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Counters, groups, buckets, coverage and tier frontiers&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;rollupdb advance FILE [NAME]&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Rolls up buckets that are old enough and expires what&amp;rsquo;s past retention, for one stream or all of them&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;rollupdb snapshot FILE DEST&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Writes a consistent copy to a new file&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;rollupdb inspect FILE&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Format version, file ID and stream count&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;rollupdb migrate FILE&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Upgrades a file from an older format; back it up first&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;rollupdb serve FILE [--listen 127.0.0.1:7070] [--advance-every 1m]&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Runs the local HTTP service and rolls up every stream on a schedule&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;stream-definitions&#34;&gt;Stream Definitions&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Field&lt;/th&gt;&#xA;          &lt;th&gt;Meaning&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;name&lt;/code&gt;, &lt;code&gt;version&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;The stream&amp;rsquo;s name, and version 1 when it&amp;rsquo;s created; &lt;code&gt;update-stream&lt;/code&gt; adds 2, then 3&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;effective_at&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Readings before this time are refused&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;dimensions&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Up to 16 names to group by, such as &lt;code&gt;service&lt;/code&gt; or &lt;code&gt;device&lt;/code&gt;; every reading must carry all of them&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;statistics&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Any of &lt;code&gt;count&lt;/code&gt;, &lt;code&gt;sum&lt;/code&gt;, &lt;code&gt;min&lt;/code&gt;, &lt;code&gt;max&lt;/code&gt;, &lt;code&gt;avg&lt;/code&gt;, &lt;code&gt;variance_population&lt;/code&gt;, &lt;code&gt;variance_sample&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;max_groups&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Cap on distinct dimension combinations; readings for a new one past the cap are refused and counted&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;tiers&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;From finest to coarsest: &lt;code&gt;width_seconds&lt;/code&gt;, &lt;code&gt;retain_seconds&lt;/code&gt; (0 is forever) and &lt;code&gt;grace_seconds&lt;/code&gt; for late readings&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;sketch&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Optional percentiles: &lt;code&gt;{&amp;quot;algorithm&amp;quot;: &amp;quot;kll_float64&amp;quot;, &amp;quot;encoding_version&amp;quot;: 1, &amp;quot;k&amp;quot;: 200, &amp;quot;m&amp;quot;: 8}&lt;/code&gt;, with &lt;code&gt;k&lt;/code&gt; from 64 to 4096&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;changing-a-stream&#34;&gt;Changing a Stream&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;update-stream&lt;/code&gt; adds the stream&amp;rsquo;s next version (&lt;code&gt;&amp;quot;version&amp;quot;: 2&lt;/code&gt;, then 3). A new version may change each tier&amp;rsquo;s &lt;code&gt;retain_seconds&lt;/code&gt; and &lt;code&gt;grace_seconds&lt;/code&gt;, &lt;code&gt;max_groups&lt;/code&gt; and &lt;code&gt;statistics&lt;/code&gt;, and it may add a &lt;code&gt;sketch&lt;/code&gt; to a stream that has none. The name, &lt;code&gt;effective_at&lt;/code&gt;, dimensions and tier widths stay, since the retained buckets were built with them; anything else is refused.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
