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