I agree with you @Jingsong.

Best,
Yu Zelin

> 2023年5月30日 16:15,Jingsong Li <[email protected]> 写道:
> 
> I think we can just throw exceptions for pure numeric tag names.
> 
> Iceberg's behavior looks confusing.
> 
> Best,
> Jingsong
> 
> On Tue, May 30, 2023 at 3:40 PM yu zelin <[email protected]> wrote:
>> 
>> Hi, Shammon,
>> 
>> An intuitive way is use numeric string to indicate snapshot and non-numeric 
>> string to indicate tag.
>> For example:
>> 
>> SELECT * FROM t VERSION AS OF 1  —to snapshot #1
>> SELECT * FROM t VERSION AS OF ‘last_year’ —to tag `last_year`
>> 
>> This is also how iceberg do [1].
>> 
>> However, if we use this way, the tag name cannot be numeric string. I think 
>> this is acceptable and I will add this to the document.
>> 
>> Best,
>> Yu Zelin
>> 
>> [1] https://iceberg.apache.org/docs/latest/spark-queries/#sql
>> 
>>> 2023年5月30日 12:17,Shammon FY <[email protected]> 写道:
>>> 
>>> Hi zelin,
>>> 
>>> Thanks for your update. I have one comment about Time Travel on savepoint.
>>> 
>>> Currently we can use statement in spark for specific snapshot 1
>>> SELECT * FROM t VERSION AS OF 1;
>>> 
>>> My point is how can we distinguish between snapshot and savepoint when
>>> users submit a statement as followed:
>>> SELECT * FROM t VERSION AS OF <version value>;
>>> 
>>> Best,
>>> Shammon FY
>>> 
>>> On Tue, May 30, 2023 at 11:37 AM yu zelin <[email protected]> wrote:
>>> 
>>>> Hi, Jingsong,
>>>> 
>>>> Thanks for your feedback.
>>>> 
>>>> ## TAG ID
>>>> It seems the id is useless currently. I’ll remove it.
>>>> 
>>>> ## Time Travel Syntax
>>>> Since tag id is removed, we can just use:
>>>> 
>>>> SELECT * FROM t VERSION AS OF ’tag-name’
>>>> 
>>>> to travel to a tag.
>>>> 
>>>> ## Tag class
>>>> I agree with you that we can reuse the Snapshot class. We can introduce
>>>> `TagManager`
>>>> only to manage tags.
>>>> 
>>>> ## Expiring Snapshot
>>>>> why not record it in ManifestEntry?
>>>> This is because every time Paimon generate a snapshot, it will create new
>>>> ManifestEntries
>>>> for data files. Consider this scenario, if we record it in ManifestEntry,
>>>> assuming     we commit
>>>> data file A to snapshot #1, we will get manifest entry Entry#1 as [ADD,
>>>> A, commit at #1].
>>>> Then we commit -A to snapshot #2, we will get manifest entry Entry#2 as
>>>> [DELETE, A, ?],
>>>> as you can see, we cannot know at which snapshot we commit the file A. So
>>>> we have to
>>>> record this information to data file meta directly.
>>>> 
>>>>> We should note that "record it in `DataFileMeta` should be done before
>>>> “tag”
>>>> and document version compatibility.
>>>> 
>>>> I will add message for this.
>>>> 
>>>> Best,
>>>> Yu Zelin
>>>> 
>>>> 
>>>>> 2023年5月29日 10:29,Jingsong Li <[email protected]> 写道:
>>>>> 
>>>>> Thanks Zelin for the update.
>>>>> 
>>>>> ## TAG ID
>>>>> 
>>>>> Is this useful? We have tag-name, snapshot-id, and now introducing a
>>>>> tag id? What is used?
>>>>> 
>>>>> ## Time Travel
>>>>> 
>>>>> SELECT * FROM t VERSION AS OF tag-name.<name>
>>>>> 
>>>>> This does not look like sql standard.
>>>>> 
>>>>> Why do we introduce this `tag-name` prefix?
>>>>> 
>>>>> ## Tag class
>>>>> 
>>>>> Why not just use the Snapshot class? It looks like we don't need to
>>>>> introduce Tag class. We can just copy the snapshot file to tag/.
>>>>> 
>>>>> ## Expiring Snapshot
>>>>> 
>>>>> We should note that "record it in `DataFileMeta`" should be done
>>>>> before "tag". And document version compatibility.
>>>>> And why not record it in ManifestEntry?
>>>>> 
>>>>> Best,
>>>>> Jingsong
>>>>> 
>>>>> On Fri, May 26, 2023 at 11:15 AM yu zelin <[email protected]> wrote:
>>>>>> 
>>>>>> Hi, all,
>>>>>> 
>>>>>> FYI, I have updated the PIP [1].
>>>>>> 
>>>>>> Main changes:
>>>>>> - Use new name `tag`
>>>>>> - Enrich Motivation
>>>>>> - New Section `Data Files Handling` to describe how to determine a data
>>>> files can be deleted.
>>>>>> 
>>>>>> Best,
>>>>>> Yu Zelin
>>>>>> 
>>>>>> [1] https://cwiki.apache.org/confluence/x/NxE0Dw
>>>>>> 
>>>>>>> 2023年5月24日 17:18,yu zelin <[email protected]> 写道:
>>>>>>> 
>>>>>>> Hi, Guojun,
>>>>>>> 
>>>>>>> I’d like to share my thoughts about your questions.
>>>>>>> 
>>>>>>> 1. Expiration of savepoint
>>>>>>> In my opinion, savepoints are created in a long interval, so there
>>>> will not exist too many of them.
>>>>>>> If users create a savepoint per day, there are 365 savepoints a year.
>>>> So I didn’t consider expiration
>>>>>>> of it, and I think provide a flink action like `delete-savepoint id =
>>>> 1` is enough now.
>>>>>>> But if it is really important, we can introduce table options to do
>>>> so. I think we can do it like expiring
>>>>>>> snapshots.
>>>>>>> 
>>>>>>> 2. >   id of compacted snapshot picked by the savepoint
>>>>>>> My initial idea is picking a compacted snapshot or doing compaction
>>>> before creating savepoint. But
>>>>>>> After discuss with Jingsong, I found it’s difficult. So now I suppose
>>>> to directly create savepoint from
>>>>>>> the given snapshot. Maybe we can optimize it later.
>>>>>>> The changes will be updated soon.
>>>>>>>> manifest file list in system-table
>>>>>>> I think manifest file is not very important for users. Users can find
>>>> when a savepoint is created, and
>>>>>>> get the savepoint id, then they can query it from the savepoint by the
>>>> id. I did’t see what scenario
>>>>>>> the users need the manifest file information. What do you think?
>>>>>>> 
>>>>>>> Best,
>>>>>>> Yu Zelin
>>>>>>> 
>>>>>>>> 2023年5月24日 10:50,Guojun Li <[email protected]> 写道:
>>>>>>>> 
>>>>>>>> Thanks zelin for bringing up the discussion. I'm thinking about:
>>>>>>>> 1. How to manage the savepoints if there are no expiration mechanism,
>>>> by
>>>>>>>> the TTL management of storages or external script?
>>>>>>>> 2. I think the id of compacted snapshot picked by the savepoint and
>>>>>>>> manifest file list is also important information for users, could
>>>> these
>>>>>>>> information be stored in the system-table?
>>>>>>>> 
>>>>>>>> Best,
>>>>>>>> Guojun
>>>>>>>> 
>>>>>>>> On Mon, May 22, 2023 at 9:13 PM Jingsong Li <[email protected]>
>>>> wrote:
>>>>>>>> 
>>>>>>>>> FYI
>>>>>>>>> 
>>>>>>>>> The PIP lacks a table to show Discussion thread & Vote thread &
>>>> ISSUE...
>>>>>>>>> 
>>>>>>>>> Best
>>>>>>>>> Jingsong
>>>>>>>>> 
>>>>>>>>> On Mon, May 22, 2023 at 4:48 PM yu zelin <[email protected]>
>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>> Hi, all,
>>>>>>>>>> 
>>>>>>>>>> Thank all of you for your suggestions and questions. After reading
>>>> your
>>>>>>>>> suggestions, I adopt some of them and I want to share my opinions
>>>> here.
>>>>>>>>>> 
>>>>>>>>>> To make my statements more clear, I will still use the word
>>>> `savepoint`.
>>>>>>>>> When we make a consensus, the name may be changed.
>>>>>>>>>> 
>>>>>>>>>> 1. The purposes of savepoint
>>>>>>>>>> 
>>>>>>>>>> As Shammon mentioned, Flink and database also have the concept of
>>>>>>>>> `savepoint`. So it’s better to clarify the purposes of our savepoint.
>>>>>>>>> Thanks for Nicholas and Jingsong, I think your explanations are very
>>>> clear.
>>>>>>>>> I’d like to give my summary:
>>>>>>>>>> 
>>>>>>>>>> (1) Fault recovery (or we can say disaster recovery). Users can ROLL
>>>>>>>>> BACK to a savepoint if needed. If user rollbacks to a savepoint, the
>>>> table
>>>>>>>>> will hold the data in the savepoint and the data committed  after the
>>>>>>>>> savepoint will be deleted. In this scenario we need savepoint because
>>>>>>>>> snapshots may have expired, the savepoint can keep longer and save
>>>> user’s
>>>>>>>>> old data.
>>>>>>>>>> 
>>>>>>>>>> (2) Record versions of data at a longer interval (typically daily
>>>> level
>>>>>>>>> or weekly level). With savepoint, user can query the old data in
>>>> batch
>>>>>>>>> mode. Comparing to copy records to a new table or merge incremental
>>>> records
>>>>>>>>> with old records (like using merge into in Hive), the savepoint is
>>>> more
>>>>>>>>> lightweight because we don’t copy data files, we just record the
>>>> meta data
>>>>>>>>> of them.
>>>>>>>>>> 
>>>>>>>>>> As you can see, savepoint is very similar to snapshot. The
>>>> differences
>>>>>>>>> are:
>>>>>>>>>> 
>>>>>>>>>> (1) Savepoint lives longer. In most cases, snapshot’s life time is
>>>>>>>>> about several minutes to hours. We suppose the savepoint can live
>>>> several
>>>>>>>>> days, weeks, or even months.
>>>>>>>>>> 
>>>>>>>>>> (2) Savepoint is mainly used for batch reading for historical data.
>>>> In
>>>>>>>>> this PIP, we don’t introduce streaming reading for savepoint.
>>>>>>>>>> 
>>>>>>>>>> 2. Candidates of name
>>>>>>>>>> 
>>>>>>>>>> I agree with Jingsong that we can use a new name. Since the purpose
>>>> and
>>>>>>>>> mechanism (savepoint is very similar to snapshot) of savepoint is
>>>> similar
>>>>>>>>> to `tag` in iceberg, maybe we can use `tag`.
>>>>>>>>>> 
>>>>>>>>>> In my opinion, an alternative is `anchor`. All the snapshots are
>>>> like
>>>>>>>>> the navigation path of the streaming data, and an `anchor` can stop
>>>> it in a
>>>>>>>>> place.
>>>>>>>>>> 
>>>>>>>>>> 3. Public table operations and options
>>>>>>>>>> 
>>>>>>>>>> We supposed to expose some operations and table options for user to
>>>>>>>>> manage the savepoint.
>>>>>>>>>> 
>>>>>>>>>> (1) Operations (Currently for Flink)
>>>>>>>>>> We provide flink actions to manage savepoints:
>>>>>>>>>> create-savepoint: To generate a savepoint from latest snapshot.
>>>>>>>>> Support to create from specified snapshot.
>>>>>>>>>> delete-savepoint: To delete specified savepoint.
>>>>>>>>>> rollback-to: To roll back to a specified savepoint.
>>>>>>>>>> 
>>>>>>>>>> (2) Table options
>>>>>>>>>> We suppose to provide options for creating savepoint periodically:
>>>>>>>>>> savepoint.create-time: When to create the savepoint. Example: 00:00
>>>>>>>>>> savepoint.create-interval: Interval between the creation of two
>>>>>>>>> savepoints. Examples: 2 d.
>>>>>>>>>> savepoint.time-retained: The maximum time of savepoints to retain.
>>>>>>>>>> 
>>>>>>>>>> (3) Procedures (future work)
>>>>>>>>>> Spark supports SQL extension. After we support Spark CALL
>>>> statement, we
>>>>>>>>> can provide procedures to create, delete or rollback to savepoint
>>>> for Spark
>>>>>>>>> users.
>>>>>>>>>> 
>>>>>>>>>> Support of CALL is on the road map of Flink. In future version, we
>>>> can
>>>>>>>>> also support savepoint-related procedures for Flink users.
>>>>>>>>>> 
>>>>>>>>>> 4. Expiration of data files
>>>>>>>>>> 
>>>>>>>>>> Currently, when a snapshot is expired, data files that not be used
>>>> by
>>>>>>>>> other snapshots. After we introduce the savepoint, we must make sure
>>>> the
>>>>>>>>> data files saved by savepoint will not be deleted.
>>>>>>>>>> 
>>>>>>>>>> Conversely,  when a savepoint is deleted, the data files that not be
>>>>>>>>> used by existing snapshots and other savepoints will be deleted.
>>>>>>>>>> 
>>>>>>>>>> I have wrote some POC codes to implement it. I will update the
>>>> mechanism
>>>>>>>>> in PIP soon.
>>>>>>>>>> 
>>>>>>>>>> Best,
>>>>>>>>>> Yu Zelin
>>>>>>>>>> 
>>>>>>>>>>> 2023年5月21日 20:54,Jingsong Li <[email protected]> 写道:
>>>>>>>>>>> 
>>>>>>>>>>> Thanks Yun for your information.
>>>>>>>>>>> 
>>>>>>>>>>> We need to be careful to avoid confusion between Paimon and Flink
>>>>>>>>>>> concepts about "savepoint"
>>>>>>>>>>> 
>>>>>>>>>>> Maybe we don't have to insist on using this "savepoint", for
>>>> example,
>>>>>>>>>>> TAG is also a candidate just like Iceberg [1]
>>>>>>>>>>> 
>>>>>>>>>>> [1] https://iceberg.apache.org/docs/latest/branching/
>>>>>>>>>>> 
>>>>>>>>>>> Best,
>>>>>>>>>>> Jingsong
>>>>>>>>>>> 
>>>>>>>>>>> On Sun, May 21, 2023 at 8:51 PM Jingsong Li <
>>>> [email protected]>
>>>>>>>>> wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>> Thanks Nicholas for your detailed requirements.
>>>>>>>>>>>> 
>>>>>>>>>>>> We need to supplement user requirements in FLIP, which is mainly
>>>> aimed
>>>>>>>>>>>> at two purposes:
>>>>>>>>>>>> 1. Fault recovery for data errors (named: restore or rollback-to)
>>>>>>>>>>>> 2. Used to record versions at the day level (such as), targeting
>>>>>>>>> batch queries
>>>>>>>>>>>> 
>>>>>>>>>>>> Best,
>>>>>>>>>>>> Jingsong
>>>>>>>>>>>> 
>>>>>>>>>>>> On Sat, May 20, 2023 at 2:55 PM Yun Tang <[email protected]>
>>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Hi Guys,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Since we use Paimon with Flink in most cases, I think we need to
>>>>>>>>> identify the same word "savepoint" in different systems.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> For Flink, savepoint means:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 1.  Triggered by users, not periodically triggered by the system
>>>>>>>>> itself. However, this FLIP wants to support it created periodically.
>>>>>>>>>>>>> 2.  Even the so-called incremental native savepoint [1], it will
>>>>>>>>> not depend on the previous checkpoints or savepoints, it will still
>>>> copy
>>>>>>>>> files on DFS to the self-contained savepoint folder. However, from
>>>> the
>>>>>>>>> description of this FLIP about the deletion of expired snapshot
>>>> files,
>>>>>>>>> paimion savepoint will refer to the previously existing files
>>>> directly.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> I don't think we need to make the semantics of Paimon totally the
>>>>>>>>> same as Flink's. However, we need to introduce a table to tell the
>>>>>>>>> difference compared with Flink and discuss about the difference.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> [1]
>>>>>>>>> 
>>>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-203%3A+Incremental+savepoints#FLIP203:Incrementalsavepoints-Semantic
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Best
>>>>>>>>>>>>> Yun Tang
>>>>>>>>>>>>> ________________________________
>>>>>>>>>>>>> From: Nicholas Jiang <[email protected]>
>>>>>>>>>>>>> Sent: Friday, May 19, 2023 17:40
>>>>>>>>>>>>> To: [email protected] <[email protected]>
>>>>>>>>>>>>> Subject: Re: [DISCUSS] PIP-4 Support savepoint
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Hi Guys,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Thanks Zelin for driving the savepoint proposal. I propose some
>>>>>>>>> opinions for savepont:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> -- About "introduce savepoint for Paimon to persist full data in
>>>> a
>>>>>>>>> time point"
>>>>>>>>>>>>> 
>>>>>>>>>>>>> The motivation of savepoint proposal is more like snapshot TTL
>>>>>>>>> management. Actually, disaster recovery is very much mission
>>>> critical for
>>>>>>>>> any software. Especially when it comes to data systems, the impact
>>>> could be
>>>>>>>>> very serious leading to delay in business decisions or even wrong
>>>> business
>>>>>>>>> decisions at times. Savepoint is proposed to assist users in
>>>> recovering
>>>>>>>>> data from a previous state: "savepoint" and "restore".
>>>>>>>>>>>>> 
>>>>>>>>>>>>> "savepoint" saves the Paimon table as of the commit time,
>>>> therefore
>>>>>>>>> if there is a savepoint, the data generated in the corresponding
>>>> commit
>>>>>>>>> could not be clean. Meanwhile, savepoint could let user restore the
>>>> table
>>>>>>>>> to this savepoint at a later point in time if need be. On similar
>>>> lines,
>>>>>>>>> savepoint cannot be triggered on a commit that is already cleaned up.
>>>>>>>>> Savepoint is synonymous to taking a backup, just that we don't make
>>>> a new
>>>>>>>>> copy of the table, but just save the state of the table elegantly so
>>>> that
>>>>>>>>> we can restore it later when in need.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> "restore" lets you restore your table to one of the savepoint
>>>>>>>>> commit. Meanwhile, it cannot be undone (or reversed) and so care
>>>> should be
>>>>>>>>> taken before doing a restore. At this time, Paimon would delete all
>>>> data
>>>>>>>>> files and commit files (timeline files) greater than the savepoint
>>>> commit
>>>>>>>>> to which the table is being restored.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> BTW, it's better to introduce snapshot view based on savepoint,
>>>>>>>>> which could improve query performance of historical data for Paimon
>>>> table.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> -- About Public API of savepont
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Current introduced savepoint interfaces in Public API are not
>>>> enough
>>>>>>>>> for users, for example, deleteSavepoint, restoreSavepoint etc.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> -- About "Paimon's savepoint need to be combined with Flink's
>>>>>>>>> savepoint":
>>>>>>>>>>>>> 
>>>>>>>>>>>>> If paimon supports savepoint mechanism and provides savepoint
>>>>>>>>> interfaces, the integration with Flink's savepoint is not blocked
>>>> for this
>>>>>>>>> proposal.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> In summary, savepoint is not only used to improve the query
>>>>>>>>> performance of historical data, but also used for disaster recovery
>>>>>>>>> processing.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On 2023/05/17 09:53:11 Jingsong Li wrote:
>>>>>>>>>>>>>> What Shammon mentioned is interesting. I agree with what he said
>>>>>>>>> about
>>>>>>>>>>>>>> the differences in savepoints between databases and stream
>>>>>>>>> computing.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> About "Paimon's savepoint need to be combined with Flink's
>>>>>>>>> savepoint":
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> I think it is possible, but we may need to deal with this in
>>>> another
>>>>>>>>>>>>>> mechanism, because the snapshots after savepoint may expire. We
>>>> need
>>>>>>>>>>>>>> to compare data between two savepoints to generate incremental
>>>> data
>>>>>>>>>>>>>> for streaming read.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> But this may not need to block FLIP, it looks like the current
>>>>>>>>> design
>>>>>>>>>>>>>> does not break the future combination?
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Best,
>>>>>>>>>>>>>> Jingsong
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> On Wed, May 17, 2023 at 5:33 PM Shammon FY <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Hi Caizhi,
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Thanks for your comments. As you mentioned, I think we may
>>>> need to
>>>>>>>>> discuss
>>>>>>>>>>>>>>> the role of savepoint in Paimon.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> If I understand correctly, the main feature of savepoint in the
>>>>>>>>> current PIP
>>>>>>>>>>>>>>> is that the savepoint will not be expired, and users can
>>>> perform a
>>>>>>>>> query on
>>>>>>>>>>>>>>> the savepoint according to time-travel. Besides that, there is
>>>>>>>>> savepoint in
>>>>>>>>>>>>>>> the database and Flink.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 1. Savepoint in database. The database can roll back table
>>>> data to
>>>>>>>>> the
>>>>>>>>>>>>>>> specified 'version' based on savepoint. So the key point of
>>>>>>>>> savepoint in
>>>>>>>>>>>>>>> the database is to rollback data.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 2. Savepoint in Flink. Users can trigger a savepoint with a
>>>>>>>>> specific
>>>>>>>>>>>>>>> 'path', and save all data of state to the savepoint for job.
>>>> Then
>>>>>>>>> users can
>>>>>>>>>>>>>>> create a new job based on the savepoint to continue consuming
>>>>>>>>> incremental
>>>>>>>>>>>>>>> data. I think the core capabilities are: backup for a job, and
>>>>>>>>> resume a job
>>>>>>>>>>>>>>> based on the savepoint.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> In addition to the above, Paimon may also face data write
>>>>>>>>> corruption and
>>>>>>>>>>>>>>> need to recover data based on the specified savepoint. So we
>>>> may
>>>>>>>>> need to
>>>>>>>>>>>>>>> consider what abilities should Paimon savepoint need besides
>>>> the
>>>>>>>>> ones
>>>>>>>>>>>>>>> mentioned in the current PIP?
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Additionally, as mentioned above, Flink also has
>>>>>>>>>>>>>>> savepoint mechanism. During the process of streaming data from
>>>>>>>>> Flink to
>>>>>>>>>>>>>>> Paimon, does Paimon's savepoint need to be combined with
>>>> Flink's
>>>>>>>>> savepoint?
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Best,
>>>>>>>>>>>>>>> Shammon FY
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On Wed, May 17, 2023 at 4:02 PM Caizhi Weng <
>>>> [email protected]>
>>>>>>>>> wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Hi developers!
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Thanks Zelin for bringing up the discussion. The proposal
>>>> seems
>>>>>>>>> good to me
>>>>>>>>>>>>>>>> overall. However I'd also like to bring up a few options.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 1. As Jingsong mentioned, Savepoint class should not become a
>>>>>>>>> public API,
>>>>>>>>>>>>>>>> at least for now. What we need to discuss for the public API
>>>> is
>>>>>>>>> how the
>>>>>>>>>>>>>>>> users can create or delete savepoints. For example, what the
>>>>>>>>> table option
>>>>>>>>>>>>>>>> looks like, what commands and options are provided for the
>>>> Flink
>>>>>>>>> action,
>>>>>>>>>>>>>>>> etc.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 2. Currently most Flink actions are related to streaming
>>>>>>>>> processing, so
>>>>>>>>>>>>>>>> only Flink can support them. However, savepoint creation and
>>>>>>>>> deletion seems
>>>>>>>>>>>>>>>> like a feature for batch processing. So aside from Flink
>>>> actions,
>>>>>>>>> shall we
>>>>>>>>>>>>>>>> also provide something like Spark actions for savepoints?
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> I would also like to comment on Shammon's views.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Should we introduce an option for savepoint path which may be
>>>>>>>>> different
>>>>>>>>>>>>>>>>> from 'warehouse'? Then users can backup the data of
>>>> savepoint.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> I don't see this is necessary. To backup a table the user just
>>>>>>>>> need to copy
>>>>>>>>>>>>>>>> all files from the table directory. Savepoint in Paimon, as
>>>> far
>>>>>>>>> as I
>>>>>>>>>>>>>>>> understand, is mainly for users to review historical data, not
>>>>>>>>> for backing
>>>>>>>>>>>>>>>> up tables.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Will the savepoint copy data files from snapshot or only save
>>>>>>>>> meta files?
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> It would be a heavy burden if a savepoint copies all its
>>>> files.
>>>>>>>>> As I
>>>>>>>>>>>>>>>> mentioned above, savepoint is not for backing up tables.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> How can users create a new table and restore data from the
>>>>>>>>> specified
>>>>>>>>>>>>>>>>> savepoint?
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> This reminds me of savepoints in Flink. Still, savepoint is
>>>> not
>>>>>>>>> for backing
>>>>>>>>>>>>>>>> up tables so I guess we don't need to support "restoring data"
>>>>>>>>> from a
>>>>>>>>>>>>>>>> savepoint.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Shammon FY <[email protected]> 于2023年5月17日周三 10:32写道:
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Thanks Zelin for initiating this discussion. I have some
>>>>>>>>> comments:
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 1. Should we introduce an option for savepoint path which
>>>> may be
>>>>>>>>>>>>>>>> different
>>>>>>>>>>>>>>>>> from 'warehouse'? Then users can backup the data of
>>>> savepoint.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 2. Will the savepoint copy data files from snapshot or only
>>>> save
>>>>>>>>> meta
>>>>>>>>>>>>>>>>> files? The description in the PIP "After we introduce
>>>> savepoint,
>>>>>>>>> we
>>>>>>>>>>>>>>>> should
>>>>>>>>>>>>>>>>> also check if the data files are used by savepoints." looks
>>>> like
>>>>>>>>> we only
>>>>>>>>>>>>>>>>> save meta files for savepoint.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 3. How can users create a new table and restore data from the
>>>>>>>>> specified
>>>>>>>>>>>>>>>>> savepoint?
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Best,
>>>>>>>>>>>>>>>>> Shammon FY
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> On Wed, May 17, 2023 at 10:19 AM Jingsong Li <
>>>>>>>>> [email protected]>
>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Thanks Zelin for driving.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Some comments:
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 1. I think it's possible to advance `Proposed Changes` to
>>>> the
>>>>>>>>> top,
>>>>>>>>>>>>>>>>>> Public API has no meaning if I don't know how to do it.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 2. Public API, Savepoint and SavepointManager are not Public
>>>>>>>>> API, only
>>>>>>>>>>>>>>>>>> Flink action or configuration option should be public API.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 3.Maybe we can have a separate chapter to describe
>>>>>>>>>>>>>>>>>> `savepoint.create-interval`, maybe 'Periodically
>>>> savepoint'? It
>>>>>>>>> is not
>>>>>>>>>>>>>>>>>> just an interval, because the true user case is savepoint
>>>> after
>>>>>>>>> 0:00.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 4.About 'Interaction with Snapshot', to be continued ...
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Best,
>>>>>>>>>>>>>>>>>> Jingsong
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> On Tue, May 16, 2023 at 7:07 PM yu zelin <
>>>> [email protected]
>>>>>>>>>> 
>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Hi, Paimon Devs,
>>>>>>>>>>>>>>>>>>> I’d like to start a discussion about PIP-4[1]. In this
>>>>>>>>> PIP, I
>>>>>>>>>>>>>>>> want
>>>>>>>>>>>>>>>>>> to talk about why we need savepoint, and some thoughts about
>>>>>>>>> managing
>>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>> using savepoint. Look forward to your question and
>>>> suggestions.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Best,
>>>>>>>>>>>>>>>>>>> Yu Zelin
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> [1] https://cwiki.apache.org/confluence/x/NxE0Dw
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>> 
>>>> 
>> 

Reply via email to