Re: 10g: parallel pipelined table func - compensating hash() function for parallel_enable clause

From: Frank Bergemann <FBergemann_at_web.de>
Date: Thu, 26 Jan 2012 00:21:30 -0800 (PST)
Message-ID: <03299255-2394-49d1-8052-7b82b131f39e_at_n6g2000vbz.googlegroups.com>



Hi Robert,

On 25 Jan., 17:40, Robert Klemme <shortcut..._at_googlemail.com> wrote:
> On Wednesday, January 25, 2012 11:24:58 AM UTC+1, Frank Bergemann wrote:
> > Hi,
>
> > How can i compensate the oracle hash function for
>
> >    parallel_enable(partition myCursor by hash(Some_Key))
>
> > Because Some_Key is already a good ID to dispatch to the table
> > functions.
> > For a bulk i have e.g. #10 Some_Key values with nearly the same
> > #number of records per Some_Key value.
> > This means a balanced load distribution to the parallel pipelined
> > table function instances.
> > However oracle requiring hash(Some_Key) undermines the load balancing
> > (the same for range(Some_Key)).
>
> Why is it the same for range partitioning?
>
> > So i would like to translate Some_Key to a value, that after
> > hash(Some_Key) results in ID (Some_Key) used for dispatch - some kind
> > of anti-hash.
>
> > So functionally speaking it ends up in
>
> >    parallel_enable(partition myCursor by hash(antihash(Some_Key)))
>
> > ... which effectively is
>
> >    parallel_enable(partition myCursor by SomeKey)
>
> > What's the anti-hash (inverse) function, which compensates for
> > hash(Some_Key)?
>
> Hash functions do not have an inverse function because they are not injections.
>
> http://en.wikipedia.org/wiki/Inverse_function
>
> Kind regards
>
> robert

I have to correct myself - i don't need an inverse "function" in terms of mathematics.
That is not possible, because hashing compacts the number space resulting in (minimized) clashing.
So it is not n:1 in forward direction and 1:n in backwards direction - so no function.
But i just need *some* back-mapping.
And i found a way:
Create a look-up table for the forward mapping and use it in inverse direction (fortunately i have only a small set of input values).

best regards,
Frank Received on Thu Jan 26 2012 - 02:21:30 CST

Original text of this message