<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[Tiger Data Blog]]></title>
        <description><![CDATA[Insights, product updates, and tips from TigerData (Creators of TimescaleDB) engineers on Postgres, time series & AI. IoT, crypto, and analytics tutorials & use cases.]]></description>
        <link>https://www.tigerdata.com/blog</link>
        <image>
            <url>https://www.tigerdata.com/icon.ico</url>
            <title>Tiger Data Blog</title>
            <link>https://www.tigerdata.com/blog</link>
        </image>
        <generator>RSS for Node</generator>
        <lastBuildDate>Tue, 07 Apr 2026 09:57:39 GMT</lastBuildDate>
        <atom:link href="https://www.tigerdata.com/blog" rel="self" type="application/rss+xml"/>
        <ttl>60</ttl>
        <item>
            <title><![CDATA[Postgres for Agents]]></title>
            <description><![CDATA[Agentic Postgres: the first database built for agents. Native search, instant forks, MCP integration, new CLI, and free tier. Built for agents. Designed for developers.]]></description>
            <link>https://www.tigerdata.com/blog/postgres-for-agents</link>
            <guid isPermaLink="true">https://www.tigerdata.com/blog/postgres-for-agents</guid>
            <category><![CDATA[Announcements & Releases]]></category>
            <category><![CDATA[AI]]></category>
            <category><![CDATA[AI agents]]></category>
            <category><![CDATA[PostgreSQL]]></category>
            <dc:creator><![CDATA[Ajay Kulkarni]]></dc:creator>
            <pubDate>Tue, 21 Oct 2025 13:46:50 GMT</pubDate>
            <media:content medium="image" href="https://timescale.ghost.io/blog/content/images/2025/10/2025-ABL-Launch-Blog-Thumbnail.png">
            </media:content>
            <content:encoded><![CDATA[<h3 id="announcing-agentic-postgres-the-first-database-built-for-agents"><em>Announcing Agentic Postgres: The first database built for agents.</em></h3><h2 id="agents-are-the-new-developer">Agents are the New Developer</h2><p>80% of Claude Code <a href="https://www.reddit.com/r/singularity/comments/1khxwjh/claude_code_wrote_80_of_its_own_code_anthropic_dev/"><u>was written by AI</u></a>. More than a quarter of all new code at Google <a href="https://arstechnica.com/ai/2024/10/google-ceo-says-over-25-of-new-google-code-is-generated-by-ai/"><u>was generated by AI</u></a> <em>one year ago</em>. It’s safe to say that in the next 12 months, the majority of all new code will be written by AI.</p><p>Agents don’t behave like humans. They behave in new ways. Software development tools need to evolve. Agents need a new kind of database made for how they work.</p><p>But what would a database for agents look like?</p><p>At Tiger, we’ve obsessed over databases for the past 10 years. We’ve built high-performance systems for time series data, scaled Postgres across millions of workloads, and served thousands of customers and hundreds of thousands of developers around the world.&nbsp;</p><p>​​So when agents arrived, we felt it immediately. In our bones. This new era of computing would need its own kind of data infrastructure. One that still delivered power without complexity, but built for a new type of user.&nbsp;</p><p>How do agents behave?</p><ul><li>Agents don’t click, they call.</li><li>Agents don’t remember, they retrieve.</li><li>Agents can download expertise to become experts.</li><li>Agents can parallelize effortlessly, acting like a multi-threaded team.</li><li>Agents need a safe sandbox where they can play (or wreak havoc).</li><li>Agents can also hammer your infrastructure (and your budget) if you’re not careful.</li></ul><p>We started on this problem over a year ago. Multiple teams working in parallel, months of engineering and internal user feedback, rethinking everything from the storage layer to how agents actually reason.&nbsp;</p><p>Here’s what we built.&nbsp;</p><h2 id="introducing-agentic-postgres">Introducing Agentic Postgres</h2><p>Today we’re launching Agentic Postgres, the first database designed from the ground up for agents. It includes:</p><p><strong>The best database MCP server ever built</strong></p><p>Agentic Postgres includes our new <a href="https://www.tigerdata.com/blog/free-postgres-mcp-prompt-templates" rel="noreferrer">MCP server</a> that enables agents not just to interact with the database but also understand how to use it well. We’ve taken our 10+ years of Postgres experience and distilled it into a set of built-in master prompts. This gives agents safe, structured access to the database through high-level tools for schema design, query tuning, migrations, and more. The MCP server also performs native full-text and semantic search over the Postgres docs, so agents can instantly retrieve the right context as they think.&nbsp;</p><pre><code class="language-markdown">&gt; I want to create a personal assistant app. Please create a free service on Tiger. Then using Postgres best practices, describe the schema you would create.</code></pre><figure class="kg-card kg-video-card kg-width-regular" data-kg-thumbnail="https://storage.ghost.io/c/6b/cb/6bcb39cf-9421-4bd1-9c9d-fa7b6755ba0e/content/media/2025/10/DE84BB33-B4FE-4F6E-8398-9267033F6870-2_thumb.jpg" data-kg-custom-thumbnail="">
            <div class="kg-video-container">
                <video src="https://storage.ghost.io/c/6b/cb/6bcb39cf-9421-4bd1-9c9d-fa7b6755ba0e/content/media/2025/10/DE84BB33-B4FE-4F6E-8398-9267033F6870-2.mp4" poster="https://img.spacergif.org/v1/1920x1080/0a/spacer.png" width="1920" height="1080" loop="" autoplay="" muted="" playsinline="" preload="metadata" style="background: transparent url('https://storage.ghost.io/c/6b/cb/6bcb39cf-9421-4bd1-9c9d-fa7b6755ba0e/content/media/2025/10/DE84BB33-B4FE-4F6E-8398-9267033F6870-2_thumb.jpg') 50% 50% / cover no-repeat;"></video>
                <div class="kg-video-overlay">
                    <button class="kg-video-large-play-icon" aria-label="Play video">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"></path>
                        </svg>
                    </button>
                </div>
                <div class="kg-video-player-container kg-video-hide">
                    <div class="kg-video-player">
                        <button class="kg-video-play-icon" aria-label="Play video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"></path>
                            </svg>
                        </button>
                        <button class="kg-video-pause-icon kg-video-hide" aria-label="Pause video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"></rect>
                                <rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"></rect>
                            </svg>
                        </button>
                        <span class="kg-video-current-time">0:00</span>
                        <div class="kg-video-time">
                            /<span class="kg-video-duration">0:30</span>
                        </div>
                        <input type="range" class="kg-video-seek-slider" max="100" value="0">
                        <button class="kg-video-playback-rate" aria-label="Adjust playback speed">1×</button>
                        <button class="kg-video-unmute-icon" aria-label="Unmute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"></path>
                            </svg>
                        </button>
                        <button class="kg-video-mute-icon kg-video-hide" aria-label="Mute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"></path>
                            </svg>
                        </button>
                        <input type="range" class="kg-video-volume-slider" max="100" value="100">
                    </div>
                </div>
            </div>
            
        </figure><p><strong>Native search and retrieval</strong></p><p>Agentic Postgres comes with native full-text and semantic search built directly into the database. For semantic search, we’ve improved our existing extension pgvectorscale, for higher-throughput indexing, better recall, and lower latency at scale than pgvector.&nbsp;</p><p>For full-text search, <a href="https://www.tigerdata.com/blog/introducing-pg_textsearch-true-bm25-ranking-hybrid-retrieval-postgres" rel="noreferrer">pg_textsearch</a>, our newest Postgres extension, implements BM25 for modern ranked keyword search optimized for hybrid AI applications alongside pgvectorscale. The current preview release uses an in-memory structure for fast writes and queries. Future releases will add disk-based segments with compression and BlockMax WAND optimization, applying the same battle-tested techniques from production search engines.</p><p>Together, these extensions let agents retrieve structured data instantly without leaving Postgres.&nbsp;&nbsp;</p><pre><code class="language-markdown">&gt; Using service qilk2gqjuz, analyze user feedback with hybrid search (combining text search and semantic search). Group similar feedback by theme and show counts for each theme, using an ascii bar chart. First, look at the pg_textsearch (BM25) and pgvectorscale documentation in the Tiger docs to get the proper syntax, and then use those extensions.</code></pre><figure class="kg-card kg-video-card kg-width-regular" data-kg-thumbnail="https://storage.ghost.io/c/6b/cb/6bcb39cf-9421-4bd1-9c9d-fa7b6755ba0e/content/media/2025/10/demo-2--1-_thumb.jpg" data-kg-custom-thumbnail="">
            <div class="kg-video-container">
                <video src="https://storage.ghost.io/c/6b/cb/6bcb39cf-9421-4bd1-9c9d-fa7b6755ba0e/content/media/2025/10/demo-2--1-.mp4" poster="https://img.spacergif.org/v1/1920x1080/0a/spacer.png" width="1920" height="1080" loop="" autoplay="" muted="" playsinline="" preload="metadata" style="background: transparent url('https://storage.ghost.io/c/6b/cb/6bcb39cf-9421-4bd1-9c9d-fa7b6755ba0e/content/media/2025/10/demo-2--1-_thumb.jpg') 50% 50% / cover no-repeat;"></video>
                <div class="kg-video-overlay">
                    <button class="kg-video-large-play-icon" aria-label="Play video">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"></path>
                        </svg>
                    </button>
                </div>
                <div class="kg-video-player-container kg-video-hide">
                    <div class="kg-video-player">
                        <button class="kg-video-play-icon" aria-label="Play video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"></path>
                            </svg>
                        </button>
                        <button class="kg-video-pause-icon kg-video-hide" aria-label="Pause video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"></rect>
                                <rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"></rect>
                            </svg>
                        </button>
                        <span class="kg-video-current-time">0:00</span>
                        <div class="kg-video-time">
                            /<span class="kg-video-duration">0:50</span>
                        </div>
                        <input type="range" class="kg-video-seek-slider" max="100" value="0">
                        <button class="kg-video-playback-rate" aria-label="Adjust playback speed">1×</button>
                        <button class="kg-video-unmute-icon" aria-label="Unmute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"></path>
                            </svg>
                        </button>
                        <button class="kg-video-mute-icon kg-video-hide" aria-label="Mute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"></path>
                            </svg>
                        </button>
                        <input type="range" class="kg-video-volume-slider" max="100" value="100">
                    </div>
                </div>
            </div>
            
        </figure><p><strong>Fast, zero-copy forks</strong></p><p>At the core of Agentic Postgres is a new copy-on-write block storage layer that makes <a href="https://www.tigerdata.com/blog/fast-zero-copy-database-forks" rel="noreferrer">databases instantly forkable</a>. Every agent can spin up its own isolated environment, a full copy of production data in seconds, without duplicating data (or costs). Every fork is lightweight and efficient, so you only pay for the blocks that change. It’s perfect for experiments, benchmarks, and migrations that can run safely in parallel.&nbsp;</p><pre><code class="language-markdown">&gt; Please create a fork of gf868h9j1y using the last snapshot, and then test 3 different indexes that we should create to speed up performance, then delete the fork, and report back on your findings. Before you start run “tiger service fork --help” and “tiger service delete --help” to get the right syntax. Use MCP over psql, using the password from the local keychain.</code></pre><figure class="kg-card kg-video-card kg-width-regular" data-kg-thumbnail="https://storage.ghost.io/c/6b/cb/6bcb39cf-9421-4bd1-9c9d-fa7b6755ba0e/content/media/2025/10/demo-3--1-_thumb.jpg" data-kg-custom-thumbnail="">
            <div class="kg-video-container">
                <video src="https://storage.ghost.io/c/6b/cb/6bcb39cf-9421-4bd1-9c9d-fa7b6755ba0e/content/media/2025/10/demo-3--1-.mp4" poster="https://img.spacergif.org/v1/1920x1080/0a/spacer.png" width="1920" height="1080" loop="" autoplay="" muted="" playsinline="" preload="metadata" style="background: transparent url('https://storage.ghost.io/c/6b/cb/6bcb39cf-9421-4bd1-9c9d-fa7b6755ba0e/content/media/2025/10/demo-3--1-_thumb.jpg') 50% 50% / cover no-repeat;"></video>
                <div class="kg-video-overlay">
                    <button class="kg-video-large-play-icon" aria-label="Play video">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"></path>
                        </svg>
                    </button>
                </div>
                <div class="kg-video-player-container kg-video-hide">
                    <div class="kg-video-player">
                        <button class="kg-video-play-icon" aria-label="Play video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"></path>
                            </svg>
                        </button>
                        <button class="kg-video-pause-icon kg-video-hide" aria-label="Pause video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"></rect>
                                <rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"></rect>
                            </svg>
                        </button>
                        <span class="kg-video-current-time">0:00</span>
                        <div class="kg-video-time">
                            /<span class="kg-video-duration">1:06</span>
                        </div>
                        <input type="range" class="kg-video-seek-slider" max="100" value="0">
                        <button class="kg-video-playback-rate" aria-label="Adjust playback speed">1×</button>
                        <button class="kg-video-unmute-icon" aria-label="Unmute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"></path>
                            </svg>
                        </button>
                        <button class="kg-video-mute-icon kg-video-hide" aria-label="Mute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                                <path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"></path>
                            </svg>
                        </button>
                        <input type="range" class="kg-video-volume-slider" max="100" value="100">
                    </div>
                </div>
            </div>
            
        </figure><p><strong>New CLI and free tier</strong></p><p>We’ve also built a new CLI that makes it easy to explore, fork, and build with Agentic Postgres, and we’re launching a <a href="https://www.tigerdata.com/blog/introducing-agentic-postgres-free-plan-experiment-ai-on-postgres"><u>free tier</u></a> so every developer and every agent can get hands-on right away.</p><p>This is all launching today. You can try this today with 3 basic commands in your terminal:</p><pre><code class="language-Shell"># 3 commands to install the Tiger CLI and MCP. That's it!
$ curl -fsSL https://cli.tigerdata.com | sh
$ tiger auth login
$ tiger mcp install
</code></pre><p>Then just tell your agent to spin up a new free service using MCP, or simply call <code>tiger create service</code> from the command line to get going.</p><h2 id="powered-by-fluid-storage">Powered by Fluid Storage</h2><p>Agentic Postgres is powered by <a href="https://www.tigerdata.com/blog/fluid-storage-forkable-ephemeral-durable-infrastructure-age-of-agents" rel="noreferrer">Fluid Storage</a>, our new distributed storage layer. Fluid Storage is built on a disaggregated architecture of a horizontally scalable distributed block store using local NVMe storage, a storage proxy layer that exposes copy-on-write volumes, and a user-space storage device driver.</p><p>It’s storage that looks like a local disk to Postgres yet scales like a cloud service.</p><figure class="kg-card kg-image-card"><img src="https://timescale.ghost.io/blog/content/images/2025/10/2025-Oct-28-fluid-storage-architecture-diagram-1.png" class="kg-image" alt="" loading="lazy" width="2000" height="1043" srcset="https://timescale.ghost.io/blog/content/images/size/w600/2025/10/2025-Oct-28-fluid-storage-architecture-diagram-1.png 600w, https://timescale.ghost.io/blog/content/images/size/w1000/2025/10/2025-Oct-28-fluid-storage-architecture-diagram-1.png 1000w, https://timescale.ghost.io/blog/content/images/size/w1600/2025/10/2025-Oct-28-fluid-storage-architecture-diagram-1.png 1600w, https://timescale.ghost.io/blog/content/images/size/w2400/2025/10/2025-Oct-28-fluid-storage-architecture-diagram-1.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>As a result, Fluid Storage delivers instant forks, snapshots, and automatic scaling (up or down) without downtime or over-provisioning.  In benchmark testing, a single volume sustains throughput over 110,000 IOPS, while retaining all of Fluid’s elasticity and copy-on-write capabilities.&nbsp;</p><p>All free services on Tiger Cloud run on Fluid Storage today, so every developer can experience its performance and flexibility firsthand.&nbsp;</p><p>And this is just the start. We’ll dive deeper into each of these (<a href="https://www.tigerdata.com/blog/free-postgres-mcp-prompt-templates" rel="noreferrer">MCP</a>, <a href="https://www.tigerdata.com/blog/introducing-pg_textsearch-true-bm25-ranking-hybrid-retrieval-postgres" rel="noreferrer">pg_textsearch</a>, <a href="https://github.com/timescale/pgvectorscale" rel="noreferrer">pgvectorscale</a>, <a href="https://www.tigerdata.com/blog/fast-zero-copy-database-forks" rel="noreferrer">forkable databases</a>, <a href="https://www.tigerdata.com/blog/fluid-storage-forkable-ephemeral-durable-infrastructure-age-of-agents" rel="noreferrer">Fluid Storage</a>, <a href="https://github.com/timescale/tiger-cli" rel="noreferrer">CLI</a>, <a href="https://www.tigerdata.com/blog/introducing-agentic-postgres-free-plan-experiment-ai-on-postgres" rel="noreferrer">free tier</a>) later this week and next.&nbsp;</p><h2 id="built-for-agents-and-developers">Built for Agents and Developers</h2><p>Agentic Postgres is built for agents, so developers can work on higher level problems.&nbsp;</p><p>Building <em>with </em>and <em>for </em>agents, we’ve learned something simple: agents are not here to replace us. They’re here to elevate us.</p><p>Agents take on the mechanical, repetitive work, freeing us to focus on what matters most: architecture, design, creativity, impact. They make us faster, smarter, and enable us to do more ambitious work than we could do alone.&nbsp;&nbsp;</p><p>The myth is that AI will replace developers. The truth is that developers who build with agents will replace those who don’t.&nbsp;</p><p>Agentic Postgres is for developers who want to build <em>with</em> AI. For developers who care more about working applications than disposable demos. For developers who want AI to feel like engineering, not just experimentation. </p><p>Today’s launch is just the beginning. There are still some rough edges. We’d love your help sanding them down. But expect more to come: more launches, big and small, in the weeks, months, and years ahead.</p><p>Agents are the new developers. Agentic Postgres is their new playground.</p><p><strong>Built for Agents. Designed to Elevate Developers.</strong></p><p>So let’s build. Together.</p><p>Get started today:&nbsp;</p><pre><code class="language-markdown">$ curl -fsSL https://cli.tigerdata.com | sh</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Speed Without Sacrifice: Building the Modern PostgreSQL for the Analytical and Agentic Era]]></title>
            <description><![CDATA[Cofounders of Tiger Data (creators of TimescaleDB) Ajay Kulkarni and Mike Freedman discuss the company’s new name, showing how it reflects the company’s evolution.]]></description>
            <link>https://www.tigerdata.com/blog/timescale-becomes-tigerdata</link>
            <guid isPermaLink="true">https://www.tigerdata.com/blog/timescale-becomes-tigerdata</guid>
            <category><![CDATA[Announcements & Releases]]></category>
            <category><![CDATA[General]]></category>
            <category><![CDATA[PostgreSQL]]></category>
            <category><![CDATA[Tiger Data]]></category>
            <dc:creator><![CDATA[Ajay Kulkarni]]></dc:creator>
            <pubDate>Tue, 17 Jun 2025 14:14:45 GMT</pubDate>
            <media:content medium="image" href="https://timescale.ghost.io/blog/content/images/2025/06/tiger-data-hero-2.gif">
            </media:content>
            <content:encoded><![CDATA[<p><em>Timescale is now Tiger Data.</em></p><p><strong>TL;DR: Eight years ago, we launched Timescale to bring time-series to PostgreSQL. Our mission was simple: help developers building time-series applications.</strong></p><p><strong>Since then, we have built a thriving business: 2,000 customers, mid 8-digit ARR (&gt;100% growth year over year), $180 million raised from top investors.&nbsp;</strong></p><p><strong>We serve companies who are building real-time analytical products and large-scale AI workloads like: Mistral, HuggingFace, Nvidia, Toyota, Tesla, NASA, JP Morgan Chase, Schneider Electric, Palo Alto Networks, and Caterpillar. These are companies building developer tools, industrial dashboards, crypto exchanges, AI-native games, financial RAG applications, and more.&nbsp;</strong></p><p><strong>We’ve quietly evolved from a time-series database into the modern PostgreSQL for today’s and tomorrow’s computing, built for performance, scale, and the agentic future. So we’re changing our name: from Timescale to Tiger Data. Not to change who we are, but to reflect who we’ve become. Tiger Data is bold, fast, and built to power the next era of software.</strong></p><h2 id="developers-thought-we-were-crazy">Developers Thought We Were Crazy</h2><p>When we started 8 years ago, SQL databases were “old fashioned.” NoSQL was the future. Hadoop, MongoDB, Cassandra, InfluxDB – these were the new, exciting NoSQL databases. PostgreSQL was old and boring.</p><p>That’s when we launched Timescale: a time-series database on PostgreSQL. Developers thought we were crazy. PostgreSQL didn’t scale. PostgreSQL wasn’t fast. Time-series needed a NoSQL database. Or so they said.</p><p><em>“While I appreciate PostgreSQL every day, am I the only one who thinks this is a rather bad idea?” – top HackerNews comment on our launch (</em><a href="https://news.ycombinator.com/item?id=14035416"><em><u>link</u></em></a><em>)</em></p><p>But we believed in PostgreSQL. We knew that boring could be awesome, especially with databases. And frankly, we were selfish: PostgreSQL was the only database that we wanted to use.</p><p><strong>Today, PostgreSQL has won.</strong>&nbsp;</p><p>There are no more “SQL vs. NoSQL” debates. MongoDB, Cassandra, InfluxDB, and other NoSQL databases are seen as technical dead ends. Snowflake and Databricks are acquiring PostgreSQL companies. No one talks about Hadoop. The Lakehouse has won.&nbsp;</p><p><strong>Today, agentic workloads are here.&nbsp;</strong></p><p>Agents need a fast database. We see this in our customer base: private equity firms and hedge funds using agents to help understand market movements (“How did the market respond to Apple WWDC 2025?”); industrial equipment manufacturers building chat interfaces on top of internal manuals to help field technicians; developer platforms storing agentic interactions into history tables for greater transparency and trust; and so on.</p><h2 id="what-started-as-a-heretical-idea-is-now-a-thriving-business">What Started as a Heretical Idea Is Now a Thriving Business&nbsp;</h2><p>We have also changed. We met in September 1997, during our first week at MIT. We soon became friends, roommates, even marathon training partners (Boston 1998).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://timescale.ghost.io/blog/content/images/2025/06/founder-image.png" class="kg-image" alt="Tiger Data (creators of TimescaleDB) cofounders" loading="lazy" width="1790" height="435" srcset="https://timescale.ghost.io/blog/content/images/size/w600/2025/06/founder-image.png 600w, https://timescale.ghost.io/blog/content/images/size/w1000/2025/06/founder-image.png 1000w, https://timescale.ghost.io/blog/content/images/size/w1600/2025/06/founder-image.png 1600w, https://timescale.ghost.io/blog/content/images/2025/06/founder-image.png 1790w" sizes="(min-width: 720px) 720px"><figcaption><i><em class="italic" style="white-space: pre-wrap;">While our hairlines and drinks (turmeric shots!) have changed, our enthusiasm has not</em></i></figcaption></figure><p>That friendship became the foundation for an entrepreneurial journey that has surpassed even our boldest imaginations.&nbsp;</p><p>What started as a heretical idea is now a thriving business:</p><ul><li>2,000 customers</li><li>Mid 8-digit ARR, growing &gt;100% y/y</li><li>200 people in 25 countries</li><li>$180 million raised from top investors</li><li>60%+ gross margins</li></ul><p>Cloud usage is up 5x in the last 18 months, based on paid customers alone.</p><figure class="kg-card kg-image-card"><img src="https://timescale.ghost.io/blog/content/images/2025/06/2025-cloud-growth-dark-mode.png" class="kg-image" alt="Cloud usage is up 5x in the last 18 months" loading="lazy" width="2000" height="1252" srcset="https://timescale.ghost.io/blog/content/images/size/w600/2025/06/2025-cloud-growth-dark-mode.png 600w, https://timescale.ghost.io/blog/content/images/size/w1000/2025/06/2025-cloud-growth-dark-mode.png 1000w, https://timescale.ghost.io/blog/content/images/size/w1600/2025/06/2025-cloud-growth-dark-mode.png 1600w, https://timescale.ghost.io/blog/content/images/size/w2400/2025/06/2025-cloud-growth-dark-mode.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>And that’s only the paid side of the story. Our open-source community is 10x-20x larger. (Based on telemetry, it’s 10x, but we estimate that at least half of all deployments have telemetry turned off.)</p><p>TimescaleDB is everywhere. It’s included in PostgreSQL offerings around the world: from Azure, Alibaba, and Huawei to Supabase, DigitalOcean, and Fly.io. You’ll also find it on Databricks Neon, Snowflake Crunchy Bridge, OVHCloud, Render, Vultr, Linode, Aiven, and more.</p><figure class="kg-card kg-image-card"><img src="https://timescale.ghost.io/blog/content/images/2025/06/2025-community-cloud-dark-mode.png" class="kg-image" alt="Community 10-20x" loading="lazy" width="2000" height="1298" srcset="https://timescale.ghost.io/blog/content/images/size/w600/2025/06/2025-community-cloud-dark-mode.png 600w, https://timescale.ghost.io/blog/content/images/size/w1000/2025/06/2025-community-cloud-dark-mode.png 1000w, https://timescale.ghost.io/blog/content/images/size/w1600/2025/06/2025-community-cloud-dark-mode.png 1600w, https://timescale.ghost.io/blog/content/images/size/w2400/2025/06/2025-community-cloud-dark-mode.png 2400w" sizes="(min-width: 720px) 720px"></figure><h2 id="we-are-tiger-data">We Are Tiger Data</h2><p>Today, we are more than a time-series database. We are powering developer tools, SaaS applications, AI-native games, financial RAG applications, and more. The majority of workloads on our Cloud product aren’t time-series. Companies are running entire applications on us. CTOs would say to us, <em>“You keep talking about how you are the best time-series database, but I see you as the best PostgreSQL.”</em>&nbsp;</p><p><strong>So we are now “Tiger Data.”</strong> We offer the fastest PostgreSQL. Speed without sacrifice.</p><p>Our cloud offering is “Tiger Cloud.” Our logo stays the same: the tiger, looking forward, focused and fast. Some things do not change. Our open source time-series <a href="https://www.tigerdata.com/blog/top-8-postgresql-extensions" rel="noreferrer">PostgreSQL extension</a> remains TimescaleDB. Our vector extension is still pgvectorscale.&nbsp;</p><p><strong>Why “Tiger”? </strong>The tiger has been our mascot since 2017, symbolizing the speed, power, and precision we strive for in our database. Over time, it’s become a core part of our culture: from weekly “Tiger Time” All Hands and monthly “State of the Tiger” business reviews, to welcoming new teammates as “tiger cubs” to the “jungle.” As we reflected on our products, performance, and community, we realized: we aren’t just Timescale. We’re Tiger. Today, we’re making that official.</p><p><strong>This is not a reinvention: it’s a reflection of how we already serve our customers today.</strong></p><p><strong>Polymarket</strong> uses Tiger Data to track their price history. During the last election Polymarket ramped up 4x when trade volumes were extra high, to power over $3.7 billion dollars worth of trades.</p><p><strong>Linktree</strong> uses Tiger Data for their premium analytics product, saving $17K per month on 12.6 TB from compression savings. They also compressed their time to launch, going from 2 weeks to 2 days for shipping analytical features.</p><p><strong>Titan America</strong> uses Tiger Data’s compression and continuous aggregates to reduce costs and increase visibility into their facilities for manufacturing cement, ready-mixed concrete, and related materials.&nbsp;</p><p><strong>Lucid Motors</strong> uses Tiger Data for real-time telemetry and autonomous driving analytics.&nbsp;</p><p><strong>The Financial Times </strong>runs time-sensitive analytics and <a href="https://www.tigerdata.com/learn/vector-search-vs-semantic-search" rel="noreferrer">semantic search</a>.&nbsp;</p><h2 id="tiger-is-the-fastest-postgres-for-modern-workloads">Tiger Is the Fastest Postgres for Modern Workloads</h2><p>We are building the fastest Postgres: purpose-built for the modern operational workloads where traditional <a href="https://www.tigerdata.com/learn/understanding-oltp" rel="noreferrer">OLTP</a> databases break down.&nbsp;</p><p>Operational workloads that go far beyond simple transactions are now the norm. They require real-time, user-facing analytics over massive <a href="https://www.tigerdata.com/learn/how-to-handle-high-cardinality-data-in-postgresql" rel="noreferrer">high-cardinality datasets</a>, from event streams to time-series to user-level behavioral data.&nbsp;</p><p>As the frontier moves further with agentic applications, the demands grow even more. These systems don’t just read and write: they observe, decide, and act. These AI applications require fast vector search across embeddings, and fast branching of data environments for experimentation and context-sensitive responses.</p><p><strong>Tiger is not a fork. It’s not a wrapper. It is PostgreSQL, extended with innovations in the database engine and cloud infrastructure to deliver speed without sacrifice.</strong></p><p><strong>How are we so fast?</strong> Because of consistent, disciplined engineering efforts to serve customer needs over several years. Here is a non-exhaustive list:&nbsp;</p><ul><li>Hypertables (2017)</li><li>Native <a href="https://www.tigerdata.com/blog/building-columnar-compression-in-a-row-oriented-database" rel="noreferrer">columnar</a> compression (2019)</li><li>Real-time materialized views for faster queries (2020)</li><li>Decoupled compute and storage (2021)</li><li>Tiered Storage to S3 Parquet (2022)</li><li>Vectorized query execution for fast analytics (2023)</li><li>Hybrid row-columnar store for faster queries on recent and historical data (2024)</li><li>Faster vector workloads on PostgreSQL via pgvectorscale (2024)</li><li>300x faster mutations (updates, upserts, deletes) to compressed columnar data (2024)</li><li>2500x faster distinct queries, 6x faster point queries on high-cardinality columns (2025)</li><li>Rapid horizontal scaling with load-balanced read replica sets (2025)</li><li>Enhanced high-performance storage up to 64 TB and 32,000 IOPS (2025)</li></ul><p><strong>Tiger brings together the familiarity and reliability of Postgres with the performance of purpose-built engines.</strong></p><p>We built the fastest PostgreSQL. Not because we wanted to, but because our customers wanted us to.</p><h2 id="building-the-modern-postgresql-for-the-analytical-and-agentic-era">Building the Modern PostgreSQL for the Analytical and Agentic Era</h2><p>PostgreSQL has won. The Lakehouse has won. Every application is becoming an analytical application.&nbsp;Agents are here, in production, and need to be fast. The future is hybrid, developers and agents, with better latency and throughput needs.</p><p>In this era, modern applications must:</p><ul><li>Handle terabytes and petabytes of data</li><li>Support real-time analytics</li><li>Integrate Gen AI features</li><li>Serve both humans and software agents, across dev, test, and production lifecycles</li><li>Meet sub-second latency and high concurrency expectations</li><li>Scale across operational databases and cost-efficient lakehouses</li><li>Maintain transactional integrity</li><li>Deliver all of this reliably and cost-effectively, because data volumes grow much faster than budgets</li></ul><p>Our history to date, our time in this market, our lived experience watching all these changes unfold in real-time screams to us one thing: <strong>modern applications need a new kind of operational database.</strong>&nbsp;</p><p>One built for transactional, analytical, and agentic workloads. One that also acts as the operational serving layer for the Lakehouse. One built on Postgres.</p><p>That is what we are building.</p><p>And wow do we have some fun product announcements queued up for the upcoming weeks and months. A more agentic PostgreSQL. A deeper integration with the Lakehouse via Iceberg. A new compressed insert approach yielding 10 million rows per second. A new type of disaggregated storage architecture with zero-copy instant forks and replicas that we are deploying in our cloud for greater performance, as a replacement for EBS. And more.</p><p>We can’t wait to show it all to you. But first we had to clearly communicate who we are. <strong>We are Tiger Data.&nbsp;</strong></p><h2 id="come-join-us">Come Join Us</h2><p><strong>Tiger is the Fastest PostgreSQL. </strong>The operational database platform built for transactional, analytical, and agentic workloads. The only database platform that provides Speed without Sacrifice.</p><p>This is not a rebrand, but a recommitment to our customers, to our developers, and to our core mission.</p><p>If this mission resonates with you, come join us. Give us product feedback. Spread the word. Wear the swag. Join the team.&nbsp;</p><p>It’s Go Time. 🐯🚀</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Install psql on Mac, Ubuntu, Debian, Windows]]></title>
            <description><![CDATA[Instructions on how to get psql setup on a variety of operating systems.
]]></description>
            <link>https://www.tigerdata.com/blog/how-to-install-psql-on-mac-ubuntu-debian-windows</link>
            <guid isPermaLink="true">https://www.tigerdata.com/blog/how-to-install-psql-on-mac-ubuntu-debian-windows</guid>
            <category><![CDATA[Tutorials]]></category>
            <category><![CDATA[PostgreSQL]]></category>
            <dc:creator><![CDATA[Ajay Kulkarni]]></dc:creator>
            <pubDate>Thu, 22 Aug 2019 19:21:00 GMT</pubDate>
            <media:content medium="image" href="https://timescale.ghost.io/blog/content/images/2023/10/Screenshot-2023-10-11-at-7.08.25-PM.png">
            </media:content>
            <content:encoded><![CDATA[<p><code>psql</code> is a terminal-based front-end to <a href="https://www.timescale.com/learn/postgres-basics" rel="noreferrer">PostgreSQL</a>. It provides an interactive command-line interface to the PostgreSQL (or TimescaleDB) database. With psql, <a href="https://www.timescale.com/blog/connecting-to-postgres-with-psql-and-pg_service-conf" rel="noreferrer">you can type in queries interactively, issue them to PostgreSQL</a>, and see the query results. It also provides several meta-commands and various shell-like features to facilitate writing scripts and automating a wide variety of tasks.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/iPFLdGnJcDw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" title="What is psql?"></iframe></figure><p>For instance, users can create, modify, and delete database objects such as tables, views, or users using psql. They can also execute SQL commands, manage data within the database, and even customize the psql environment.</p><p>Since psql is the standard command line interface for interacting with a PostgreSQL or TimescaleDB instance, this article will show you how to install it on a variety of operating systems.</p><div class="kg-card kg-callout-card kg-callout-card-purple"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text">Need a refresher on Postgres and <a href="https://www.timescale.com/blog/10-psql-commands-that-will-make-your-life-easier" rel="noreferrer">psql commands</a>? Check out our <a href="https://www.timescale.com/learn/postgres-cheat-sheet" rel="noreferrer">Postgres Cheat Sheet</a>.</div></div><h2 id="before-you-start">Before You Start</h2><p>Before you start, you should confirm that you don’t already have psql installed. In fact, if you’ve ever installed Postgres or TimescaleDB before, you likely already have psql installed.</p><p>To verify it, open the command line program and type the following:</p><pre><code class="language-shell">psql --version</code></pre><p>If you haven’t installed psql, here is how to install it on a variety of operating systems.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><a href="https://www.timescale.com/blog/connecting-to-postgres-with-psql-and-pg_service-conf/"><u>Forgot how to connect to your Postgres services? You can use the .pg_service.conf file, or if you're a TimescaleDB user, just click one button.</u></a></div></div><h2 id="install-on-macos-using-homebrew">Install on MacOS Using Homebrew</h2><ol><li><strong>First, install the </strong><a href="https://brew.sh/"><strong>Brew Package Manager</strong></a><strong>.</strong> Homebrew, often called "brew," is a free and open-source software package management system that simplifies software installation on Apple's macOS operating system and Linux. </li></ol><p>Homebrew downloads, unpacks, and installs the software and its dependencies in your system. It also keeps track of what it has installed, allowing you to easily uninstall software or upgrade to newer versions when they become available.</p><ol start="2"><li><strong>Second, update brew.</strong> From your command line, run the following commands:</li></ol><pre><code class="language-shell">brew doctor
brew update
brew install libpq</code></pre><p>Next, you will have to symlink psql. Symlinking, or creating a symbolic link, is a process in Unix or Unix-like operating systems (like MacOS) that creates a link to a file or a directory that resides elsewhere in the system. Symbolic links are similar to shortcuts in Windows.</p><ol start="3"><li><strong>The final step is to symlink psql (and other libpq tools) into</strong> <code>/usr/local/bin</code>:</li></ol><pre><code class="language-shell">brew link --force libpq</code></pre><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">⭐</div><div class="kg-callout-text">Related documentation: <a href="https://docs.timescale.com/self-hosted/latest/install/installation-macos/"><u>Installing self-hosted TimescaleDB on macOS</u></a>.</div></div><h2 id="install-on-ubuntu-23102204-and-debian-12">Install on Ubuntu 23.10,22.04 and Debian 12</h2><p>Install on Ubuntu and Debian using the <code>apt</code> package manager:</p><pre><code class="language-shell">sudo apt update
sudo apt install postgresql-client</code></pre><p>Note: This only installs the psql client and not the PostgreSQL database. </p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Editor's Note</strong></b>: For information about how to connect psql to your TimescaleDB database, please refer to <a href="https://docs.timescale.com/use-timescale/latest/integrations/query-admin/about-psql/#connecting-to-your-database-with-psql"><u>Tiger Data documentation on connecting to your database with psql</u></a>.</div></div><h2 id="install-windows-10">Install Windows 10</h2><p>We recommend using <a href="https://www.postgresql.org/download/windows/">the installer from PostgreSQL.org</a>.</p><h2 id="last-step-connect-to-your-postgresql-server">Last Step: Connect to Your PostgreSQL Server</h2><p>Let’s confirm that psql is installed:</p><pre><code class="language-shell">psql --version</code></pre><p>Now, in order to connect to your PostgreSQL server, we’ll need the following connection params:</p><ul><li>Hostname</li><li>Port</li><li>Username</li><li>Password</li><li>Database name</li></ul><p>There are two ways to use these params.</p><p>Option 1:</p><pre><code class="language-shell">psql -h [HOSTNAME] -p [PORT] -U [USERNAME] -W -d [DATABASENAME]</code></pre><p>Once you run that command, the prompt will ask you for your password. (Which we specified with the <code>-W</code> flag.)</p><p>Option 2:</p><pre><code class="language-shell">psql postgres://[USERNAME]:[PASSWORD]@[HOSTNAME]:[PORT]/[DATABASENAME]?sslmode=require</code></pre><p>If you are using the Tiger Data dashboard, this is how they look in the <a href="https://console.cloud.timescale.com/signup" rel="noreferrer">Tiger Data UI</a>:</p><figure class="kg-card kg-image-card"><img src="https://timescale.ghost.io/blog/content/images/2023/10/Screenshot-2023-10-11-at-6.38.03-PM.png" class="kg-image" alt="" loading="lazy" width="1346" height="860" srcset="https://timescale.ghost.io/blog/content/images/size/w600/2023/10/Screenshot-2023-10-11-at-6.38.03-PM.png 600w, https://timescale.ghost.io/blog/content/images/size/w1000/2023/10/Screenshot-2023-10-11-at-6.38.03-PM.png 1000w, https://timescale.ghost.io/blog/content/images/2023/10/Screenshot-2023-10-11-at-6.38.03-PM.png 1346w" sizes="(min-width: 720px) 720px"></figure><p>Congrats! Now you have connected via psql.</p><h2 id="related-resources-psql-postgres">Related resources: psql + Postgres</h2><ul><li><a href="https://docs.timescale.com/use-timescale/latest/integrations/psql/"><u>Connect with psql</u></a></li><li><a href="https://www.timescale.com/learn/postgresql-window-functions"><u>Data Processing With PostgreSQL Window Functions</u></a></li><li><a href="https://docs.timescale.com/use-timescale/latest/extensions/"><u>PostgresSQL extensions</u></a></li><li><a href="https://docs.timescale.com/self-hosted/latest/configuration/postgres-config/"><u>Manual PostgresSQL configuration and tuning</u></a></li><li><a href="https://docs.timescale.com/use-timescale/latest/integrations/postgresql/"><u>Integrate PostgreSQL with Tiger Cloud</u></a></li><li><a href="https://www.timescale.com/learn/guide-to-postgresql-scaling"><u>A Guide to Scaling PostgreSQL</u></a></li></ul><h2 id="about-timescaledb-and-postgresql-queries">About TimescaleDB and PostgreSQL Queries </h2><p>Now that you've installed psql, you are ready to start easily interacting with your PostgreSQL—or TimescaleDB—database. </p><p>TimescaleDB is built on PostgreSQL and expands its capabilities for time series, analytics, and events. It <a href="https://timescale.ghost.io/blog/postgresql-timescaledb-1000x-faster-queries-90-data-compression-and-much-more/" rel="noreferrer">will make your queries faster</a> via <a href="https://www.timescale.com" rel="noreferrer">automatic partitioning</a>, query planner enhancements, improved materialized views, <a href="https://timescale.ghost.io/blog/building-columnar-compression-in-a-row-oriented-database/" rel="noreferrer">columnar compression</a>, and much more. Plus, <a href="https://timescale.ghost.io/blog/scaling-postgresql-for-cheap-introducing-tiered-storage-in-timescale/" rel="noreferrer">you can scale PostgreSQL for cheap with our multi-tiered storage backend</a>.</p><p>If you're running your PostgreSQL database on your own hardware, <a href="https://docs.timescale.com/self-hosted/latest/install/" rel="noreferrer">you can simply add the TimescaleDB extension</a>. If you prefer to try TimescaleDB in AWS, <a href="https://console.cloud.timescale.com/signup" rel="noreferrer">create a free account on our platform today</a>. It only takes a couple of seconds, no credit card required! </p><h2 id="faqs-how-to-install-psql-on-mac-ubuntu-debian-windows">FAQs: How to Install psql on Mac, Ubuntu, Debian, Windows</h2><p><strong>Q: How do I check if psql is already installed on my system? </strong>A: You can verify if <code>psql</code> is already installed by opening your command line program and typing <code>psql --version</code>. If you've previously installed PostgreSQL or TimescaleDB, you likely already have <code>psql</code> installed, as it comes bundled with these installations.</p><p><strong>Q: How do I install psql on macOS? </strong>A: To install psql on macOS, first install the Brew Package Manager, then run <code>brew doctor</code>, <code>brew update</code>, and <code>brew install libpq</code> commands in sequence. Finally, symlink psql into <code>/usr/local/bin</code> by running <code>brew link --force libpq</code> to make the <code>psql</code> command available system-wide.</p><p><strong>Q: How do I install psql on Ubuntu or Debian? </strong>A: Installing psql on Ubuntu or Debian is straightforward using the apt package manager. Simply run <code>sudo apt update</code> followed by <code>sudo apt install postgresql-client</code> in your terminal. This installs only the psql client without the full PostgreSQL database server.</p><p><strong>Q: What's the recommended way to install psql on Windows 10? </strong>A: For Windows 10, the recommended approach is to use the official installer from PostgreSQL.org. This installer provides a wizard-based setup that guides you through the installation process and includes psql along with other PostgreSQL tools.</p><p><strong>Q: How do I connect to a PostgreSQL server using psql? </strong>A: To connect to a PostgreSQL server, you can use either the command format <code>psql -h [HOSTNAME] -p [PORT] -U [USERNAME] -W -d [DATABASENAME]</code>a  (which will prompt for password) or the connection string format <code>psql postgres://[USERNAME]:[PASSWORD]@[HOSTNAME]:[PORT]/[DATABASENAME]?sslmode=require</code>. Both methods require your server's hostname, port, username, password, and database name.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[When Boring is Awesome: Building a Scalable Time-Series Database on PostgreSQL]]></title>
            <description><![CDATA[Today we are announcing the beta release of TimescaleDB, a new open-source time-series database optimized for fast ingest and complex queries, now available on GitHub under the Apache 2 license.]]></description>
            <link>https://www.tigerdata.com/blog/when-boring-is-awesome-building-a-scalable-time-series-database-on-postgresql-2900ea453ee2</link>
            <guid isPermaLink="true">https://www.tigerdata.com/blog/when-boring-is-awesome-building-a-scalable-time-series-database-on-postgresql-2900ea453ee2</guid>
            <category><![CDATA[PostgreSQL]]></category>
            <category><![CDATA[Announcements & Releases]]></category>
            <dc:creator><![CDATA[Ajay Kulkarni]]></dc:creator>
            <pubDate>Tue, 04 Apr 2017 14:00:00 GMT</pubDate>
            <media:content medium="image" href="https://timescale.ghost.io/blog/content/images/2018/12/gif5.gif">
            </media:content>
            <content:encoded><![CDATA[<p><em>(Update: Follow the discussion on this </em><a href="https://news.ycombinator.com/item?id=14035416" rel="noopener"><em>Hacker News thread</em></a><em>.)</em></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://timescale.ghost.io/blog/content/images/2018/12/image-87.png" class="kg-image" alt="" loading="lazy" width="406" height="374"><figcaption><b><strong style="white-space: pre-wrap;">TimescaleDB: SQL made scalable for time-series data.</strong></b></figcaption></figure><p><strong>Today we are announcing the beta release of </strong><a href="http://www.timescale.com/" rel="noopener"><strong>TimescaleDB</strong></a>, a new open-source time-series database optimized for fast ingest and complex queries, <a href="https://github.com/timescale/timescaledb" rel="noopener">now available on GitHub</a> under the Apache 2 license.</p><p>TimescaleDB is engineered up from PostgreSQL (packaged as an extension) and yet scales out horizontally, which means it supports normal SQL and all of the features you expect from a relational database: JOINs, secondary indexes, complex predicates and aggregates, window functions, CTEs, etc.</p><p>Key benefits:</p><ul><li><strong>Looks, feels, speaks just like PostgreSQL, </strong>including a normal SQL (not “SQL-like”) query interface. Existing clients, connectors, and BI tools (e.g., Tableau) work out of the box. Designed to be stupidly easy to use. If you know SQL (and especially PostgreSQL), you already know TimescaleDB.</li><li><strong>Scalable.</strong> Everyone “knows” that RDBMSs like <a href="https://www.timescale.com/learn/building-a-scalable-database">PostgreSQL do not scale well</a>. We solve that problem, introducing horizontal scale-out, automatic space/time partitioning, and distributed query optimizations for time-series data. Our latest benchmarks consistently show a greater than 15x improvement on inserts versus vanilla PostgreSQL on a dataset of 250 million rows, achieving constant insert throughput as the database grows (135K writes per second per node, where each write is a row of 10 metrics). We expect the insert rate to stay in that ballpark as the dataset grows further.</li><li><strong>Reliable.</strong> Even though TimescaleDB is new, we benefit from 20+ years of work in PostgreSQL reliability and tooling. We stand on the shoulders of giants.</li></ul><p>(For more technical details, please refer to our <a href="https://docs.timescale.com/v1.1/main">documentation</a>.)</p><p>In this age of new and shiny open source data projects, something as old as PostgreSQL can seem boring. <strong>But sometimes boring is awesome, especially when it’s your database.</strong> TimescaleDB is designed to just work, not wake you up at 3am.</p><p>If you have any kind of time-series data, and you like SQL/PostgreSQL, then please give TimescaleDB a whirl and let us know how it goes. We appreciate any feedback (and we’re pretty friendly folks).</p><p>You can install TimescaleDB via Homebrew, Docker, or from source. <a href="https://github.com/timescale/timescaledb" rel="noopener">More information on GitHub</a>.</p><p>But isn’t there already a glut of time-series databases? Did we really have to build yet another one?</p><p>Yes.</p><p>(Read on, padawan…)</p><h2 id="why-build-yet-another-time-series-database">Why build yet another time-series database?</h2><p>Seems like <a href="https://en.wikipedia.org/wiki/Time_series_database" rel="noopener">time-series databases</a> (i.e., databases optimized for data captured over time, for example, sensor data, financial data, DevOps data, etc.) are in vogue these days.</p><p>There have been a number of blog posts on the subject over the past few years (including these gems by <a href="https://www.xaprb.com/blog/2014/06/08/time-series-database-requirements/" rel="noopener">Baron Schwartz (2014)</a> and <a href="http://jmoiron.net/blog/thoughts-on-timeseries-databases/" rel="noopener">Jason Moiron (2015)</a>, and a plethora of new open-source time-series databases, each with their own trade-offs. </p><p>We can’t read minds, but we imagine that the developers behind each of those projects built their own time-series database because traditional RDBMS (e.g., PostgreSQL, MySQL) didn’t scale for their needs.</p><p>That was the same problem we faced a year ago, when we needed a database to store sensor data for the IoT platform we were building at the time. We loved PostgreSQL, but “knew” that it inherently wouldn’t scale for our needs.</p><p>We tested some of the options in the list above, and saw that they all scaled pretty well, but sacrificed query power in exchange, and failed to support a number of key SQL capabilities.</p><p>So we had a choice: scalability or query power. That made us sad. We needed both.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://timescale.ghost.io/blog/content/images/2018/12/yoda.gif" class="kg-image" alt="" loading="lazy" width="450" height="192"><figcaption><b><strong style="white-space: pre-wrap;">Scale AND query power Yoda needs.</strong></b></figcaption></figure><p>In particular, we needed:</p><ul><li><strong>Scalable ingest, reads, and deletes.</strong> Some of our customers collected data at kilohertz, so we knew our dataset would get large very quickly. We needed inserts, reads, and deletes (in particular, bulk deletes) to perform well, even at scale. (On the other hand, we didn’t need to optimize for updates, as we expected to perform those rarely.)</li><li><strong>Performant complex queries.</strong> We needed support for complex predicates (e.g., readings where temperature and cpu are above certain thresholds), non-time based aggregates over a fixed window (e.g., total number of errors by firmware version), multiple aggregates (e.g., group by device type and time), flexible ordering (e.g., top 10 devices by usage), JOINs (e.g., join sensor data with device metadata), etc., at latencies that satisfied our APIs and dashboards.</li><li><strong>Multiple data type options. </strong>We wanted floats, integers, strings, booleans, arrays, JSON blobs. Support for geospatial data types as a bonus.</li><li><strong>An easy to use query language.</strong> We didn’t want to have to learn a completely new query language and build brand new connectors. We wanted something like SQL. Actually, we wanted SQL.</li><li><strong>A reliable and easy to operate database. </strong>We didn’t want to get woken up at 3am because our database crashed (and we sure didn’t want to lose data). We wanted something boring, something that would just work, not something fancy and experimental. We also wanted something with rich tooling and an abundant software ecosystem, so we wouldn’t always be waiting for (or needing to write) the next connector or integration for other systems we were using.</li></ul><p>When we looked at this list, we realized that we needed something like PostgreSQL. In fact,<strong> if we could only solve the </strong><a href="https://www.tigerdata.com/learn/guide-to-postgresql-scaling" rel="noreferrer"><strong>PostgreSQL scalability</strong></a><strong> problem, we’d have the perfect time-series database: scalable, easy to use, and reliable.</strong> (PostgreSQL even has support for geospatial data types and queries, via <a href="http://postgis.net/" rel="noopener">PostGIS</a>.)</p><p>Could this be possible? Being <a href="http://www.timescale.com/about">a group of computer science PhDs and academics</a> (including one tenured Professor), we decided to find out for ourselves, and determined that the nature of time-series workloads lend themselves to a new database architecture that could offer both scale and SQL.</p><p>And then we built it.</p><p>And then we benchmarked it, and found that our database outperformed PostgreSQL by more than 15x on inserts on large datasets. In particular, we found that as the dataset size grows, the insert rate for PostgreSQL drops off dramatically, while our insert rate remains high:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://timescale.ghost.io/blog/content/images/2018/12/image-74.png" class="kg-image" alt="" loading="lazy" width="1333" height="750" srcset="https://timescale.ghost.io/blog/content/images/size/w600/2018/12/image-74.png 600w, https://timescale.ghost.io/blog/content/images/size/w1000/2018/12/image-74.png 1000w, https://timescale.ghost.io/blog/content/images/2018/12/image-74.png 1333w" sizes="(min-width: 720px) 720px"><figcaption><b><strong style="white-space: pre-wrap;">Insert rate comparison: TimescaleDB vs vanilla PostgreSQL</strong></b></figcaption></figure><p>Note:</p><ul><li>Each row contains 10 metrics and a timestamp.</li><li>Each batch contains 10,000 rows written at once across any partitions (similar to what one would expect in production, e.g., when consuming data off of a message bus like Kafka).</li><li>This is on an Azure standard DS4 v2 machine (8 cores), SSD (premium LRS storage).</li></ul><p>Finally, scale and SQL. This made us happy.</p><p>(So why build yet another time-series database? Because we had to.)</p><h2 id="really-scale-and-normal-sql-demo">Really, scale and normal SQL? (Demo)</h2><figure class="kg-card kg-image-card"><img src="https://timescale.ghost.io/blog/content/images/2018/12/sw.gif" class="kg-image" alt="" loading="lazy" width="500" height="243"></figure><p>Get ready for the world’s most boring database demo, because TimescaleDB’s query language is just normal SQL:</p><figure class="kg-card kg-image-card"><img src="https://timescale.ghost.io/blog/content/images/2018/12/image-75.png" class="kg-image" alt="" loading="lazy" width="778" height="729" srcset="https://timescale.ghost.io/blog/content/images/size/w600/2018/12/image-75.png 600w, https://timescale.ghost.io/blog/content/images/2018/12/image-75.png 778w" sizes="(min-width: 720px) 720px"></figure><p>This obviously is just a sample. For the full documentation on what kinds of queries we support, <a href="https://www.postgresql.org/docs/" rel="noopener">please refer here</a>.</p><h2 id="what%E2%80%99s-going-on-behind-the-scenes">What’s going on behind the scenes</h2><p>“So what’s the big deal? This looks just like normal PostgreSQL…”</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://timescale.ghost.io/blog/content/images/2018/12/gif.gif" class="kg-image" alt="" loading="lazy" width="500" height="285"><figcaption><b><strong style="white-space: pre-wrap;">Some are not easily impressed.&nbsp;</strong></b></figcaption></figure><p>There are actually 5 key things happening behind the scenes:</p><ol><li><strong>Automatic space-time partitioning:</strong> We take advantage of two major attributes of time-series workloads: that all data has a primary key and a timestamp, and that inserts are largely append-only (writes to most recent interval, infrequent updates). This allows us to automatically partition incoming data for a given table by time and space (primary key) into 2D “chunks” (stored internally as PostgreSQL tables), and create new chunks on demand as necessary, all done transparently to the user.</li><li><strong>Right-sized data chunks: </strong>Our engine ensures that chunks are right sized and time-interval aligned to ensure that the multiple B-trees for a table’s indexes can reside in memory during inserts to avoid thrashing. This also allows us to delete data by dropping entire chunks, rather than needing to delete individual rows, thus avoiding expensive vacuuming operations.</li><li><strong>Distributed query optimizations:</strong> When queries arrive, we avoid querying extraneous chunks via constraint exclusion analysis, and then employ different techniques to parallelize the query across the remaining chunks efficiently.</li><li><strong>The “hypertable” abstraction:</strong> All this complexity is hidden from the user behind an abstraction we call a “hypertable”, which provides the illusion of a single table across all space and time (despite the 2D chunking). Inserts are written to the <a href="https://www.tigerdata.com/blog/database-indexes-in-postgresql-and-timescale-cloud-your-questions-answered" rel="noreferrer">hypertable</a>; the database automatically partitions the data, writes to the appropriate chunk, and creates new chunks if necessary. Similarly, queries are run against the hypertable; the database automatically runs the distributed query optimizations, determines the minimally necessary set of chunks to query, pushes down any further optimizations to these chunks, and returns the appropriate data.</li><li><strong>Tight integration with PostgreSQL:</strong> All this occurs tightly integrated with the PostgreSQL query parser, which allows the database to support the entire spectrum of PostgreSQL commands and then run its own query planner and optimizations.</li></ol><p>For example, each of the queries above is running against a <em>hypertable</em>, allowing the database to hide the complexity of the system from the user.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://timescale.ghost.io/blog/content/images/2018/12/image-76.png" class="kg-image" alt="" loading="lazy" width="600" height="344" srcset="https://timescale.ghost.io/blog/content/images/2018/12/image-76.png 600w"><figcaption><b><strong style="white-space: pre-wrap;">A hypertable provides the illusion of a single continuous table across all space and time chunks.</strong></b></figcaption></figure><p>But this just scratches the surface. For more on our technical architecture, take a look at <a href="https://docs.timescale.com">our documentation</a>. </p><h2 id="why-this-matters-time-series-data-is-sprouting-up-everywhere">Why this matters: time-series data is sprouting up everywhere</h2><p>“Fine”, you might say, “you guys built something that only works for your weirdo IoT backend.”</p><figure class="kg-card kg-image-card"><img src="https://timescale.ghost.io/blog/content/images/2018/12/gif2.gif" class="kg-image" alt="" loading="lazy" width="400" height="225"></figure><p>That’s what we thought too. But as we made the rounds talking about our IoT platform, people would respond: “We’re building our own IoT platform, so we can’t use yours. But, tell us more about this time-series database you built?”</p><p>Then, they’d add, “You know, forget IoT, we have a lot of time-series data in general. Could your database help there too?”</p><p>And strangely, we heard the same thing from our friends in other industries: they had a growing amount of time-series data and needed something better than existing databases.</p><p>Eureka. Our time-series database was solving a bigger problem.</p><p>We realized that time-series data, which used to be this niche thing within finance and DevOps, was sprouting up everywhere. <strong>We realized that fundamental shifts in computing — more sources of data, fatter pipes, cheaper storage — were creating new currents of time-series data streams. </strong>And that analyzing these new datasets across time was powerful, enabling us to monitor the present, understand historical trends, troubleshoot the past, predict the future.</p><p>We also noticed that even traditional time-series data applications were becoming more complex: e.g., in DevOps, needing to correlate application performance across microservices; in finance, needing to monitor payment transactions and other customer interaction data in real-time.</p><p><strong>There was also another trend at work: the resurgence of SQL.</strong> Recent posts like these from <a href="https://www.percona.com/blog/2017/03/27/whats-next-for-sql-databases/" rel="noopener">Percona (March 27, 2017)</a>, <a href="https://www.xaprb.com/blog/defining-moments-in-database-history/" rel="noopener">Baron Schwartz (March 19, 2017)</a>, and <a href="https://stateofprogress.blog/choose-sql-d017cfc08870" rel="noopener">Paris Kasidiaris (March 13, 2017)</a> capture the sentiment well. The pendulum is swinging back towards boring SQL. In fact, “NoSQL” databases seem to be rebranding themselves to mean “not only SQL”, rather than outright rejecting SQL.</p><p>We realized that our database, which sat at the intersection of the “rise of time-series data” and the “resurgence of SQL”, might actually be useful to other people.</p><p>That’s why we decided last fall to change directions and go all in on the database. After several months of heads-down work, <a href="https://github.com/timescale/timescaledb" rel="noopener">we just open sourced it last month under the Apache 2 license</a>.</p><h2 id="when-you-might-want-to-consider-alternatives">When you might want to consider alternatives</h2><p>That said, TimescaleDB can’t solve everyone’s problems. In particular, there are 3 time-series scenarios where there may be better alternatives:</p><ul><li><strong>Simple read requirements:</strong> When most of your query patterns are simple in nature (e.g., simple key-value lookups, or rollup of a single metric over time).</li><li><strong>Low available storage:</strong> When resource constraints place storage at a premium, and heavy compression is required, even at the cost of query power and ease of use. (Although this is an area of active development, and we expect TimescaleDB to improve.)</li><li><strong>Sparse and/or unstructured data:</strong> When your time-series data is especially sparse and/or generally unstructured. (But even if your data is partially structured, TimescaleDB includes a JSONB field type for the unstructured part(s). This allows you to maintain indexes on the structured parts of your data combined with the flexibility of unstructured storage.)</li></ul><h2 id="summary">Summary</h2><p>TimescaleDB is the first open source time-series database that offers normal SQL at scale. It acts like a relational database yet scales linearly for time-series data.</p><p>TimescaleDB is in active development by a team of PhDs based in New York City, Stockholm, and Los Angeles. A single-node version is currently available for download. A clustered version is in the works.</p><p>We scratched our own itch, and hope it now scratches yours. If it does, or you think it might and want to learn more, we’d love to hear from you at <a href="mailto:hello@timescale.com" rel="nofollow">hello@timescale.com</a>.</p><p><em>For more:</em></p><ul><li><a href="https://github.com/timescale/timescaledb" rel="noopener"><em>Installation instructions on GitHub</em></a></li><li><a href="http://docs.timescale.com"><em>High-level technical overview</em></a></li><li><a href="https://docs.timescale.com/v1.1/main"><em>Our Documentation </em></a></li></ul><figure class="kg-card kg-image-card"><img src="https://timescale.ghost.io/blog/content/images/2018/12/gif3.gif" class="kg-image" alt="" loading="lazy" width="500" height="272"></figure>]]></content:encoded>
        </item>
    </channel>
</rss>