This page is meant as a template for writing a DSIP.
Current state: [One of "Under Discussion", "Accepted", "Rejected"]
Discussion thread: https://lists.apache.org/thread/wrwytwyod1mm7b5pn5zc64d3boy613k1
JIRA or Github Issue:
Released: <Doris Version>
Google Doc: <If the design in question is unclear or needs to be discussed and reviewed, a Google Doc can be used first to facilitate comments from others.>
Currently, there are various interfaces for file IO operations in Doris:
So many ways to operate will cause the following problems:
We need to unify the IO stack to make it more clear and extensible. In fact, access to IO can be roughly divided into the following three types:
And we could implement these API for different storage backends:
Once implemented, it can be used in the storage layer (separation of hot and cold, separation of storage and computing), query layer (query S3, query HDFS), backup and recovery, etc.
When a new kind of file system is introduced, we only need to implement a new derived class for it and no need to modify any other interface in upper layer.
some research related to the function, such as the advantages and disadvantages of the design, related considerations, etc.
the detailed design of the function.
Ff we change the IO interface directly, it will impact lots of place. I will divide it into two steps:
1. Rewrite the IO stack in totally new files, and leave current implements along, for easy reviewing.
2. Use the new IO stack to replace current calls.