Skip to content

[FEA] Supporting filters in the Fastener implementation of CAGRA merge #2417

Description

@landrumb

Is your feature request related to a problem? Please describe.
The Fastener CAGRA merge procedure introduced in #2352 provides a faster method for merging CAGRA graphs than the alternate rebuilding approach. However, it does not support the row_filter arg, and the AUTO merge strategy currently falls back to rebuilding if a filter is provided. Compaction is a natural time to remove tombstoned points in a LSM tree, so this is likely a priority for usability in this setting.

Describe the solution you'd like
Adapting Fastener to support functionally point deletion is not trivial for the same reason deleting points in a search graph isn't: removed points can break the connectivity of the graph. However, the merge being done by Fastener is already over disjoint graphs, and the process of adding the scaffold, if minorly adjusted to allow intra-input scaffold edges, would likely repair most minor deletions. Above a certain fraction of points deleted, say 10 or 25%, rebuilding would again be necessary, but this seems like it would be uncommon, especially in large merges where rebuilding would be expensive.

Describe alternatives you've considered
It's possible that no logic needs to change for filters to be supported effectively, and this is largely a benchmarking issue. Regardless, solid benchmarks of post-merge graph quality need to be done before filters are enabled for Fastener.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions