15 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | e8cd92bba3 |
50 | Karma |
Karma fonksiyonlar
Hash fonksiyonları elementlerin deterministik sözde rastgele karıştırma için kullanılabilir.
halfMD5
Yorumluyor tüm giriş parametrelerini dizeler olarak hesaplar ve MD5 her biri için karma değeri. Sonra karmaları birleştirir, elde edilen dizenin karmasının ilk 8 baytını alır ve bunları şöyle yorumlar UInt64
büyük endian bayt sırasına göre.
halfMD5(par1, ...)
İşlev nispeten yavaştır (işlemci çekirdeği başına saniyede 5 milyon kısa dizge). Kullanmayı düşünün sifash64 bunun yerine işlev.
Parametre
Fonksiyon, değişken sayıda giriş parametresi alır. Parametreler herhangi biri olabilir desteklenen veri türleri.
Döndürülen Değer
A Uİnt64 veri türü karma değeri.
Örnek
SELECT halfMD5(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS halfMD5hash, toTypeName(halfMD5hash) AS type
┌────────halfMD5hash─┬─type───┐
│ 186182704141653334 │ UInt64 │
└────────────────────┴────────┘
MD5
MD5 bir dizeden hesaplar ve elde edilen bayt kümesini FixedString(16) olarak döndürür. Özellikle MD5'E ihtiyacınız yoksa, ancak iyi bir şifreleme 128 bit karmasına ihtiyacınız varsa, ‘sipHash128’ bunun yerine işlev. Md5sum yardımcı programı tarafından çıktı ile aynı sonucu elde etmek istiyorsanız, lower(hex(MD5(s))) kullanın.
sifash64
64-bit üretir Sifash karma değeri.
sipHash64(par1,...)
Bu bir şifreleme karma işlevidir. En az üç kat daha hızlı çalışır MD5 işlev.
İşlev yorumluyor tüm giriş parametreleri dizeleri olarak ve bunların her biri için karma değerini hesaplar. Sonra aşağıdaki algoritma ile karmaları birleştirir:
- Tüm giriş parametrelerini karma yaptıktan sonra, işlev karma dizisini alır.
- Fonksiyon birinci ve ikinci öğeleri alır ve bunların dizisi için bir karma hesaplar.
- Daha sonra işlev, önceki adımda hesaplanan karma değeri ve ilk karma dizinin üçüncü öğesini alır ve bunların dizisi için bir karma hesaplar.
- Önceki adım, ilk karma dizinin kalan tüm öğeleri için tekrarlanır.
Parametre
Fonksiyon, değişken sayıda giriş parametresi alır. Parametreler herhangi biri olabilir desteklenen veri türleri.
Döndürülen Değer
A Uİnt64 veri türü karma değeri.
Örnek
SELECT sipHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS SipHash, toTypeName(SipHash) AS type
┌──────────────SipHash─┬─type───┐
│ 13726873534472839665 │ UInt64 │
└──────────────────────┴────────┘
sifash128
Bir dizeden Sifash hesaplar. Bir dize türü bağımsız değişkeni kabul eder. Fixedstring(16) Döndürür. Sifash64'ten farklıdır, çünkü son xor katlama durumu sadece 128 bit'e kadar yapılır.
cityHash64
64-bit üretir CityHash karma değeri.
cityHash64(par1,...)
Bu hızlı olmayan şifreleme karma işlevidir. Dize parametreleri için CityHash algoritmasını ve diğer veri türleriyle parametreler için uygulamaya özgü hızlı kriptografik olmayan karma işlevini kullanır. İşlev, nihai sonuçları almak için CityHash birleştiricisini kullanır.
Parametre
Fonksiyon, değişken sayıda giriş parametresi alır. Parametreler herhangi biri olabilir desteklenen veri türleri.
Döndürülen Değer
A Uİnt64 veri türü karma değeri.
Örnekler
Çağrı örneği:
SELECT cityHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS CityHash, toTypeName(CityHash) AS type
┌─────────────CityHash─┬─type───┐
│ 12072650598913549138 │ UInt64 │
└──────────────────────┴────────┘
Aşağıdaki örnek, tüm tablonun sağlama toplamının satır sırasına kadar doğrulukla nasıl hesaplanacağını gösterir:
SELECT groupBitXor(cityHash64(*)) FROM table
intHash32
Herhangi bir tamsayı türünden 32 bit karma kodu hesaplar. Bu, sayılar için ortalama kalitenin nispeten hızlı bir kriptografik olmayan karma işlevidir.
intHash64
Herhangi bir tamsayı türünden 64 bit karma kodu hesaplar. Inthash32'den daha hızlı çalışır. Ortalama kalite.
SHA1
SHA224
SHA256
Bir dizeden SHA-1, SHA-224 veya SHA-256 hesaplar ve elde edilen bayt kümesini FixedString(20), FixedString(28) veya FixedString(32) olarak döndürür. İşlev oldukça yavaş çalışır (SHA-1, işlemci çekirdeği başına saniyede yaklaşık 5 milyon kısa dizgiyi işler, SHA-224 ve SHA-256 ise yaklaşık 2.2 milyon işlem yapar). Bu işlevi yalnızca belirli bir karma işleve ihtiyacınız olduğunda ve bunu seçemediğinizde kullanmanızı öneririz. Bu gibi durumlarda bile, SELECTS'TE uygulamak yerine, tabloya eklerken işlev çevrimdışı ve ön hesaplama değerlerini uygulamanızı öneririz.
URLHash(url [, N])
Bir tür normalleştirme kullanarak bir URL'den elde edilen bir dize için hızlı, iyi kalitede olmayan şifreleme karma işlevi.
URLHash(s)
– Calculates a hash from a string without one of the trailing symbols /
,?
veya #
sonunda, varsa.
URLHash(s, N)
– Calculates a hash from a string up to the N level in the URL hierarchy, without one of the trailing symbols /
,?
veya #
sonunda, varsa.
Düzeyleri URLHierarchy aynıdır. Bu fonksiyon (kayıt olmak için özeldir.Metrica.
farmHash64
64-bit üretir FarmHash karma değeri.
farmHash64(par1, ...)
Fonksiyonu kullanır Hash64
tüm yöntem mevcut yöntemler.
Parametre
Fonksiyon, değişken sayıda giriş parametresi alır. Parametreler herhangi biri olabilir desteklenen veri türleri.
Döndürülen Değer
A Uİnt64 veri türü karma değeri.
Örnek
SELECT farmHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS FarmHash, toTypeName(FarmHash) AS type
┌─────────────FarmHash─┬─type───┐
│ 17790458267262532859 │ UInt64 │
└──────────────────────┴────────┘
javaHash
Hesaplıyor JavaHash bir ipten. Bu karma işlevi ne hızlı ne de iyi bir kaliteye sahip değildir. Bunu kullanmanın tek nedeni, bu algoritmanın zaten başka bir sistemde kullanılmasıdır ve tam olarak aynı sonucu hesaplamanız gerekir.
Sözdizimi
SELECT javaHash('');
Döndürülen değer
A Int32
veri türü karma değeri.
Örnek
Sorgu:
SELECT javaHash('Hello, world!');
Sonuç:
┌─javaHash('Hello, world!')─┐
│ -1880044555 │
└───────────────────────────┘
javaHashUTF16LE
Hesaplıyor JavaHash bir dizeden, UTF-16LE kodlamasında bir dizeyi temsil eden bayt içerdiğini varsayarak.
Sözdizimi
javaHashUTF16LE(stringUtf16le)
Parametre
stringUtf16le
— a string in UTF-16LE encoding.
Döndürülen değer
A Int32
veri türü karma değeri.
Örnek
UTF-16LE kodlanmış dize ile doğru sorgu.
Sorgu:
SELECT javaHashUTF16LE(convertCharset('test', 'utf-8', 'utf-16le'))
Sonuç:
┌─javaHashUTF16LE(convertCharset('test', 'utf-8', 'utf-16le'))─┐
│ 3556498 │
└──────────────────────────────────────────────────────────────┘
hiveHash
Hesaplıyor HiveHash
bir ipten.
SELECT hiveHash('');
Bu sadece JavaHash sıfırlanmış işaret biti ile. Bu işlev kullanılır Apache Kov Hanı 3.0 öncesi sürümler için. Bu karma işlevi ne hızlı ne de iyi bir kaliteye sahip değildir. Bunu kullanmanın tek nedeni, bu algoritmanın zaten başka bir sistemde kullanılmasıdır ve tam olarak aynı sonucu hesaplamanız gerekir.
Döndürülen değer
A Int32
veri türü karma değeri.
Tür: hiveHash
.
Örnek
Sorgu:
SELECT hiveHash('Hello, world!');
Sonuç:
┌─hiveHash('Hello, world!')─┐
│ 267439093 │
└───────────────────────────┘
metroHash64
64-bit üretir MetroHash karma değeri.
metroHash64(par1, ...)
Parametre
Fonksiyon, değişken sayıda giriş parametresi alır. Parametreler herhangi biri olabilir desteklenen veri türleri.
Döndürülen Değer
A Uİnt64 veri türü karma değeri.
Örnek
SELECT metroHash64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS MetroHash, toTypeName(MetroHash) AS type
┌────────────MetroHash─┬─type───┐
│ 14235658766382344533 │ UInt64 │
└──────────────────────┴────────┘
jumpConsistentHash
Bir Uint64 Formu jumpconsistenthash hesaplar. İki bağımsız değişkeni kabul eder: bir uint64 tipi anahtar ve kova sayısı. Int32 Döndürür. Daha fazla bilgi için bağlantıya bakın: JumpConsistentHash
murmurHash2_32, murmurHash2_64
Üreten bir MurmurHash2 karma değeri.
murmurHash2_32(par1, ...)
murmurHash2_64(par1, ...)
Parametre
Her iki işlev de değişken sayıda giriş parametresi alır. Parametreler herhangi biri olabilir desteklenen veri türleri.
Döndürülen Değer
- Bu
murmurHash2_32
fonksiyon hash değerini döndürür Uİnt32 veri türü. - Bu
murmurHash2_64
fonksiyon hash değerini döndürür Uİnt64 veri türü.
Örnek
SELECT murmurHash2_64(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS MurmurHash2, toTypeName(MurmurHash2) AS type
┌──────────MurmurHash2─┬─type───┐
│ 11832096901709403633 │ UInt64 │
└──────────────────────┴────────┘
murmurHash3_32, murmurHash3_64
Üreten bir MurmurHash3 karma değeri.
murmurHash3_32(par1, ...)
murmurHash3_64(par1, ...)
Parametre
Her iki işlev de değişken sayıda giriş parametresi alır. Parametreler herhangi biri olabilir desteklenen veri türleri.
Döndürülen Değer
- Bu
murmurHash3_32
fonksiyon bir Uİnt32 veri türü karma değeri. - Bu
murmurHash3_64
fonksiyon bir Uİnt64 veri türü karma değeri.
Örnek
SELECT murmurHash3_32(array('e','x','a'), 'mple', 10, toDateTime('2019-06-15 23:00:00')) AS MurmurHash3, toTypeName(MurmurHash3) AS type
┌─MurmurHash3─┬─type───┐
│ 2152717 │ UInt32 │
└─────────────┴────────┘
murmurHash3_128
128-bit üretir MurmurHash3 karma değeri.
murmurHash3_128( expr )
Parametre
Döndürülen Değer
A FixedString (16) veri türü karma değeri.
Örnek
SELECT murmurHash3_128('example_string') AS MurmurHash3, toTypeName(MurmurHash3) AS type
┌─MurmurHash3──────┬─type────────────┐
│ 6<>1<1C>4"S5KT<4B>~~q │ FixedString(16) │
└──────────────────┴─────────────────┘
xxHash32, xxHash64
Hesaplıyor xxHash
bir ipten. İki tat, 32 ve 64 bit olarak önerilmiştir.
SELECT xxHash32('');
OR
SELECT xxHash64('');
Döndürülen değer
A Uint32
veya Uint64
veri türü karma değeri.
Tür: xxHash
.
Örnek
Sorgu:
SELECT xxHash32('Hello, world!');
Sonuç:
┌─xxHash32('Hello, world!')─┐
│ 834093149 │
└───────────────────────────┘
Ayrıca Bakınız