Search Postgresql Archives

Re: Fast, stable, portable hash function producing 4-byte or 8-byte values?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/15/19 3:59 PM, George Neuner wrote:
On Tue, 10 Dec 2019 18:00:02 -0600, Ron <ronljohnsonjr@xxxxxxxxx>
wrote:

On 12/10/19 3:11 PM, Erwin Brandstetter wrote:
I am looking for stable hash functions producing 8-byte or 4-byte hashes
from long text values in Postgres 10 or later.

There is md5(), the result of which can be cast to uuid. This reliably
produces practically unique, stable 16-byte values. I have usecases where
an 8-byte or even 4-byte hash would be good enough to make collisions
reasonably unlikely. (I can recheck on the full string) - and expression
indexes substantially smaller. I could truncate md5 and cast back and
forth, but that seems like a lot of wasted computation. Are there
suggestions for text hash functions that are
- fast
- keep collisions to a minimum
- stable across major Postgres versions (so expression indexes don't break)
- croptographic aspect is not needed (acceptable, but no benefit)
What about a CRC32 function?  It's fast, and an SSE4 instruction has been in
Intel CPUs for about 10 years.
On long text CRC will not be as discriminating as a real cryptohash,

When specifying a 4 byte hash, something must be sacrificed...

--
Angular momentum makes the world go 'round.





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux