[DRIVERS-2807] Update GridFS spec for a performant "rename all revisions by filename" feature Created: 08/Jan/24  Updated: 09/Jan/24

Status: Backlog
Project: Drivers
Component/s: GridFS
Fix Version/s: None

Type: Task Priority: Minor - P4
Reporter: Jérôme Tamarelle Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Problem/Incident
is caused by PHPLIB-1324 GridFS: Rename a file by filename - i... Closed
Related
related to DRIVERS-2808 Update GridFS spec for a performant "... Backlog
Driver Changes: Not Needed

 Description   

Summary

The spec doesn't provide an API to rename every revisions of a filename. The proposed implementation is inefficient as it requires doing an update_one command for each revision, while it's more efficient to do an update_many with the filename as criteria.

To rename multiple revisions of the same filename, users must retrieve the full list of files collection documents for a given filename and execute “rename” on each corresponding “_id”.

The rename by filename API is necessary for PHP Stream Wrapper.

Motivation

Who is the affected end user?

Applications that use a lot of revisions of the same filename.

How does this affect the end user?

Bad performance scaling when the number of revisions grows

How likely is it that this problem or use case will occur?

Edge case, maybe an incorrect usage of GridFS.

If the problem does occur, what are the consequences and how severe are they?

Degraded performances

Is this issue urgent?

No

Is this ticket required by a downstream team?

PHPLIB implementation of GridFS stream wrapper

Is this ticket only for tests?

No

Acceptance Criteria

Update the spec to give a performant way to rename all revisions of a filename



 Comments   
Comment by Tom Selander [ 09/Jan/24 ]

Triage: Minor spec changes and mostly edge cases, should be OK to backlog

Generated at Thu Feb 08 08:26:27 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.