<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Pages on RollupDB.com</title>
    <link>https://rollupdb.com/pages/</link>
    <description>Recent content in Pages on RollupDB.com</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <atom:link href="https://rollupdb.com/pages/index.xml" rel="self" type="application/rss+xml" />
    <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>
