PowerHash Algorithm for Constant Time Key Distribution
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing hashing algorithms face challenges in achieving both constant time complexity and consistent hashing, especially when the number of buckets changes, leading to undesirable key remapping in applications like distributed caching.
Innovation Solution
The PowerHash algorithm uses two auxiliary hash functions, f() and g(), to map keys to buckets with O(1) time complexity and consistent distribution, reducing the need for key remapping and maintaining a low memory footprint.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of time
If traditional hashing with modulo operation is used, then time complexity is O(1) and uniform distribution is achieved, but key remapping is required when number of buckets changes
Solution Approach 1:
The patent segments the hashing problem into two distinct functions: a primary hash function for initial bucket assignment and a secondary hash function for handling bucket changes. This segmentation allows each function to specialize - the primary function maintains O(1) performance while the secondary function handles the complexity of remapping only when necessary, thus resolving the contradiction between time complexity and adaptability.
Solution Approach 2:
The patent implements dynamic hashing where the hashing behavior adapts based on the number of buckets. When the number of buckets changes, the system dynamically switches between using the primary hash function directly and using the secondary hash function to minimize remapping. This dynamic approach maintains O(1) time complexity while providing adaptability to changing bucket numbers.
2Adaptability or versatility
If consistent hashing is used to reduce key remapping, then adaptability to changing buckets is improved, but time complexity increases to O(log n)
Solution Approach 1:
The patent applies partial consistent hashing by using the secondary hash function only when necessary (when bucket numbers change and remapping is required), rather than applying full consistent hashing always. This partial application reduces the time complexity from O(log n) to O(1) in most cases, while still providing consistent hashing capability when needed.
Solution Approach 2:
The patent changes the parameter of hash function selection based on the number of buckets. When the bucket count is stable, the system uses the simpler primary hash function for O(1) performance. When bucket count changes occur, it switches to the secondary hash function to provide consistent hashing. This parameter-based switching resolves the contradiction between time complexity and consistent hashing capability.
3Reliability
If mapping tables are built to achieve consistent hashing, then key distribution consistency is improved, but memory footprint increases
Solution Approach 1:
The patent extracts the essential consistent hashing functionality from the complex mapping table approach and implements it through a secondary hash function that only activates when needed. This extraction eliminates the need for large mapping tables while maintaining key distribution consistency, thus resolving the contradiction between reliability and memory footprint.
Solution Approach 2:
The patent uses a lightweight secondary hash function that is computationally inexpensive and only deployed temporarily when bucket changes occur, rather than maintaining permanent mapping tables. This disposable approach to consistent hashing provides the necessary reliability without the heavy memory footprint of traditional mapping table solutions.
Data Source
AI summary
This disclosure includes an improvement to hashing methods, which can help achieve faster load balancing of computing resources (e.g., processors, storage systems, web servers or other computer systems, etc.) This improvement may be particularly beneficial when a quantity of the available resources changes. Such hashing methods may include assigning a data object associated with a key to a particular computing resource of the available computing resources by using two auxiliary functions that work together to uniformly distribute data objects across available computing resources and reduce an amount of time to assign the data object to the particular computing resource.


