Beaconstac serves QR code analytics to 30K customers with Apache Pinot
Beaconstac found Apache Pinot p95 latencies were 20x faster than Elasticsearch
Beaconstac saw 10x improvement in overall query performance across latencies
Beaconstac saw 100% reduction in errors with Pinot and StarTree
Beaconstac shrank their cluster footprint (50% reduction in nodes) by moving from Elasticsearch to Apache Pinot
Quick Response (QR) codes have been around since the 1990s and had explosive growth across industries thanks to the broad adoption of mobile browsers and camera-equipped smartphones. In the U.S. alone, the number of users that will scan a QR code to seek information on products and services continues to rise, and is now nearing 100 million consumers.
Beaconstac is a provider of a dynamic QR code solution to run campaigns and analytics, engaging audiences and prospects immediately while building customer trust and loyalty. Real-time data is essential for the 30,000+ customers of Beaconstac who want instantaneous insights, discovering patterns and trends in when and how users are scanning their QR codes.
This article is based on an in-person meetup. Watch the meetup here:
With more than 204 million QR code scans worldwide, Beaconstac serves diverse use cases across retail, financial services, consumer goods, healthcare, and other industries. Beaconstac’s dashboards allow users to see their top-performing QR codes and analyze code scans by filters such as location, time of day, and device used.
The company’s real-time data ingestion pipeline includes Beaconstac’s analytics server, Amazon Kinesis Data Streams, and Amazon Lambda. That data is then sent to StarTree Cloud, powered by Apache Pinot, and delivered to users in the form of analytics dashboards.
Initially Beaconstac had used Elasticsearch, the popular search engine, to generate their analytics. However, Elasticsearch was never designed to support user-facing analytics at scale. As Beaconstac’s user base and cluster footprint grew rapidly, they experienced a multitude of issues with Elasticsearch. User-facing dashboards had loading challenges due to high latencies, high error rates, and slow Queries Per Second (QPS). All of these issues directly impacted end users and affected the likelihood of users converting to Beaconstac’s paid plans.
The key issues Beaconstac identified with Elasticsearch were:
High p95 latencies >20 seconds
High error rate
2.5× - 3× lower QPS than expected
Large cluster footprint (grew by 2× every few months)
The Beaconstac team saw p95 latency for queries run using Elasticsearch often exceeding 20 seconds, as shown in the graph below.
These high latencies were coupled with frequent query timeouts, causing Beaconstac’s users to wait a considerable amount of time to view their QR code analytics. At peak times, the number of errors for queries run in Elasticsearch could be in the thousands — with one peak surpassing 15,000 errors in a 2 hour period, or two errors every second.
Although Beaconstac had built-in retry mechanisms for errors, these callbacks led to a very low QPS on their Elasticsearch clusters. The team should have been able to serve 100+ QPS, but were only serving 30 to 40 QPS due to high latencies and error retry rates.
After realizing they needed a long-term replacement solution, Beaconstac determined their best option would be a real-time analytics database. This was the case for Apache Pinot; it was designed-for-purpose for fast online analytical processing (OLAP) workloads. Beaconstac did a small POC of Apache Pinot in-house and were impressed with its capabilities.
The team performed extensive testing to ensure Pinot would eliminate the problems they were experiencing with Elasticsearch. Stress testing on the Pinot cluster found they were able to support 100 concurrent users and 200 QPS with p95 latencies as low as 500 ms.
One of the issues Beaconstac had faced with Elasticsearch was its steep learning curve. Their small data team lacked specialized knowledge of Elasticsearch, and they had difficulty finding resources with that experience. Apache Pinot had a vibrant community and excellent documentation. Beaconstac also saw the benefits of working with StarTree to access fully managed Pinot, help from Pinot experts, and additional features not available in open source Pinot (such as Data Manager for easy data ingestion).
Of course, performance was a key reason that Beaconstac selected Pinot and StarTree Cloud. Even without using explicit indexing, the Beconstac team saw improved run times compared to Elasticsearch.
With StarTree Cloud, powered by Apache Pinot, the Beaconstac team saw latencies between 0.5 and 1 second and p95 latency improved by more than 20x. They also experienced zero errors — a drastic improvement compared to the error rates of Elasticsearch.
The performance gains stem from the architectural differences and advantages of Apache Pinot vs. Elasticsearch. Apache Pinot was designed-for-purpose for real-time analytics. It uses an efficient columnar store format, supports fast aggregations and flexible index types like the star-tree index, and for ingestion of streaming data and real-time upserts.
When Beaconstac compared query performance among Elasticsearch, Apache Pinot, and StarTree, they saw a 10x improvement overall across latencies (including p50, p75, p90, p95, and p99). The chart below shows query runtimes for Elasticsearch, open source Apache Pinot (without indexing), and StarTree Cloud (with indexing).
In addition to query performance improvements, Beaconstac was able to significantly reduce their cluster footprint. The results from switching to Apache Pinot included:
50% reduction in number of nodes needed
10x reduction in number of cores being run
7x reduction in memory
On the whole, Beaconstac saw:
90% reduction in infrastructure size
90% reduction in p99 latency
100% reduction in errors
They were also able to significantly improve their QPS, with Pinot giving them the ability to run many more concurrent queries than Elasticsearch.
Beaconstac isn’t the only company who saw drastic improvements in their real-time analytics performance by switching to Apache Pinot. Uber replaced Elasticsearch with Pinot and saved $2M annually, reduced database cores by 50%, and saw page load times become nearly 3x faster.
Cisco Webex also migrated their real-time analytics and observability to Pinot after facing high latencies. The Webex team found that Apache Pinot provided 5x to 150x lower latencies than Elasticsearch.
Watch the full meetup to hear the stories from Beaconstac, Uber, and Webex.
Check out our comprehensive list of stories from Apache Pinot users to learn about how companies are using Pinot for user-facing analytics, anomaly detection, observability, security, and more.
You can also get access to fully managed Apache Pinot by signing up for a free trial of StarTree Cloud. If you’re interested in seeing how StarTree compares to Elasticsearch, visit our StarTree Cloud vs. Elasticsearch comparison page.