Cover Tree Data Partitioning for K-Nearest Neighbor Query Efficiency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing data storage systems face inefficiencies in query performance due to the distribution of data across multiple partitions, as similar data items are often stored in different locations, increasing the search complexity for k-nearest neighbor queries.

Innovation Solution

The implementation of a cover tree-based partitioning method that groups similar data items together by generating a cover tree from a sample of the data set, allowing for even distribution across partitions and efficient access through a request router that directs queries to the appropriate storage nodes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Volume of stationary object

If data is distributed across multiple partitions for scaling storage capacity, then storage capacity is improved, but query performance deteriorates due to increased search complexity

Engineering Contradiction:
Improvestorage capacityVSAvoidquery performance
Core Design Contradiction:
Volume of stationary objectVSProductivity

Solution Approach 1:

The data set is segmented into multiple partitions based on cover tree levels, where each partition contains data items with similar characteristics. This segmentation allows the system to scale storage capacity across multiple partitions while maintaining efficient query performance by limiting searches to relevant partitions only.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Different partitions are assigned different data items based on their local characteristics (similarity metrics). The cover tree structure ensures that data items with similar properties are grouped together in the same partition, creating local quality homogeneity that improves query efficiency without sacrificing overall storage capacity.

Inventive Principle:
Principle #3Local quality

2Productivity

If similar data items are stored together in the same partition, then query performance is improved, but data distribution across partitions becomes uneven

Engineering Contradiction:
Improvequery performanceVSAvoiddata distribution uniformity
Core Design Contradiction:
ProductivityVSStability of the object's composition

Solution Approach 1:

The cover tree is constructed in advance to pre-determine the partition assignment for each data item based on similarity metrics. This preliminary action ensures that similar data items are grouped together in the same partition before queries are executed, improving query performance while maintaining balanced data distribution through the hierarchical tree structure.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If a cover tree is generated from a sample of the data set to guide partitioning, then query efficiency is improved, but system complexity increases

Engineering Contradiction:
Improvequery efficiencyVSAvoidsystem complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

Instead of constructing a cover tree from the entire data set, the system generates the cover tree from a representative sample. This partial action reduces the complexity of tree construction and system overhead while still providing effective guidance for partitioning the complete data set, maintaining query efficiency without excessive system complexity.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS11075991B2Partitioning data according to relative differences indicated by a cover tree
Publication Date: 2021.07.27 AMAZON TECH INC
  • US11075991B2 patent drawing
  • US11075991B2 patent drawing
  • US11075991B2 patent drawing

AI summary

A data set may be partitioned according to relative differences indicated by a cover tree. A cover tree may be generated for a data set. Items in the data set may be stored at the same or different nodes according to the relative difference between the items indicated in the cover tree. Portions of the cover tree may be assigned to different nodes storing the data set. Access requests for the data set may be performed by sending the access requests to nodes identified according to the assigned portions of the cover tree.