ClickHouse/docs/fa/sql-reference/functions/hash-functions.md
Ivan Blinkov d91c97d15d
[docs] replace underscores with hyphens (#10606)
* Replace underscores with hyphens

* remove temporary code

* fix style check

* fix collapse
2020-04-30 21:19:18 +03:00

18 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true d734a8e46d 50 هش

توابع هش

توابع هش را می توان برای زدن شبه تصادفی قطعی از عناصر استفاده می شود.

نیم مترد5

تفسیر تمام پارامترهای ورودی به عنوان رشته ها و محاسبه MD5 ارزش هش برای هر یک از. سپس هش ها را ترکیب می کند و اولین بایت 8 هش رشته حاصل را می گیرد و به عنوان تفسیر می کند UInt64 به ترتیب بایت بزرگ اندی.

halfMD5(par1, ...)

تابع نسبتا کند است (5 میلیون رشته کوتاه در هر ثانیه در هر هسته پردازنده). در نظر بگیرید با استفاده از سیفون64 تابع به جای.

پارامترها

تابع طول می کشد تعداد متغیر پارامترهای ورودی. پارامترها می توانند هر یک از انواع داده های پشتیبانی شده.

مقدار بازگشتی

A UInt64 نوع داده مقدار هش.

مثال

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

محاسبه ام دی 5 از یک رشته و مجموعه ای در نتیجه از بایت به عنوان رشته ثابت را برمی گرداند(16). اگر شما ام دی 5 به طور خاص نیاز ندارد, اما شما نیاز به یک رمزنگاری مناسب و معقول هش 128 بیتی, استفاده از sipHash128 تابع به جای. اگر شما می خواهید برای دریافت همان نتیجه به عنوان خروجی توسط ابزار موسسه خدمات مالی, استفاده از پایین تر(سحر و جادو کردن(توسعه هزاره5(بازدید کنندگان))).

سیفون64

تولید 64 بیتی سیفون مقدار هش.

sipHash64(par1,...)

این یک تابع هش رمزنگاری است. این کار حداقل سه بار سریع تر از MD5 تابع.

تابع تفسیر تمام پارامترهای ورودی به عنوان رشته و محاسبه مقدار هش برای هر یک از. سپس هش ها را با الگوریتم زیر ترکیب می کند:

  1. پس از هش کردن تمام پارامترهای ورودی, تابع می شود مجموعه ای از رشته هش.
  2. تابع عناصر اول و دوم را می گیرد و هش را برای مجموعه ای از این موارد محاسبه می کند.
  3. سپس تابع مقدار هش را محاسبه می کند که در مرحله قبل محاسبه می شود و عنصر سوم هش های اولیه را محاسبه می کند و هش را برای مجموعه ای از انها محاسبه می کند.
  4. گام قبلی برای تمام عناصر باقی مانده از مجموعه هش اولیه تکرار شده است.

پارامترها

تابع طول می کشد تعداد متغیر پارامترهای ورودی. پارامترها می توانند هر یک از انواع داده های پشتیبانی شده.

مقدار بازگشتی

A UInt64 نوع داده مقدار هش.

مثال

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 │
└──────────────────────┴────────┘

سیفون128

محاسبه سیفون از یک رشته. می پذیرد استدلال رشته از نوع. را برمی گرداند رشته ثابت (16). متفاوت از سیفون64 در که حالت نهایی صخره نوردی تاشو تنها تا 128 بیت انجام می شود.

4تیهاش64

تولید 64 بیتی هشدار داده می شود مقدار هش.

cityHash64(par1,...)

این یک تابع هش غیر رمزنگاری سریع است. با استفاده از الگوریتم سیتیاش برای پارامترهای رشته و اجرای خاص تابع هش غیر رمزنگاری سریع برای پارامترهای با انواع داده های دیگر. این تابع از ترکیب کننده سیتیاش برای دریافت نتایج نهایی استفاده می کند.

پارامترها

تابع طول می کشد تعداد متغیر پارامترهای ورودی. پارامترها می توانند هر یک از انواع داده های پشتیبانی شده.

مقدار بازگشتی

A UInt64 نوع داده مقدار هش.

مثالها

مثال تماس:

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 │
└──────────────────────┴────────┘

مثال زیر نشان می دهد که چگونه برای محاسبه کنترلی از کل جدول با دقت تا سفارش ردیف:

SELECT groupBitXor(cityHash64(*)) FROM table

اینتش32

محاسبه یک کد هش 32 بیتی از هر نوع عدد صحیح. این یک تابع هش غیر رمزنگاری نسبتا سریع از کیفیت متوسط برای اعداد است.

اینتاش64

محاسبه یک کد هش 64 بیتی از هر نوع عدد صحیح. این کار سریع تر از اینتش32. میانگین کیفیت.

SHA1

SHA224

SHA256

محاسبه شا-1, شا-224, یا شا-256 از یک رشته و مجموعه ای در نتیجه از بایت به عنوان رشته گرداند(20), رشته ثابت(28), و یا رشته ثابت(32). تابع کار می کند نسبتا کند (شا-1 پردازش در مورد 5 میلیون رشته کوتاه در هر ثانیه در هر هسته پردازنده, در حالی که شا-224 و شا-256 روند در مورد 2.2 میلیون). ما توصیه می کنیم با استفاده از این تابع تنها در مواردی که شما نیاز به یک تابع هش خاص و شما می توانید انتخاب کنید. حتی در این موارد توصیه می شود که از تابع به صورت افلاین استفاده کنید و مقادیر قبل از محاسبه هنگام وارد کردن جدول به جای استفاده در انتخاب ها.

نشانی اینترنتی])

یک تابع هش غیر رمزنگاری سریع و با کیفیت مناسب برای یک رشته از یک نشانی وب با استفاده از نوعی عادی سازی. URLHash(s) Calculates a hash from a string without one of the trailing symbols /,? یا # در پایان, اگر در حال حاضر. URLHash(s, N) Calculates a hash from a string up to the N level in the URL hierarchy, without one of the trailing symbols /,? یا # در پایان, اگر در حال حاضر. سطح همان است که در هرج و مرج است. این تابع خاص به یاندکس است.متریکا

فرمان 64

تولید 64 بیتی مزرعه دار مقدار هش.

farmHash64(par1, ...)

تابع با استفاده از Hash64 روش از همه روش های موجود.

پارامترها

تابع طول می کشد تعداد متغیر پارامترهای ورودی. پارامترها می توانند هر یک از انواع داده های پشتیبانی شده.

مقدار بازگشتی

A UInt64 نوع داده مقدار هش.

مثال

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 │
└──────────────────────┴────────┘

جواهاش

محاسبه جواهاش از یک رشته. این تابع هش نه سریع و نه با کیفیت خوب است. تنها دلیل استفاده از این است که این الگوریتم در حال حاضر در سیستم دیگری استفاده می شود و شما باید دقیقا همان نتیجه را محاسبه کنید.

نحو

SELECT javaHash('');

مقدار بازگشتی

A Int32 نوع داده مقدار هش.

مثال

پرسوجو:

SELECT javaHash('Hello, world!');

نتیجه:

┌─javaHash('Hello, world!')─┐
│               -1880044555 │
└───────────────────────────┘

جواهرشوتف16

محاسبه جواهاش از یک رشته, فرض کنید که شامل بایت به نمایندگی از یک رشته در رمزگذاری اوت-16ل.

نحو

javaHashUTF16LE(stringUtf16le)

پارامترها

  • stringUtf16le — a string in UTF-16LE encoding.

مقدار بازگشتی

A Int32 نوع داده مقدار هش.

مثال

درست پرس و جو با utf-16le کد گذاری رشته است.

پرسوجو:

SELECT javaHashUTF16LE(convertCharset('test', 'utf-8', 'utf-16le'))

نتیجه:

┌─javaHashUTF16LE(convertCharset('test', 'utf-8', 'utf-16le'))─┐
│                                                      3556498 │
└──────────────────────────────────────────────────────────────┘

هیوهاش

محاسبه HiveHash از یک رشته.

SELECT hiveHash('');

این فقط جواهاش با کمی نشانه صفر کردن. این تابع در استفاده زنبورک کندو برای نسخه های قبل از 3.0. این تابع هش نه سریع و نه با کیفیت خوب است. تنها دلیل استفاده از این است که این الگوریتم در حال حاضر در سیستم دیگری استفاده می شود و شما باید دقیقا همان نتیجه را محاسبه کنید.

مقدار بازگشتی

A Int32 نوع داده مقدار هش.

نوع: hiveHash.

مثال

پرسوجو:

SELECT hiveHash('Hello, world!');

نتیجه:

┌─hiveHash('Hello, world!')─┐
│                 267439093 │
└───────────────────────────┘

متروهاش64

تولید 64 بیتی متروهاش مقدار هش.

metroHash64(par1, ...)

پارامترها

تابع طول می کشد تعداد متغیر پارامترهای ورودی. پارامترها می توانند هر یک از انواع داده های پشتیبانی شده.

مقدار بازگشتی

A UInt64 نوع داده مقدار هش.

مثال

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 فرم uint64. می پذیرد دو استدلال: یک کلید بین 64 نوع و تعداد سطل. بازده int32. برای کسب اطلاعات بیشتر به لینک مراجعه کنید: مورد احترام

سوفلش2_32, سوفلشه2_64

تولید یک زمزمه 2 مقدار هش.

murmurHash2_32(par1, ...)
murmurHash2_64(par1, ...)

پارامترها

هر دو توابع را به تعداد متغیر از پارامترهای ورودی. پارامترها می توانند هر یک از انواع داده های پشتیبانی شده.

مقدار بازگشتی

  • این murmurHash2_32 تابع را برمی گرداند مقدار هش داشتن UInt32 نوع داده.
  • این murmurHash2_64 تابع را برمی گرداند مقدار هش داشتن UInt64 نوع داده.

مثال

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 │
└──────────────────────┴────────┘

سوفلش3_32, سوفلشه3_64

تولید یک سوفلهاش3 مقدار هش.

murmurHash3_32(par1, ...)
murmurHash3_64(par1, ...)

پارامترها

هر دو توابع را به تعداد متغیر از پارامترهای ورودی. پارامترها می توانند هر یک از انواع داده های پشتیبانی شده.

مقدار بازگشتی

  • این murmurHash3_32 تابع یک UInt32 نوع داده مقدار هش.
  • این murmurHash3_64 تابع یک UInt64 نوع داده مقدار هش.

مثال

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 │
└─────────────┴────────┘

سوفلش3_128

تولید 128 بیتی سوفلهاش3 مقدار هش.

murmurHash3_128( expr )

پارامترها

مقدار بازگشتی

A رشته ثابت (16) نوع داده مقدار هش.

مثال

SELECT murmurHash3_128('example_string') AS MurmurHash3, toTypeName(MurmurHash3) AS type
┌─MurmurHash3──────┬─type────────────┐
│ 6<>1<1C>4"S5KT<4B>~~q │ FixedString(16) │
└──────────────────┴─────────────────┘

بیست و 3264

محاسبه xxHash از یک رشته. این است که در دو طعم پیشنهاد, 32 و 64 بیت.

SELECT xxHash32('');

OR

SELECT xxHash64('');

مقدار بازگشتی

A Uint32 یا Uint64 نوع داده مقدار هش.

نوع: xxHash.

مثال

پرسوجو:

SELECT xxHash32('Hello, world!');

نتیجه:

┌─xxHash32('Hello, world!')─┐
│                 834093149 │
└───────────────────────────┘

همچنین نگاه کنید به

مقاله اصلی