Radix Tree Cache for Storage Access Permissions
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing storage server systems face inefficiencies in managing clients' access permissions due to the limitations of using hash tables, such as expensive resizing and suboptimal use of cache resources, which impede performance in handling access requests.
Innovation Solution
Implementing a radix tree data structure in the cache memory to store clients' access permissions, allowing for efficient retrieval and management of access information, particularly effective in handling hierarchical data like IP addresses and subnets.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Quantity of substance
If a hash table is used to store clients' access permissions in the cache, then the storage server can maintain access permissions for multiple clients, but the resizing operation becomes expensive and complicated when the hash table is full
Solution Approach 1:
The patent changes the fundamental data structure parameter from a hash table to a radix tree. This structural parameter change eliminates the resizing problem inherent in hash tables by providing a dynamically expandable tree structure where new entries can be added by creating new nodes without requiring costly rehashing and redistribution of existing entries.
Solution Approach 2:
The radix tree structure segments the access permission data into hierarchical nodes representing different parts of IP addresses or subnet identifiers. This segmentation allows the structure to grow organically by adding new nodes at appropriate levels without requiring global reorganization, thus avoiding the complex resizing operation needed in hash tables.
2Reliability
If a hash table is used to store clients' access permissions in the cache, then the storage server can manage access control, but the cache's limited storage resource is not efficiently utilized
Solution Approach 1:
The patent changes the data structure from a flat hash table to a hierarchical radix tree, fundamentally altering how storage space is organized and utilized. The radix tree structure efficiently utilizes cache memory by storing only the necessary prefix information at each node, avoiding the overhead of hash table structures and enabling better spatial locality for cache performance.
Solution Approach 2:
The radix tree employs a nested hierarchical structure where nodes contain sub-nodes representing progressively more specific IP address or subnet information. This nesting allows the cache to store hierarchical access permission data in a compact form, improving storage utilization by sharing common prefixes among multiple clients rather than storing redundant information.
3Productivity
If a hash table is used to store clients' access permissions, then the storage server can process access requests, but the performance in handling clients' access requests is reduced due to inefficient cache resource usage
Solution Approach 1:
The patent changes the data structure parameter from hash table to radix tree, which fundamentally improves access request handling. The radix tree provides O(L) lookup time where L is the length of the IP address prefix, offering predictable and efficient performance. Additionally, the hierarchical structure enables better cache utilization and spatial locality, reducing memory access latency and improving overall processing speed.
Solution Approach 2:
The radix tree structure performs preliminary organization of access permission data in a hierarchical format during cache population. This preliminary structuring of data by IP address prefixes enables faster lookup operations by allowing the system to traverse only the relevant portions of the tree based on the client's IP address, rather than hashing and potentially colliding in a flat structure.
Data Source
AI summary
A storage server maintains a number of datasets (e.g., exported file systems or other resources). For each dataset, certain clients are allowed to have access (e.g., read access, write access, root access, etc.) and certain other clients are not allowed to have access. Access permission information is maintained to specify which clients are allowed to have access and what kind of access. A method and system are introduced to use a radix tree to store access permission information in a cache, therefore allowing the storage server to quickly retrieve access information relevant to a particular client. One advantage of using radix tree to maintain access permission information is that radix tree is very efficient at storing hierarchical information, such as IP addresses. Radix tree is also very efficient at representing subnets in particular.


