sql >> Databáze >  >> NoSQL >> Redis

MurmurHash - co to je?

Murmur je rodina dobrých hašovacích funkcí pro obecné účely, které jsou vhodné pro nekryptografické použití. Jak uvedl Austin Appleby, MurmurHash poskytuje následující výhody:

  • jednoduché (co do počtu vygenerovaných montážních návodů).
  • dobrá distribuce (provedení testů chí-kvadrát pro prakticky všechny sady klíčů a velikosti segmentů.
  • dobré lavinové chování (max. vychýlení 0,5 %).
  • dobrá odolnost proti kolizím (vyhovuje mučícímu testu Boba Jenkina Frog.c. U 4bajtových klíčů nejsou možné kolize, žádné malé (1 až 7bitové) rozdíly).
  • skvělý výkon na hardwaru Intel/AMD, dobrý kompromis mezi kvalitou hash a spotřebou CPU.

Určitě jej můžete použít k hašování UUID (jako jakékoli jiné pokročilé hašovací funkce:CityHash, Jenkins, Paul Hsieh, atd ...). Nyní je bitová sada Redis omezena na 4 GB bitů (512 MB). Musíte tedy zmenšit 128 bitů dat (UUID) na 32 bitů (hašovaná hodnota). Bez ohledu na kvalitu hašovací funkce dojde ke kolizím.

Použití navržené hašovací funkce, jako je Murmur, maximalizuje kvalitu distribuce a minimalizuje počet kolizí, ale nenabízí žádnou jinou záruku.

Zde je několik odkazů porovnávajících kvalitu obecných hashovacích funkcí:

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. Jak se vyhnout volání Redis v omezeních skriptu Lua?

  2. Redis hash velmi pomalá rychlost zápisu

  3. Jaký je nejlepší způsob, jak zjistit, která ID v kolekci neexistují, když je uveden seznam ID?

  4. sudo service mongodb restart dává nerozpoznanou chybu služby v ubuntu 14.0.4