Apache Pinot is an open-source,distributed, column-oriented, online analytical processing (OLAP), data store written in Java. Pinot is designed for low-latency analytical queries over data ingested from both streaming and batch sources. It is suited in contexts where fast analytics, such as aggregations, are needed at high-concurrency, and possibly, with real-time data ingestion.Pawar, Neha. "Pinot Joins Apache Incubator" , LinkedIn Engineering, 01 April 2019
The name Pinot comes from the Pinot grape vines that are pressed into liquid that is used to produce a variety of different wines. The founders of the database chose the name as a metaphor for analyzing vast quantities of data from a variety of different file formats or streaming data sources.
Pinot was first created at LinkedIn after the engineering staff determined that there were no off the shelf solutions that met the social networking site's requirements like predictable low latency, data freshness in seconds, fault tolerance and scalability. Pinot is used in production by technology companies such as Uber, Microsoft, and Stripe
History Pinot was started as an internal project at LinkedIn in 2013 to power a variety of user-facing and business-facing products. One of its early applications was LinkedIn's 'Who's used your profile' feature, which required analytics over recently generated data with low query latency.
The project was open-sourced in June 2015 under an Apache 2.0 license and was donated to the Apache Software Foundation by LinkedIn in June 2019. Pinot became an Apache top-level project in August 2021.
Apache Pinot 1.0 was released in August 2023. The release included Pinot's multi-stage query engine which extended it's SQL capabilities to include distributed operations such as joins, window-functions, and set operations. Development has continued with subsequent releases.
Architecture
Pinot uses Apache Helix for cluster management. Helix is embedded as an agent within the different components and uses Apache ZooKeeper for coordination and maintaining the overall cluster state and health. All Pinot servers and brokers are managed by Helix. Helix is a generic cluster management framework to manage partitions and replicas in a distributed system.
Query management Queries are received by brokers—which checks the request against the segment-to-server routing table—scattering the request between real-time and offline servers.
Cluster management Pinot leverages Apache Helix for cluster management. Helix is a cluster management framework to manage replicated, partitioned resources in a distributed system. Helix uses Zookeeper to store cluster state and metadata.
Features Pinot shares similar features with comparable OLAP datastores, such as Apache Druid. Like Druid, Pinot is a column-oriented database with various compression schemes such as Run Length and Fixed-Bit Length. Pinot supports pluggable indexing technologies - Sorted Index, Bitmap Index, Inverted Index, Star-Tree Index, and Range Index, which are what primarily differentiates Pinot from other OLAP datastores.
Pinot supports near real-time ingestion from streams such as Kafka, AWS Kinesis and batch ingestion from sources such as Hadoop, S3, Azure, GCS. Like most other OLAP datastores and data warehousing solutions, Pinot supports a SQL-like query language that supports selection, aggregation, filtering, group by, order by, distinct queries on data.
See also
List of column-oriented DBMSes Comparison of OLAP servers
References
External links