<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://evren.so/obsessiondb</id>
    <title>ObsessionDB Blog</title>
    <updated>2026-04-15T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>ObsessionDB</name>
        <uri>https://evren.so/obsessiondb</uri>
    </author>
    <link rel="alternate" href="https://evren.so/obsessiondb/blog"/>
    <link rel="self" href="https://evren.so/obsessiondb/atom.xml"/>
    <subtitle>Data, infra, benchmarks, and tooling for ClickHouse performance and managed database infrastructure.</subtitle>
    <logo>https://evren.so/obsessiondb/favicon-light-v2.svg</logo>
    <icon>https://evren.so/obsessiondb/favicon-light-v2.svg</icon>
    <rights>All rights reserved 2026, ObsessionDB</rights>
    <entry>
        <title type="html"><![CDATA[ClickHouse® Query Optimization: What Makes It Fast and What Kills It]]></title>
        <id>https://evren.so/obsessiondb/blog/clickhouse-query-optimization-what-makes-it-fast</id>
        <link href="https://evren.so/obsessiondb/blog/clickhouse-query-optimization-what-makes-it-fast"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/clickhouse-query-optimization-what-makes-it-fast.png" type="image/png"/>
        <updated>2026-04-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The complete ClickHouse query optimization guide: sorting keys, PREWHERE, data skipping indexes, FINAL evolution, JOIN algorithms, and anti-patterns.]]></summary>
        <author>
            <name>Alvaro Garcia</name>
        </author>
        <category label="Data"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ClickHouse® Projections: The Complete Guide]]></title>
        <id>https://evren.so/obsessiondb/blog/clickhouse-projections-complete-guide</id>
        <link href="https://evren.so/obsessiondb/blog/clickhouse-projections-complete-guide"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/clickhouse-projections-complete-guide.png" type="image/png"/>
        <updated>2026-04-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[ClickHouse projections explained: internal storage, query routing, three projection types, and a decision framework for when to use them vs materialized views.]]></summary>
        <author>
            <name>Alvaro Garcia</name>
        </author>
        <category label="Data"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[You Don't Need a Separate Pipeline Between Your Warehouse and Your Real-time APIs]]></title>
        <id>https://evren.so/obsessiondb/blog/eliminate-pipeline-warehouse-realtime-api</id>
        <link href="https://evren.so/obsessiondb/blog/eliminate-pipeline-warehouse-realtime-api"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/eliminate-pipeline-warehouse-realtime-api.png" type="image/png"/>
        <updated>2026-04-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The pipeline between your warehouse and your API is the most expensive infrastructure you own. Not because of what it costs to run, but because of what it costs your team to build, maintain, and debug.]]></summary>
        <author>
            <name>Rafael Aviles</name>
        </author>
        <category label="Infra"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How we detect outliers in real time using ClickHouse®]]></title>
        <id>https://evren.so/obsessiondb/blog/real-time-outlier-detection-clickhouse</id>
        <link href="https://evren.so/obsessiondb/blog/real-time-outlier-detection-clickhouse"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/real-time-outlier-detection-clickhouse.png" type="image/png"/>
        <updated>2026-03-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Building a pipeline that flags outliers across 15M daily events in 21ms using chained materialized views and rolling quantiles in ClickHouse.]]></summary>
        <author>
            <name>Jose Enrique Barco</name>
        </author>
        <category label="Data"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[CollapsingMergeTree: Current State from Event Streams]]></title>
        <id>https://evren.so/obsessiondb/blog/collapsingmergetree-current-state-event-streams</id>
        <link href="https://evren.so/obsessiondb/blog/collapsingmergetree-current-state-event-streams"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/collapsingmergetree-current-state-event-streams.png" type="image/png"/>
        <updated>2026-03-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Instead of asking ClickHouse which row is the latest during merges, you define it during ingestion by cancelling the old value and inserting a new row. The fundamental tradeoff: ingestion complexity for query simplicity.]]></summary>
        <author>
            <name>Alvaro Garcia</name>
        </author>
        <category label="Data"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How we feed OHLC candles to TradingView from ClickHouse® DB]]></title>
        <id>https://evren.so/obsessiondb/blog/ohlc-candles-tradingview-clickhouse</id>
        <link href="https://evren.so/obsessiondb/blog/ohlc-candles-tradingview-clickhouse"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/ohlc-candles-tradingview-clickhouse.png" type="image/png"/>
        <updated>2026-03-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Building cascading AggregatingMergeTree tables for real-time OHLC candles served through TradingView's UDF API, with live streaming via Durable Objects.]]></summary>
        <author>
            <name>Alvaro Garcia</name>
        </author>
        <category label="Data"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[AI Coding Agent Analytics: What 1,573 Sessions Taught Us]]></title>
        <id>https://evren.so/obsessiondb/blog/ai-coding-agent-analytics-1573-sessions</id>
        <link href="https://evren.so/obsessiondb/blog/ai-coding-agent-analytics-1573-sessions"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/ai-coding-agent-analytics-1573-sessions.png" type="image/png"/>
        <updated>2026-03-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We ran Claude Code across 6 people and 37 projects. After 1,573 sessions, we found patterns nobody was measuring. Here's why we built rudel.ai.]]></summary>
        <author>
            <name>Alvaro Garcia</name>
        </author>
        <category label="Tooling"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ClickHouse® AggregatingMergeTree: Rollups That Scale]]></title>
        <id>https://evren.so/obsessiondb/blog/aggregatingmergetree-rollups-that-scale</id>
        <link href="https://evren.so/obsessiondb/blog/aggregatingmergetree-rollups-that-scale"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/aggregatingmergetree-rollups-that-scale.png" type="image/png"/>
        <updated>2026-03-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The complete AggregatingMergeTree reference: combinator patterns, cascading rollups, SimpleAggregateFunction vs AggregateFunction, and production gotchas.]]></summary>
        <author>
            <name>Alvaro Garcia</name>
        </author>
        <category label="Data"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Current State with ClickHouse® ReplacingMergeTree]]></title>
        <id>https://evren.so/obsessiondb/blog/replacingmergetree-current-state</id>
        <link href="https://evren.so/obsessiondb/blog/replacingmergetree-current-state"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/replacingmergetree-current-state.png" type="image/png"/>
        <updated>2026-03-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How we use ReplacingMergeTree with is_deleted to serve current state from 25MB batches — schema design, delta queries, and the full pipeline from blockchain events to trader screens.]]></summary>
        <author>
            <name>Alvaro Garcia</name>
        </author>
        <category label="Data"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ClickHouse® ReplacingMergeTree: Deduplication Done Right]]></title>
        <id>https://evren.so/obsessiondb/blog/replacingmergetree-deduplication-done-right</id>
        <link href="https://evren.so/obsessiondb/blog/replacingmergetree-deduplication-done-right"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/replacingmergetree-deduplication-done-right.png" type="image/png"/>
        <updated>2026-03-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[ReplacingMergeTree deduplicates at merge time, not insert time. Production patterns, FINAL performance, and the Postgres traps nobody warns you about.]]></summary>
        <author>
            <name>Alvaro Garcia</name>
        </author>
        <category label="Data"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Data Modelling in ClickHouse®: Engines, Tables, and Materialisations]]></title>
        <id>https://evren.so/obsessiondb/blog/data-modelling-clickhouse-engines-tables-materialisations</id>
        <link href="https://evren.so/obsessiondb/blog/data-modelling-clickhouse-engines-tables-materialisations"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/data-modelling-clickhouse-engines-tables-materialisations.png" type="image/png"/>
        <updated>2026-02-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How to choose between MergeTree engines, design ORDER BY and PARTITION BY for performance, and use materialised views for pre-aggregation. A practical guide from running ClickHouse at petabyte scale.]]></summary>
        <author>
            <name>Alvaro Garcia</name>
        </author>
        <category label="Data"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[How We Built a Stateless Distributed Cache for ClickHouse]]></title>
        <id>https://evren.so/obsessiondb/blog/stateless-distributed-cache-clickhouse</id>
        <link href="https://evren.so/obsessiondb/blog/stateless-distributed-cache-clickhouse"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/stateless-distributed-cache-clickhouse.png" type="image/png"/>
        <updated>2026-02-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In a stateless distributed database, the network is the bottleneck — not CPU or memory. We built a distributed cache mesh where every ClickHouse node contributes its local NVMe to a shared cache layer.]]></summary>
        <author>
            <name>Marc Leuthardt</name>
        </author>
        <category label="Infra"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ObsessionDB vs. ClickHouse Cloud in the 10B Row Benchmark]]></title>
        <id>https://evren.so/obsessiondb/blog/obsessiondb-vs-clickhouse-cloud-10b-benchmark</id>
        <link href="https://evren.so/obsessiondb/blog/obsessiondb-vs-clickhouse-cloud-10b-benchmark"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/obsessiondb-vs-clickhouse-cloud-10b-benchmark.png" type="image/png"/>
        <updated>2026-02-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[ObsessionDB runs 35% faster than ClickHouse Cloud in the 10B row benchmark with up to 9x better performance per dollar. Not an apples-to-apples comparison - and we'll show you exactly why that's okay.]]></summary>
        <author>
            <name>Marc Leuthardt</name>
        </author>
        <category label="Benchmarks"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[AI Skills for ClickHouse: Optimization Patterns proven at 100B+ rows]]></title>
        <id>https://evren.so/obsessiondb/blog/ai-skills-clickhouse-optimization-patterns</id>
        <link href="https://evren.so/obsessiondb/blog/ai-skills-clickhouse-optimization-patterns"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/ai-skills-clickhouse-optimization-patterns.png" type="image/png"/>
        <updated>2026-02-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[AI coding assistants write excellent SQL — and queries that destroy production. We extracted battle-tested patterns into open source skills.]]></summary>
        <author>
            <name>Alvaro Garcia</name>
        </author>
        <category label="Tooling"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Scale SigNoz on ObsessionDB and ClickHouse® Cloud: No Sharding Required]]></title>
        <id>https://evren.so/obsessiondb/blog/scale-signoz-on-obsessiondb</id>
        <link href="https://evren.so/obsessiondb/blog/scale-signoz-on-obsessiondb"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/scale-signoz-on-obsessiondb.png" type="image/png"/>
        <updated>2026-02-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How we made SigNoz work with separated storage and compute with a single docker compose up — no sharding, no distributed tables.]]></summary>
        <author>
            <name>Marc Leuthardt</name>
        </author>
        <category label="Tooling"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ClickHouse® Materialized Views: Patterns and Pitfalls]]></title>
        <id>https://evren.so/obsessiondb/blog/clickhouse-materialized-views-patterns-pitfalls</id>
        <link href="https://evren.so/obsessiondb/blog/clickhouse-materialized-views-patterns-pitfalls"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/clickhouse-materialized-views-patterns-pitfalls.png" type="image/png"/>
        <updated>2026-02-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[ClickHouse materialized views are INSERT triggers, not query caches. Production patterns, write amplification traps, and lessons from running them at scale.]]></summary>
        <author>
            <name>Alvaro Garcia</name>
        </author>
        <category label="Data"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ClickHouse® Database: What It Is, How It Works, and When It Falls Apart]]></title>
        <id>https://evren.so/obsessiondb/blog/clickhouse-what-it-is-how-it-works-when-it-falls-apart</id>
        <link href="https://evren.so/obsessiondb/blog/clickhouse-what-it-is-how-it-works-when-it-falls-apart"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/clickhouse-what-it-is-how-it-works-when-it-falls-apart.png" type="image/png"/>
        <updated>2026-02-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A practitioner’s deep dive into ClickHouse architecture: columnar storage, MergeTree internals, sparse indexes, and when NOT to use it. Real numbers from production.]]></summary>
        <author>
            <name>Alvaro Garcia</name>
        </author>
        <category label="Data"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Hard Truth About Self-Hosting ClickHouse® at Scale]]></title>
        <id>https://evren.so/obsessiondb/blog/hard-truth-self-hosting-clickhouse</id>
        <link href="https://evren.so/obsessiondb/blog/hard-truth-self-hosting-clickhouse"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/hard-truth-self-hosting-clickhouse.png" type="image/png"/>
        <updated>2026-01-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[ReplicatedMergeTree broke my brain. The architectural problem no tooling could fix, and how we made the complexity disappear.]]></summary>
        <author>
            <name>Alvaro Garcia</name>
        </author>
        <category label="Infra"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Cutting Our ClickHouse Bill in Half: The Story Behind ObsessionDB]]></title>
        <id>https://evren.so/obsessiondb/blog/announcement</id>
        <link href="https://evren.so/obsessiondb/blog/announcement"/>
        <link rel="enclosure" href="https://evren.so/obsessiondb/images/blog/announcement.png" type="image/png"/>
        <updated>2026-01-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[At Numia, we operate blockchain data infrastructure at near-petabyte scale. By late 2024, our infrastructure costs had become unsustainable. We built ObsessionDB to solve this problem.]]></summary>
        <author>
            <name>Marc Höffl</name>
        </author>
        <category label="Infra"/>
    </entry>
</feed>