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

Поиск
Список
Период
Сортировка
От Ron
Тема Re: Fast, stable, portable hash function producing 4-byte or 8-bytevalues?
Дата
Msg-id f930cb2e-a1c1-9a4c-afa1-194a2bb9d0c5@gmail.com
обсуждение исходный текст
Ответ на Fast, stable, portable hash function producing 4-byte or 8-byte values?  (Erwin Brandstetter <brsaweda@gmail.com>)
Список pgsql-general
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.

>
> There is an old post from 2012 by Tom Lane suggesting that hashtext() and 
> friends are not for users:
>
> https://www.postgresql.org/message-id/24463.1329854466%40sss.pgh.pa.us
>
> Postgres 11 added hashtextextended() and friends to generate bigint 
> hashes. In a more recent post from 3 months ago, Tom suggests to use it in 
> user-land - if portability is not needed:
>
> https://www.postgresql.org/message-id/9434.1568839177%40sss.pgh.pa.us
>
> Is pghashlib by Marko Kreen my best option?
>
> https://github.com/markokr/pghashlib
>
> Or the "version-independent hash functions for PostgreSQL" from Peter 
> Eisentraut:
>
> https://github.com/petere/pgvihash
>
> Neither received updates for a couple of years. Unmaintained? Or obsolete?
> And neither is available on most hosted services like RDS or Heroku (which 
> would be required in come cases).
>
> So what are my best options?
>
> Regards
> Erwin

-- 
Angular momentum makes the world go 'round.



В списке pgsql-general по дате отправления:

Предыдущее
От: raf
Дата:
Сообщение: Re: PostgreSQL vs PostgresQL
Следующее
От: Tatsuo Ishii
Дата:
Сообщение: Re: pgpool-II 3.7.5 with ssl