lance-format / lance-format/lance
Put data and deletion files in subdirectories
@wjones127 is already working on this.
Since Feb 27, 2026.
- Dominant language
- Rust
- Stars
- 7.1k
- Forks
- 852
- Avg merge
- 3d 18h
- Merged PRs (30d)
- 272
Description
When doing cleanup, we need to list all files to find untracked files. When we have lots of data files, this can be very slow.
The only portable way to get parallelism in this is to divide data up into directories.
For example, imagine you have 1 million lance files in the data prefix in S3. To list all these, you need to do 1,000 S3 list calls, sequentially. If we put them into 1000 unique prefixes, we could do 1 list call to get the prefixes, and then 100 parallel list calls at time, getting all results in something like 20% of the time.
Data files can have their naming scheme adjusted by changing:
Deletion files also matter, as I suspect we can create a lot of them. Each time a delete, update, or merge-insert runs, we can create these. So datasets with lots of updates will have many more deletion files than data files. Unfortunately, right now the file name is defined in the spec:
🤦 Yeah, it was I who did that... We'll need a spec change to make that hapen.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.