Abstract

Paimon is a unified lake storage to build dynamic tables for both streaming and batch processing with big data compute engines (i.e. Flink, Spark, Hive, Trino, etc.), supporting high-speed data ingestion and real-time data query.

Proposal

Paimon is a lake storage backed by data files on distributed file system (HDFS, S3, etc.). Different from other data lake storage projects, Paimon is designed to support both high throughput and low end-to-end latency (better data freshness), especially for intensive UPDATE and DELETE workloads.

Background

Nowadays, data lake storage has been more and more widely used. It can store data on object storage and provide atomic control of data files at low cost.

Meantime, with the adoption of stream processing in production (with technologies such as Flink, Spark-Streaming, etc.), there is an increasing demand for storage to simultaneously support updates, deletes and streaming reads. To support such requirements:

In order to solve the limitations of existing solutions, we created Paimon, a lake storage aims to:

Rationale

Paimon natively adopts LSM (Log-Structured Merge-tree) as its underlying data structure, and provides enhanced performance for data with primary keys, in addition to common lake storage capabilities. What's more, Paimon supports both batch and stream operations (reads and writes), facilitating applications pursuing batch-stream-unified semantics. Specifically:

Initial Goals

Paimon was founded in the Flink community in 2022 with the name of "Flink Table Store" and has been developed for more than one year. As its adoption expends to more computing engines, some of the ecology users express their concerns about the neutrality of the project. This makes us rethink the positioning of Flink Table Store, which can be an independent lake storage. 

With adequate discussions, we have got the support from the Flink community to enter Apache incubation, with the below expectations:

  1. Expand Paimon's ecosystem, providing independent Java APIs to support reading and writing from more big data engines such as Spark, Hive, Trino, Presto, Doris, etc.

  2. Supplement key capabilities, especially streaming reads and intensive updates/deletes,  for creating a unified and easy-to-use streaming data warehouse (lakehouse).

  3. Grow into a more vibrant and neutral open source community.

Current Status

Paimon was founded in the Apache Flink community in 2022 with the name of "Flink Table Store", has been developed for one year and produced 4 releases.

Meritocracy

Paimon is running in the Apache way from the very beginning. Meritocracy is the foundation of this project, and many companies and individuals have been encouraged to contribute to it.

Community

Due to the origin of the project, most existing developers of Paimon come from the Apache Flink community. Everyone can access the roadmap, issues and design documents and discuss publicly through mailing list, JIRA, slack channels, etc. Our main developers are from Alibaba, as well as developers from other companies. By introducing into Apache incubator, we believe Paimon can be promoted to more companies and individuals.

Users

Paimon has been used by various users and companies, including Alibaba, Bilibili, ByteDance and so on. Paimon is also integrated into Alibaba Cloud's E-MapReduce and Realtime Compute products to provide cloud services.

Core Developers

Alignment

Paimon aims to integrate with various big data computing engines. Many projects come from Apache, such as Apache Flink, Apache Hive, Apache Spark, etc. We will continue to expand Paimon's ecosystem.

Known Risks

Project Name

Paimon is a spirit named in early grimoires. These include The Lesser Key of Solomon (in the Ars Goetia), Johann Weyer's Pseudomonarchia Daemonum, Collin de Plancy's Dictionnaire Infernal and so on.

Paimon is an NPC in the game "Genshin Impact" who accompanies the Traveler throughout their adventure in Teyvat as their guide.

Orphaned products

Paimon originates from Apache Flink and has been used / will be adopted in many companies such as Alibaba, Bilibili, ByteDance, etc. Developers from both the community and these companies are committed to the future development of Paimon. We are now actively operating the project and will continue to increase the vitality of the community to attract more contributors.

Inexperience with Open Source

Paimon was born as a sub-project of Apache Flink and the Flink community decided to donate it into Apache incubator. All existing contributors of Paimon have been involving in the Flink community and are familiar with the Apache Way.

Homogenous Developers

The current contributors are across various organizations, including Alibaba, Bilibili, ByteDance, Confluent, etc. We are committed to recruiting additional committers based on their contributions to the project.

Reliance on Salaried Developers

Most of the developers are paid by their employers to contribute to this project. Given some volunteer developers and the committers' sense of ownership of the code, the project could continue even if no salaried developers contributed to the project.

Relationships with Other Apache Products

Paimon aims to become the de-facto data lake storage that could cooperate with most computing engines to provide mature data lake solutions. Now it can work together with Apache Flink, Apache Spark, Apache Hive, Apache Presto, etc. and will actively develop its ecosystem and integrate with more computing engines, such as Apache Doris.

An Excessive Fascination with the Apache Brand

We believe the Apache way, not the brand, will help Paimon grow and persist. We hope to make sure that a very inclusive, diverse, and meritocratic community is built outside the umbrella of a single company.

Documentation

Documentation can be found on https://nightlies.apache.org/flink/flink-table-store-docs-master/

Initial Source

The initial source code for Paimon is hosted at  https://github.com/apache/flink-table-store

The project name is still not renamed and we will rename it from flink-table-store to Paimon after the incubation proposal is approved.

Source and Intellectual Property Submission Plan

Paimon originates as a sub-project of Apache Flink and all sources and IPs belong to the ASF. Most initial committers are already Apache committers with ICLAs submitted, and we will ask none-Apache committers to submit their ICLAs as soon as Paimon is approved to join Apache Incubator. The codebase is already licensed under Apache License 2.0. We will deprecate the current source repository and redirect it to the new incubator project repository after approved.

External Dependencies

ASF Projects

Apache Licence 2.0

BSD

BSD 3-clause

Eclipse Distribution License 2.0

MIT License

The JDOM License

Cryptography

Paimon does not currently include any cryptography-related code.

Required Resources

Mailing lists

Git Repositories:

Issue Tracking

The community would like to continue using GitHub Issues.

Other Resources

The community has already chosen GitHub actions as continuous integration tools.

Initial Committers

Sponsors

Champion

Yu Li (liyu@apache.org)

Nominated Mentors

Becket Qin (jqin@apache.org)

Robert Metzger (rmetzger@apache.org)

Stephan Ewen (sewen@apache.org)

Yu Li (liyu@apache.org)

Sponsoring Entity

We are expecting the Apache Incubator could sponsor this project.