I just realized I did not open comments, fixed now. Any feedback or alternative ideas are more than welcome!
I'd say we should equally consider all incoming ideas at the moment and see what would work best. We haven't agreed on anything yet, so I'd encourage everyone to participate in the discussion. I will be off next week, will take another look once back. On 2023/10/12 01:20:50 Renjie Liu wrote: > Hi, Anton: > I've gone through the doc, and we are trying to solve the same problems of > position deletes, but with different approaches. It's quite interesting. > > On Thu, Oct 12, 2023 at 12:11 AM Anton Okolnychyi <aokolnyc...@apache.org> > wrote: > > > I tried to summarize notes from our previous discussions here: > > > > https://docs.google.com/document/d/1M4L6o-qnGRwGhbhkW8BnravoTwvCrJV8VvzVQDRJO5I/ > > > > I am going to iterate on the doc later today. > > > > On 2023/10/11 07:06:07 Renjie Liu wrote: > > > Hi, Russell: > > > > > > > > > > The main things I’m still interested are alternative approaches. I > > think > > > > that some of the work that Anton is working on have shown some > > different > > > > bottlenecks in applying delete files that I’m not sure are addressed by > > > > this proposal. > > > > > > > > > I'm also interested. Could you share some resources on the work that > > Anton > > > is working? I didn't notice that. > > > > > > For example, this proposal suggests doing a 1 to 1 (or 1 rowgroup to 1) > > > > delete file application in order to speed up planning. But this could > > as be > > > > done with a puffin file indexing delete files to data files. This would > > > > eliminate any planning cost while also allowing us to do more > > complicated > > > > things like mapping multiple data files to a single delete file as > > well as > > > > operate on a one to many data file to delete file approach. Doing this > > > > approach would mean we would need to change any existing metadata or > > > > introduce a new separate file type. > > > > > > > > > Yes, we can improve planning performance by embedding the mapping in a > > > puffin file. But I guess this may introduce other problems like > > conflicting > > > when doing commits? IIUC, puffin file is used as table level index or > > > statistics. > > > > > > I would also expect some POC experiments showing that the Spec is getting > > > > the benefit’s that are hypothesized. > > > > > > > > > I will conduct some poc experiments with actual data, but it may take > > some > > > time to implement it. > > > > > > The proposal I think also needs to address any possible limitations with > > > > this approach. They don’t all need to be solved but we should at least > > > > being exploring them. As a quick example, how does using single delete > > > > files interact with our commit logic? I would guess that a single > > delete > > > > file approach would make it more difficult to perform multiple deletes > > > > concurrently? > > > > > > > > > Good suggestion, I'm working on updating the doc to completement sketches > > > for dml operations. IIUC, for potential conflicts in performing multiple > > > deletes concurrently, you mean concurrent writes from different dml jobs? > > > If so, I think the current solution still has the same problem since this > > > is in fact conflicts from concurrent updates. But I do admit that the > > > deletion vector approach makes confliction easier since it's file level. > > > > > > > > > > > > On Tue, Oct 10, 2023 at 8:54 AM Russell Spitzer < > > russell.spit...@gmail.com> > > > wrote: > > > > > > > The main things I’m still interested are alternative approaches. I > > think > > > > that some of the work that Anton is working on have shown some > > different > > > > bottlenecks in applying delete files that I’m not sure are addressed by > > > > this proposal. > > > > > > > > For example, this proposal suggests doing a 1 to 1 (or 1 rowgroup to 1) > > > > delete file application in order to speed up planning. But this could > > as be > > > > done with a puffin file indexing delete files to data files. This would > > > > eliminate any planning cost while also allowing us to do more > > complicated > > > > things like mapping multiple data files to a single delete file as > > well as > > > > operate on a one to many data file to delete file approach. Doing this > > > > approach would mean we would need to change any existing metadata or > > > > introduce a new separate file type. > > > > > > > > I think basically for every “benefit” outlined we should think about if > > > > there is an alternative approach that would achieve the same benefit. > > Then > > > > we should analyze or whether or not the proposal is the best solution > > for > > > > that particular benefit and do some work to calculate what that benefit > > > > would be and what drawbacks there might be. > > > > > > > > I would also expect some POC experiments showing that the Spec is > > getting > > > > the benefit’s that are hypothesized. > > > > > > > > The proposal I think also needs to address any possible limitations > > with > > > > this approach. They don’t all need to be solved but we should at least > > > > being exploring them. As a quick example, how does using single delete > > > > files interact with our commit logic? I would guess that a single > > delete > > > > file approach would make it more difficult to perform multiple deletes > > > > concurrently? > > > > > > > > Sent from my iPad > > > > > > > > On Oct 8, 2023, at 9:22 PM, Renjie Liu <liurenjie2...@gmail.com> > > wrote: > > > > > > > > > > > > Hi, Ryan: > > > > Thanks for your reply. > > > > > > > > 1. What is the exact file format for these on disk that you're > > proposing? > > > >> Even if you're saying that it is what is produced by roaring bitmap, > > we > > > >> need more information. Is that a portable format? Do you wrap it at > > all in > > > >> the file to carry extra metadata? For example, the proposal says that > > a > > > >> starting position for a bitmap would be used. Where is that stored? > > > > > > > > > > > > Sorry for the confusion, by file format I mean roaring bitmap's file > > > > format < > > https://github.com/RoaringBitmap/RoaringFormatSpec#general-layout>. > > > > I checked that it has been implemented in several languages, such as > > java, > > > > go, rust, c. Metadata will be stored in manifest file as other entries > > such > > > > as datafile, deletion file. The starting position doesn't need to be > > stored > > > > since it's used by the file reader. I think your suggestion to provide > > an > > > > interface in design will make things clearer, and I will add it to the > > > > design doc. > > > > > > > > 2. How would DML operations work? Just a sketch would be great. I don't > > > >> think it is a good idea to leave the implications for DML fuzzy. > > > > > > > > > > > > I'll add sketches for other DML operations. > > > > > > > > 3. The comparison appears to be between rewriting data files and using > > > >> delete vectors. I think it needs to compare the existing delete file > > > >> formats to delete vectors so that we know why there is a benefit to > > doing > > > >> this beyond using the current positional delete files. The doc states > > that > > > >> there aren't measurements here, which I think we need. Otherwise, > > should we > > > >> just have a version of DML that produces one position delete per data > > file? > > > > > > > > > > > > I think deletion vector files are quite similar to position delete > > files, > > > > e.g. you can think of a deletion vector file as one position delete per > > > > data file. But this change brings new chances for optimization, and > > there > > > > is one section talking about it in the design doc. As with the > > > > measurements, I'll try to design some experiments for it. > > > > > > > > 4. I think this is missing some justification for how you're changing > > data > > > >> file metadata. > > > > > > > > > > > > I agree with your comment that if we associate one deletion vector > > with a > > > > data file, maybe it's better to extend the DataFile struct rather than > > > > introducing new entries. > > > > > > > > I'll update the doc to address the comments. > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Oct 9, 2023 at 1:44 AM Ryan Blue <b...@tabular.io> wrote: > > > > > > > >> Thanks, Renjie. I went through and made some comments about what is > > still > > > >> not clear. Here's a summary: > > > >> > > > >> 1. What is the exact file format for these on disk that you're > > proposing? > > > >> Even if you're saying that it is what is produced by roaring bitmap, > > we > > > >> need more information. Is that a portable format? Do you wrap it at > > all in > > > >> the file to carry extra metadata? For example, the proposal says that > > a > > > >> starting position for a bitmap would be used. Where is that stored? > > > >> 2. How would DML operations work? Just a sketch would be great. I > > don't > > > >> think it is a good idea to leave the implications for DML fuzzy. > > > >> 3. The comparison appears to be between rewriting data files and using > > > >> delete vectors. I think it needs to compare the existing delete file > > > >> formats to delete vectors so that we know why there is a benefit to > > doing > > > >> this beyond using the current positional delete files. The doc states > > that > > > >> there aren't measurements here, which I think we need. Otherwise, > > should we > > > >> just have a version of DML that produces one position delete per data > > file? > > > >> 4. I think this is missing some justification for how you're changing > > > >> data file metadata. > > > >> > > > >> On Sat, Oct 7, 2023 at 4:49 AM Renjie Liu <liurenjie2...@gmail.com> > > > >> wrote: > > > >> > > > >>> Hi: > > > >>> I have addressed most comments in the document. I would like to ask > > > >>> what's the next step? Should we have a vote on this spec to reject > > it or we > > > >>> should go on with it? > > > >>> > > > >>> On Sat, Sep 30, 2023 at 11:20 PM Renjie Liu <liurenjie2...@gmail.com > > > > > > >>> wrote: > > > >>> > > > >>>> Hi: > > > >>>> Sorry for the late reply, I have been busy recently. I've updated > > the > > > >>>> design with more details about your questions, and here is a > > summary: > > > >>>> > > > >>>> > 1. Would there be only one delete vector per data file? > > > >>>> Yes. It's possible that we have multiple deletion vectors per very > > > >>>> large data file to further reduce write amplification, but I'm not > > sure if > > > >>>> it's over design. > > > >>>> > > > >>>> > 2. Would this require merge of existing vectors and new deletes at > > > >>>> write time? > > > >>>> Yes. Merging two bitmaps would be quite efficient. > > > >>>> > > > >>>> > 3. How would the data file for a vector be identified? > > > >>>> It will be stored in the manifest file. We will have one entry for > > > >>>> deletion file, and we add an extra field `data_file_path` for the > > > >>>> associated data file path. See Changes to spec > > > >>>> < > > https://docs.google.com/document/d/1FtPI0TUzMrPAFfWX_CA9NL6m6O1uNSxlpDsR-7xpPL0/edit#heading=h.p4vrosjzl14j> > > for > > > >>>> details, and Write process > > > >>>> < > > https://docs.google.com/document/d/1FtPI0TUzMrPAFfWX_CA9NL6m6O1uNSxlpDsR-7xpPL0/edit#heading=h.tft7a34rd2be> > > for > > > >>>> example. > > > >>>> > > > >>>> > 4. If multiple vectors are allowed, what is the plan for keeping > > the > > > >>>> number of delete vectors small? > > > >>>> I see multiple vectors per data file as an optimization for very > > large > > > >>>> data file, and I'm not sure if it's over design. > > > >>>> > > > >>>> > 5. Would we allow writing multiple delete vectors into the same > > file? > > > >>>> I don't want to do that. Merging delete vectors into one file have > > two > > > >>>> concerns: > > > >>>> > > > >>>> - Write amplification. > > > >>>> - It makes concurrent modification of data files difficult. > > > >>>> > > > >>>> > 6. How would we track which files are affected by a combined file > > of > > > >>>> delete vectors? > > > >>>> Sorry, I don't quite get your point. > > > >>>> > > > >>>> > 7. What are the details of the proposed file format? > > > >>>> I think roaring bitmap would be a good candidate, but other columnar > > > >>>> formats such as parquet, orc are also possible since they provided > > great > > > >>>> compression for boolean columns. I've mentioned it here > > > >>>> < > > https://docs.google.com/document/d/1FtPI0TUzMrPAFfWX_CA9NL6m6O1uNSxlpDsR-7xpPL0/edit#heading=h.nrhcjanzai0v > > > > > > >>>> > > > >>>> On Thu, Sep 21, 2023 at 4:53 PM Jean-Baptiste Onofré < > > j...@nanthrax.net> > > > >>>> wrote: > > > >>>> > > > >>>>> Hi Ryan, > > > >>>>> > > > >>>>> Thanks for the feedback. Unfortunately, I was not able to join the > > > >>>>> Iceberg community sync meeting yesterday, I promise I will join the > > > >>>>> next ones. > > > >>>>> > > > >>>>> I think the proposal is very interesting and also the > > > >>>>> discussion/comments in the document. I agree that some points > > should > > > >>>>> be discussed further. I propose to update the document with your > > > >>>>> points/questions. > > > >>>>> > > > >>>>> Thanks ! > > > >>>>> > > > >>>>> Regards > > > >>>>> JB > > > >>>>> > > > >>>>> On Thu, Sep 21, 2023 at 2:02 AM Ryan Blue <b...@tabular.io> wrote: > > > >>>>> > > > > >>>>> > Renjie, thanks for the proposal. > > > >>>>> > > > > >>>>> > We talked about this today in the Iceberg community sync and the > > > >>>>> general feedback was that we're excited work on this, but the > > proposal left > > > >>>>> a few areas unclear. There are a few decisions about how to manage > > the > > > >>>>> delete vectors that need to be added to the design. For example: > > > >>>>> > 1. Would there be only one delete vector per data file? > > > >>>>> > 2. Would this require merge of existing vectors and new deletes > > at > > > >>>>> write time? > > > >>>>> > 3. How would the data file for a vector be identified? > > > >>>>> > 4. If multiple vectors are allowed, what is the plan for keeping > > the > > > >>>>> number of delete vectors small? > > > >>>>> > 5. Would we allow writing multiple delete vectors into the same > > file? > > > >>>>> > 6. How would we track which files are affected by a combined > > file of > > > >>>>> delete vectors? > > > >>>>> > 7. What are the details of the proposed file format? > > > >>>>> > > > > >>>>> > In short, we just want to better understand how all this would > > work. > > > >>>>> > > > > >>>>> > Thanks! > > > >>>>> > > > > >>>>> > Ryan > > > >>>>> > > > > >>>>> > > > > >>>>> > On Mon, Sep 18, 2023 at 8:22 PM Renjie Liu < > > liurenjie2...@gmail.com> > > > >>>>> wrote: > > > >>>>> >> > > > >>>>> >> Hi, all: > > > >>>>> >> > > > >>>>> >> > > > >>>>> >> > > > >>>>> >> I have a proposal to introduce deletion vector file to reduce > > write > > > >>>>> amplification of iceberg table: > > > >>>>> >> > > > >>>>> >> > > > >>>>> > > https://docs.google.com/document/d/1FtPI0TUzMrPAFfWX_CA9NL6m6O1uNSxlpDsR-7xpPL0/edit?usp=sharing > > > >>>>> >> > > > >>>>> >> > > > >>>>> >> > > > >>>>> >> Welcome to comment, and looking forward to hear your advice. > > > >>>>> > > > > >>>>> > > > > >>>>> > > > > >>>>> > -- > > > >>>>> > Ryan Blue > > > >>>>> > Tabular > > > >>>>> > > > >>>> > > > >>>> > > > >>>> -- > > > >>>> Renjie Liu > > > >>>> Software Engineer, MVAD > > > >>>> > > > >>> > > > >>> > > > >>> -- > > > >>> Renjie Liu > > > >>> Software Engineer, MVAD > > > >>> > > > >> > > > >> > > > >> -- > > > >> Ryan Blue > > > >> Tabular > > > >> > > > > > > > > > > > > -- > > > > Renjie Liu > > > > Software Engineer, MVAD > > > > > > > > > > > > > > -- > > > Renjie Liu > > > Software Engineer, MVAD > > > > > > > > -- > Renjie Liu > Software Engineer, MVAD >