# pinot

Published articles for pinot.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## 10x speed, 10x savings: Constant Contact's journey from Pinot to ClickHouse

DevFeed: [10x speed, 10x savings: Constant Contact's journey from Pinot to ClickHouse](<https://devfeed.tech/articles/10x-speed-10x-savings-constant-contact-s-journey-from-pinot-to-clickhouse-5498.md>)

Original publisher: [Read original article](<https://clickhouse.com/blog/pinot-to-clickhouse-constant-contact>)

Author: ClickHouse

Published: 2025-11-04T07:39:45Z

Content type: article

Language: en

Sources: [ClickHouse Blog](<https://devfeed.tech/sources/clickhouse-blog.md>)

Topics: [clickhouse](<https://devfeed.tech/topics/clickhouse.md>), [real-time](<https://devfeed.tech/topics/real-time.md>), [data](<https://devfeed.tech/topics/data.md>), [dashboards](<https://devfeed.tech/topics/dashboards.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [amazon](<https://devfeed.tech/tags/amazon.md>), [analytics](<https://devfeed.tech/tags/analytics.md>), [analytics-stack](<https://devfeed.tech/tags/analytics-stack.md>), [apache](<https://devfeed.tech/tags/apache.md>), [clickhouse](<https://devfeed.tech/tags/clickhouse.md>), [dashboards](<https://devfeed.tech/tags/dashboards.md>), [olap](<https://devfeed.tech/tags/olap.md>), [pinot](<https://devfeed.tech/tags/pinot.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [streaming](<https://devfeed.tech/tags/streaming.md>)

### AI overview

Constant Contact rebuilt its real-time analytics stack by migrating from Apache Pinot to ClickHouse. The article describes the scaling and maintenance problems caused by Pinot's handling of upserts and growing data volumes, and explains how ClickHouse fit the team's OLAP and reporting requirements.

### Source excerpt

Constant Contact rebuilt its real-time analytics stack with ClickHouse. In this blog post, they share their lessons doing so.

## Evaluating Equality Predicates with RangeBitmap

DevFeed: [Evaluating Equality Predicates with RangeBitmap](<https://devfeed.tech/articles/evaluating-equality-predicates-25641.md>)

Original publisher: [Read original article](<https://richardstartin.github.io/posts/range-bitmap-equality-queries>)

Author: Richard Startin's Blog

Published: 2022-12-18T00:00:00Z

Content type: article

Language: en

Sources: [Richard Startin's Blog](<https://devfeed.tech/sources/richard-startin-s-blog.md>)

Topics: [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Library](<https://devfeed.tech/topics/library.md>), [benchmarking](<https://devfeed.tech/topics/benchmarking.md>), [data observability](<https://devfeed.tech/topics/data-observability.md>)

Tags: [benchmarking](<https://devfeed.tech/tags/benchmarking.md>), [cardinality](<https://devfeed.tech/tags/cardinality.md>), [comparison](<https://devfeed.tech/tags/comparison.md>), [data-engineering](<https://devfeed.tech/tags/data-engineering.md>), [data-structure](<https://devfeed.tech/tags/data-structure.md>), [java](<https://devfeed.tech/tags/java.md>), [library](<https://devfeed.tech/tags/library.md>), [memory](<https://devfeed.tech/tags/memory.md>), [pinot](<https://devfeed.tech/tags/pinot.md>), [range](<https://devfeed.tech/tags/range.md>), [roaring](<https://devfeed.tech/tags/roaring.md>), [speed](<https://devfeed.tech/tags/speed.md>)

### AI overview

This article evaluates equality and inequality queries using RangeBitmap in the RoaringBitmap library. It explains how the enhancement can support equality filtering as a compact inverted-index alternative, including as a fallback for Apache Pinot range indexes, and reports faster selection than a stream-based scan in the described example while using less space than some inverted indexes.

### Source excerpt

I have just implemented support for (in)equality queries against a RangeBitmap, a succinct data structure in the RoaringBitmap library which supports range queries. RangeBitmap was designed to support range queries in Apache Pinot (more details here) but this enhancement would allow a range index to be used as a fallback for (in)equality queries in case nothing better is available. Supporting (in)equality queries allows a RangeBitmap to be used as a kind of compact inverted index, trading space for time, capable of supporting high cardinality gracefully. Since RangeBitmap supports memory mapping from files, I think that it could be used for data engineering beyond Apache Pinot.

## RangeBitmap - How range indexes work in Apache Pinot

DevFeed: [RangeBitmap - How range indexes work in Apache Pinot](<https://devfeed.tech/articles/rangebitmap-how-range-indexes-work-in-apache-pinot-25642.md>)

Original publisher: [Read original article](<https://richardstartin.github.io/posts/range-bitmap-index>)

Author: Richard Startin's Blog

Published: 2022-03-07T00:00:00Z

Content type: tutorial

Language: en

Sources: [Richard Startin's Blog](<https://devfeed.tech/sources/richard-startin-s-blog.md>)

Topics: [Databases](<https://devfeed.tech/topics/databases.md>), [Data structures](<https://devfeed.tech/topics/data-structures.md>), [Routing (disambiguation)](<https://devfeed.tech/topics/routing.md>), [servers](<https://devfeed.tech/topics/servers.md>)

Tags: [apache](<https://devfeed.tech/tags/apache.md>), [data-structures](<https://devfeed.tech/tags/data-structures.md>), [databases](<https://devfeed.tech/tags/databases.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [java](<https://devfeed.tech/tags/java.md>), [pinot](<https://devfeed.tech/tags/pinot.md>), [range](<https://devfeed.tech/tags/range.md>), [roaring](<https://devfeed.tech/tags/roaring.md>), [routing](<https://devfeed.tech/tags/routing.md>), [server](<https://devfeed.tech/tags/server.md>), [servers](<https://devfeed.tech/tags/servers.md>)

### AI overview

This article explains the requirements and query-performance constraints for range indexes on unsorted numeric data in a column store such as Apache Pinot. It discusses segment-level data structures and how servers and brokers participate in pruning, routing, and result merging.

### Source excerpt

Suppose you have an unsorted array of numeric values and need to find the set of indexes of all the values which are within a range. The range predicate will be evaluated many times, so any time spent preprocessing will be amortised, and non-zero spatial overhead is expected. If the data were sorted, this would be very easy, but the indexes of the values have meaning so the data cannot be sorted. To complicate the problem slightly, the set of indexes must be produced in sorted order.