sql >> Database >  >> NoSQL >> Redis

MurmurHash - wat is het?

Murmur is een familie van goede hashing-functies voor algemene doeleinden, geschikt voor niet-cryptografisch gebruik. Zoals vermeld door Austin Appleby, biedt MurmurHash de volgende voordelen:

  • eenvoudig (in termen van aantal gegenereerde montage-instructies).
  • goede verdeling (geslaagd voor chi-kwadraattests voor praktisch alle keysets en bucketformaten.
  • goed lawinegedrag (max. bias van 0,5%).
  • goede botsingsweerstand (geslaagd voor de frog.c-marteltest van Bob Jenkin. Geen botsingen mogelijk voor 4-byte-sleutels, geen kleine (1- tot 7-bits) verschillen).
  • geweldige prestaties op Intel/AMD-hardware, goede afweging tussen hash-kwaliteit en CPU-verbruik.

Je kunt het zeker gebruiken om UUID's te hashen (zoals alle andere geavanceerde hashfuncties:CityHash, Jenkins, Paul Hsieh's, enz ...). Nu is een Redis-bitset beperkt tot 4 GB bits (512 MB). Je moet dus 128 bits aan data (UUID) terugbrengen tot 32 bits (gehashte waarde). Wat de kwaliteit van de hash-functie ook is, er zullen botsingen zijn.

Het gebruik van een geconstrueerde hashfunctie zoals Murmur zal de kwaliteit van de distributie maximaliseren en het aantal botsingen minimaliseren, maar het biedt geen andere garantie.

Hier zijn enkele links die de kwaliteit van hash-functies voor algemene doeleinden vergelijken:

http://www.azillionmonkeys.com/qed/hash.html

http://www.strchr.com/hash_functions

http://blog.aggregateknowledge.com/2011/12/05/choosing-a-good-hash-function-part-1/

http://blog.aggregateknowledge.com/2011/12/29/choosing-a-good-hash-function-part-2/

http://blog.aggregateknowledge.com/2012/02/02/choosing-a-good-hash-function-part-3/



  1. Variabelen gebruiken in MongoDB Map-reduce map-functie

  2. tar gzip mongo dump zoals MySQL

  3. Hoe u meerdere lijstwaarden kunt krijgen in één enkele oproep in RedisTemplate van Jedis Client

  4. MongoDB invoegen()