>
> @Szehon, I am wondering if we can create materialized views for metadata
> tables to support infinite history on metadata tables (like snapshots or
> partitions). Obviously, materialized views can't be used for time travel or
> rollback. They are only meant for maintaining long/infinite histories.


Yea, that's a good idea, there's definitely options like building a tool
outside Iceberg (dumped it from time to time to materialized view), or
build a history-preserving catalog layer that saves old snapshot metadata,
rather than building it in Iceberg spec itself to keep expired metadata
files.

Thanks
Szehon

On Sat, Jun 3, 2023 at 10:06 AM Steven Wu <stevenz...@gmail.com> wrote:

> > the main use case I had was table historical analysis (last update time
> for each partitions, how many snapshots did this table ever have, for
> example),
>
> Partition level stats can probably help with questions like "last update
> time for each partition".
>
> @Szehon, I am wondering if we can create materialized views for metadata
> tables to support infinite history on metadata tables (like snapshots or
> partitions). Obviously, materialized views can't be used for time travel or
> rollback. They are only meant for maintaining long/infinite histories.
>
> > One use case is the user might need to time travel to a certain
> snapshot. However, such a snapshot is expired due to the snapshot
> expiration that only retains the latest snapshot operation, and this
> operation's only intent is to remove the gc partition. It seems a little
> overkill to me.
>
> @Pucheng, usually people keep Iceberg snapshot history (for time travel or
> rollback) for a few days (like 7). Very long history can burden the
> metadata system. tagging can extend the history with selective snapshots.
>
> It seems that you are saying that purging actions of old partitions are
> creating new snapshots, which are taking up some space in the snapshot
> history. But if snapshot expiration is time based (like 7 days), this
> shouldn't be a problem, right?
>
> On Fri, Jun 2, 2023 at 6:17 PM Szehon Ho <szehon.apa...@gmail.com> wrote:
>
>> Yea, for the original use case in this thread, agree it's delete (soft) +
>> expire (physical, permanent).
>>
>> I guess I should have phrased my thought better, I was replying to Ryan's
>> question above
>>
>>>  We don't often have people ask to keep snapshots that can't be read
>>
>>
>> and had thought it'd be nice to have a ExpireSnapshot mode where we
>> keep older metadata for longer periods of time beyond physical expiration.
>>
>> But the main use case I had was table historical analysis (last update
>> time for each partitions, how many snapshots did this table ever have, for
>> example), it's more a nice-to-have and definitely not sure it is a very
>> compelling use-case.  Another option I guess, is custom catalog can keep
>> around these historical information.
>>
>> Thanks
>> Szehon
>>
>> On Fri, Jun 2, 2023 at 10:28 PM Russell Spitzer <
>> russell.spit...@gmail.com> wrote:
>>
>>> I think "soft-mode" is really just doing the delete. You can then
>>> recover the snapshot if you happen to have accidentally TTL'd a partition.
>>>
>>> On Fri, Jun 2, 2023 at 8:51 AM Szehon Ho <szehon.apa...@gmail.com>
>>> wrote:
>>>
>>>> I think this violates Iceberg’s assumption of immutable snapshots.
>>>> That would require modifying the old snapshot to no longer point to those
>>>> gc’ed data files, else not sure how you can time-travel to read from that
>>>> snapshot, if some of its files are deleted?
>>>>
>>>> That being said, I also had this thought at some point, to keep
>>>> snapshot info around longer.  I expect most organizations operate in a mode
>>>> where they expire snapshots after a few days, and reasonably expect any
>>>> time-travel or snapshot-related operation (like CDC) to happen within this
>>>> timeframe.   And of course, use tags to keep the snapshot from expiration.
>>>>
>>>> But there are some use-cases where keeping more snapshot metadata for a
>>>> period longer than when it could be read could be interesting.  For
>>>> example, if I want to know info about the snapshot that added each data
>>>> file, we probably have lost most of those snapshot metadata as they were
>>>> added long ago.  Example, the frequent ask to find each partition's last
>>>> modified time, (in an earlier email thread).
>>>>
>>>> I haven't thought it completely through, but it crossed my mind that a
>>>> ‘Soft’-mode of ExpireSnapshot may be useful, where we can delete data files
>>>> but just mark snapshot’s metadata files as expired without physically
>>>> deleting them, and so retain the ability to answer these questions.  It
>>>> could be done by adding ‘expired-snapshots’ list to metadata.json.  That
>>>> being said, its a singular use case and not sure if anyone also has
>>>> interest or other use-case?  It would add a bit of complexity.
>>>>
>>>> Thanks
>>>> Szehon
>>>> Szehon
>>>>
>>>> On Fri, Jun 2, 2023 at 7:12 AM Pucheng Yang <py...@pinterest.com.invalid>
>>>> wrote:
>>>>
>>>>> Ryan,
>>>>>
>>>>> One use case is the user might need to time travel to a certain
>>>>> snapshot. However, such a snapshot is expired due to the snapshot
>>>>> expiration that only retains the latest snapshot operation, and this
>>>>> operation's only intent is to remove the gc partition. It seems a little
>>>>> overkill to me.
>>>>>
>>>>> I hope my explanation makes sense to you.
>>>>>
>>>>> On Thu, Jun 1, 2023 at 3:39 PM Ryan Blue <b...@tabular.io> wrote:
>>>>>
>>>>>> Pucheng,
>>>>>>
>>>>>> What is the use case around keeping the snapshot longer? We don't
>>>>>> often have people ask to keep snapshots that can't be read, so it sounds
>>>>>> like you might have something specific in mind?
>>>>>>
>>>>>> Ryan
>>>>>>
>>>>>> On Wed, May 31, 2023 at 8:19 PM Pucheng Yang
>>>>>> <py...@pinterest.com.invalid> wrote:
>>>>>>
>>>>>>> Hi community,
>>>>>>>
>>>>>>> In my organization, a big portion of the datasets are partitioned by
>>>>>>> date, normally we keep the latest X dates of partition for a given 
>>>>>>> dataset.
>>>>>>>
>>>>>>> One issue that always bothers me is if I want to delete a partition
>>>>>>> that should be GC, I will run SQL query "delete from tbl where dt = ..."
>>>>>>> and do snapshot expiration to keep the latest snapshot to make sure that
>>>>>>> partition data is physically removed. However, the downside of this
>>>>>>> approach is the table snapshot history will be completely lost..
>>>>>>>
>>>>>>> I wonder if anyone else in the community has the same pain point?
>>>>>>> How do you solve this? I would love to understand if there is a 
>>>>>>> solution to
>>>>>>> this otherwise we can brainstorm if there is a way to solve this.
>>>>>>>
>>>>>>> Thanks!
>>>>>>>
>>>>>>> Pucheng
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Ryan Blue
>>>>>> Tabular
>>>>>>
>>>>>

Reply via email to