|
функция hash
|
|||
---|---|---|---|
#18+
Какой алгоритм используется в встроенной функции hash? Решил при миграции на 3-ку максимально вычистить самописные UDF и вот что получилось Код: plsql 1. 2.
Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 11:17 |
|
функция hash
|
|||
---|---|---|---|
#18+
Viktor_bsРешил при миграции на 3-ку Это неправильные пчёлы! Совсем неправильные! И они, наверное, делают неправильный мёд! HASHHASH114 970 874 536 61014 974 901 068 450 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 11:37 |
|
функция hash
|
|||
---|---|---|---|
#18+
Viktor_bsКакой алгоритм используется в встроенной функции hash? ELF ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 11:45 |
|
функция hash
|
|||
---|---|---|---|
#18+
wadmanViktor_bsРешил при миграции на 3-ку Это неправильные пчёлы! Совсем неправильные! И они, наверное, делают неправильный мёд! HASHHASH114 970 874 536 61014 974 901 068 450 Проверил на V2.5.5.26916 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 11:49 |
|
функция hash
|
|||
---|---|---|---|
#18+
Viktor_bsПроверил на V2.5.5.26916 И на 2.5.х результат как у меня выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 11:52 |
|
функция hash
|
|||
---|---|---|---|
#18+
wadmanViktor_bsПроверил на V2.5.5.26916 И на 2.5.х результат как у меня выше. Видимо, у меня руки кривые. :( ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 11:53 |
|
функция hash
|
|||
---|---|---|---|
#18+
Viktor_bs, Ну можно конечно и другой хэш получить. Например так: Код: sql 1.
но ты прав - хэши одинаковые для АРЛЕТ/БАЛЕТ. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 11:55 |
|
функция hash
|
|||
---|---|---|---|
#18+
DarkMasterно ты прав - хэши одинаковые для АРЛЕТ/БАЛЕТ. То есть у меня действительно руки не оттуда? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 11:57 |
|
функция hash
|
|||
---|---|---|---|
#18+
wadman, Ну у меня появилось несколько минут свободных, я и сделал это: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
и это: Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 12:04 |
|
функция hash
|
|||
---|---|---|---|
#18+
wadmanDarkMasterно ты прав - хэши одинаковые для АРЛЕТ/БАЛЕТ. То есть у меня действительно руки не оттуда? У тебя там случайно какой-нить UDF не затесалось? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 12:05 |
|
функция hash
|
|||
---|---|---|---|
#18+
Hello, Darkmaster! You wrote on 3 февраля 2016 г. 12:00:02: Darkmaster> но ты прав - хэши одинаковые для АРЛЕТ/БАЛЕТ.нет. select hash('БАЛЕТ'), hash('АРЛЕТ') from rdb$database 14 974 901 068 450 14 970 874 536 610 V2.5.1.26351 (64-битный, на win7 x64) ods 11.2 dialect 3 Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 12:05 |
|
функция hash
|
|||
---|---|---|---|
#18+
DarkMasterНу у меня появилось несколько минут свободных, я и сделал это: У меня - секунд :) DarkMaster Код: sql 1. 2. 3.
F_1CONSTANT149708745366101149749010684502 И еще: Код: sql 1.
CASTCAST11497087453661014974901068450 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 12:08 |
|
функция hash
|
|||
---|---|---|---|
#18+
DarkMasterwadmanпропущено... То есть у меня действительно руки не оттуда? У тебя там случайно какой-нить UDF не затесалось? Четыре FB и все одно и тоже возвращают. Нет udf для хэша. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 12:10 |
|
функция hash
|
|||
---|---|---|---|
#18+
Мимопроходящий, Извини, не соглашусь - тот же запрос на FB 2.5.4.26856 (Win, ODS 11.2, WIN1251) мне отдает то же, что и у ТС. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 12:10 |
|
функция hash
|
|||
---|---|---|---|
#18+
У меня FB x86, а Windows x64 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 12:11 |
|
функция hash
|
|||
---|---|---|---|
#18+
Viktor_bsУ меня FB x86, а Windows x64 И такое есть. Еще варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 12:11 |
|
функция hash
|
|||
---|---|---|---|
#18+
wadman, Ха. Ларчик открывался просто ;) У меня данные в Win1251 лежат и хэши получаю одинаковые. Если данные в UNICODE_FSS - то да хэши разные, и да - те же самые, что приводил ты и Мимопроходящий. Так что где-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 12:22 |
|
функция hash
|
|||
---|---|---|---|
#18+
МимопроходящийHello, Darkmaster! You wrote on 3 февраля 2016 г. 12:00:02: Darkmaster> но ты прав - хэши одинаковые для АРЛЕТ/БАЛЕТ.нет. select hash('БАЛЕТ'), hash('АРЛЕТ') from rdb$database 14 974 901 068 450 14 970 874 536 610 V2.5.1.26351 (64-битный, на win7 x64) ods 11.2 dialect 3 Не воспроизводится: V2.5.1.26351 (64-битный, на win7 x64) ods 11.2 dialect 3 Код: sql 1. 2. 3.
13490210 13490210 Не смешно уже. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 12:23 |
|
функция hash
|
|||
---|---|---|---|
#18+
Не спорьте, ничего удивительного в коллизиях нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 12:24 |
|
функция hash
|
|||
---|---|---|---|
#18+
Если чарсет коннекта поставить UTF8, то хеши разные :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 12:25 |
|
функция hash
|
|||
---|---|---|---|
#18+
Функция-то побайтово работает, а не посимвольно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 12:27 |
|
функция hash
|
|||
---|---|---|---|
#18+
нужно 2 функции: - character_hash, и приводить параметр к utf8 - binary_hash ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 12:29 |
|
функция hash
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамНе спорьте, ничего удивительного в коллизиях нет. При этом самописная UDF c кастрированной до 8 байт sha1 таким не болеет лет 15. Т.е. ни одной коллизии за все время, иначе бы пользователи убили из-за невозможности внести записи справочники (защита от дублей) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 12:30 |
|
функция hash
|
|||
---|---|---|---|
#18+
Ну так это другой алгоритм, как и MD5 и пр., со своими коллизиями. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 12:49 |
|
функция hash
|
|||
---|---|---|---|
#18+
Viktor_bsТ.е. ни одной коллизии за все время, иначе бы пользователи убили из-за невозможности внести записи справочники (защита от дублей) Если у вас на хеш навешен уник, поздравляю, "Шарик, ты балбес!" (ц) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 13:12 |
|
функция hash
|
|||
---|---|---|---|
#18+
WildSeryViktor_bsТ.е. ни одной коллизии за все время, иначе бы пользователи убили из-за невозможности внести записи справочники (защита от дублей) Если у вас на хеш навешен уник, поздравляю, "Шарик, ты балбес!" (ц) Ну такое возможно, если достаточно длинные строки вводить - коллизия может и не проявится. Но вешать уник на поле, которое вычисляется по алгоритму, предполагающему возникновение коллизии - это да, не хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 19:02 |
|
функция hash
|
|||
---|---|---|---|
#18+
DarkMasterНу такое возможно, если достаточно длинные строки вводить - коллизия может и не проявится. Но вешать уник на поле, которое вычисляется по алгоритму, предполагающему возникновение коллизии - это да, не хорошо. Хеш - это и есть "алгоритм, предполагающий возникновение коллизии". Хеш без коллизий возможен, но его объём в таком случае мало отличается от объёма хешируемых данных, потому для простоты можно использовать сами данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 10:00 |
|
функция hash
|
|||
---|---|---|---|
#18+
DarkMasterХа. Ларчик открывался просто ;) +1 на последнем релизе птицы в win1251 результат как у ТС, в utf8 - как у вадмана и МП ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 10:31 |
|
функция hash
|
|||
---|---|---|---|
#18+
WildSeryViktor_bsТ.е. ни одной коллизии за все время, иначе бы пользователи убили из-за невозможности внести записи справочники (защита от дублей) Если у вас на хеш навешен уник, поздравляю, "Шарик, ты балбес!" (ц) :) Как по-вашему это (уникальность строк) нужно было делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 11:44 |
|
функция hash
|
|||
---|---|---|---|
#18+
Viktor_bsWildSeryпропущено... Если у вас на хеш навешен уник, поздравляю, "Шарик, ты балбес!" (ц) :) Как по-вашему это (уникальность строк) нужно было делать? По самим строкам и делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 11:56 |
|
функция hash
|
|||
---|---|---|---|
#18+
wadmanViktor_bsпропущено... :) Как по-вашему это (уникальность строк) нужно было делать? По самим строкам и делать. Предугадывая вопросс "а если строк очень много" - можно использовать хеш, но при совпадение хешей обязательно дополнительно проверять совпадение строк. Вешать юник на чистый хеш - да, очень плохая идея. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 12:00 |
|
функция hash
|
|||
---|---|---|---|
#18+
а можно по двум хешам, например md5 и sha2 а если чуть серьезней, а почему тогда на GUID'ы можно юники вешать? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 13:13 |
|
функция hash
|
|||
---|---|---|---|
#18+
Arioch, каким образом связаны GUID'ы и хэши? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 13:21 |
|
функция hash
|
|||
---|---|---|---|
#18+
miwaonlinewadmanпропущено... По самим строкам и делать. Предугадывая вопросс "а если строк очень много" - можно использовать хеш, но при совпадение хешей обязательно дополнительно проверять совпадение строк. Вешать юник на чистый хеш - да, очень плохая идея. Я не зря задал этот вопрос, т.к. предполагал такие ответы :) 1. Напомните мне когда появилась возможность строить индекс по строкам длиннее 84 символов? 2. В критичных местах так и было, но с юником. Процедура вставляющая запись и возвращающая ее ID проверяла на совпадение строк в случае нахождения хеша и при коллизии (несовпадении строк) давала ошибку. За 15 лет ни одной ошибки. Наверное везет. 2. Если не строить уникальный индекс то в многопользовательской среде возможны дубли и они на практике были, а для некоторых задач (синдикативная информация) дубли критичнее чем возможные отлупы. 3. В наиболее критичном месте используем 2 разных хеш-алгоритма, но с уником и дополнительной постобработкой отпупов на уникальность (возникают при одновременной вставке с разных транзакций одинакового нового написания). Еще варианты решения? Мне действительно интересно, но для отсечения теоретиков с.м. картину ниже: Размер баы >1Тб, количество пользователей ~200 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 13:21 |
|
функция hash
|
|||
---|---|---|---|
#18+
Viktor_bs, > 1. Напомните мне когда появилась возможность строить индекс по строкам длиннее 84 символов? начиная с Firebird 2.0 (2006-2007 год) разрешено делать индексы до 1/4 страницы > 2. Если не строить уникальный индекс то в многопользовательской среде возможны дубли и они на практике были, а для некоторых задач (синдикативная информация) дубли критичнее чем возможные отлупы. дык я не пойму, если вы там решили переписать полсистему чтобы заменить UDF на встроенную функцию, то какая вам разница, что придётся индексы переделывать на обычные юники ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 13:28 |
|
функция hash
|
|||
---|---|---|---|
#18+
Симонов Денис, тем, что GUIDы тоже пересекаются, хотя и с вероятностью 2^-128 - но у длиных хороших хешей примерно так же ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 13:31 |
|
функция hash
|
|||
---|---|---|---|
#18+
AriochGUIDы тоже пересекаются, хотя и с вероятностью 2^-128 - но у длиных хороших хешей примерно так же Э-э-э... Они как бы для совсем разных целей выдумывались и совершенно не взаимозаменяемы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 13:39 |
|
функция hash
|
|||
---|---|---|---|
#18+
Viktor_bsЕще варианты решения? Решения чего именно? Соблюдения уникальности строк? Ничего умнее сравнения хеша и при совпадении - сравнения исходной строки не придумали, насколько мне известно. Интенсивная многопользовательская работа, как и любая другая реальная ситуация, может внести свои дополнения, конечно. Viktor_bsдля отсечения теоретиков с.м. картину ниже Теоретикам как раз все равно, о чем теоретизировать, это ты практиков пугаешь ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 13:45 |
|
функция hash
|
|||
---|---|---|---|
#18+
Симонов ДенисViktor_bs, > 1. Напомните мне когда появилась возможность строить индекс по строкам длиннее 84 символов? начиная с Firebird 2.0 (2006-2007 год) разрешено делать индексы до 1/4 страницы > 2. Если не строить уникальный индекс то в многопользовательской среде возможны дубли и они на практике были, а для некоторых задач (синдикативная информация) дубли критичнее чем возможные отлупы. дык я не пойму, если вы там решили переписать полсистему чтобы заменить UDF на встроенную функцию, то какая вам разница, что придётся индексы переделывать на обычные юники Та основную систему никто не трогает. Одну из некритических баз решил перевести на 3-ку, а поскольку поглядываю на x64, то по "совету друзей" решил заменять UDF типа trim, power и т.д. на встроенные, и дрогнула рука заменить хеш, тем более поле в обоих случаях INT64. На более глубокие переделки нет времени и пока вся эта миграция на 3-ку на "добровольных началах". ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 13:53 |
|
функция hash
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, но в плане их использования в качестве Unique ID разница не важна IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 13:57 |
|
функция hash
|
|||
---|---|---|---|
#18+
Чудо Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
D:\VSProjects\elfhash>elfhash.exe 13490210 13490210 Вообще то четырехбайтный хэш это как то слабовато для БД ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 13:59 |
|
функция hash
|
|||
---|---|---|---|
#18+
Ariochно в плане их использования в качестве Unique ID разница не важна IMHO Это ты как-то неправильно понимаешь идею использования хэша... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2016, 13:59 |
|
функция hash
|
|||
---|---|---|---|
#18+
Siemargl, Чудо не случилось: Код: sql 1. 2. 3. 4.
У тебя исходник в cp1251, а у меня в utf-8. :) О чём тут неоднократно писали. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 08:20 |
|
функция hash
|
|||
---|---|---|---|
#18+
Viktor_bs:) Как по-вашему это (уникальность строк) нужно было делать?Зависит от контекста задачи. Уникальность текстовых строк (а не каких-нибудь строковых кодов) сама по себе задача редкая и с кучей нюансов в каждом конкретном случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 09:37 |
|
функция hash
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, при чём тут вообещ хэш, если я говорил о GUID ? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 11:22 |
|
функция hash
|
|||
---|---|---|---|
#18+
Arioch, Сперва искусственно ввёл в беседу о хеше GUID, и теперь заявляешь "при чём тут хеш"? Не веди так дискуссию. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 12:11 |
|
функция hash
|
|||
---|---|---|---|
#18+
TonalSiemargl, Чудо не случилось: Код: sql 1. 2. 3. 4.
У тебя исходник в cp1251, а у меня в utf-8. :) О чём тут неоднократно писали. Чудо в том, что алгоритм соответствует и дает тот же результат (у меня). Кстати, у тебя то не совпал результат - должно быть HASHHASH114 970 874 536 61014 974 901 068 450 - разбирайся где напортачил, не смог правильно скомпилировать 3 строки? =) И разверну мысль - для 4х байтного хэша слишком высокая вероятность коллизий для СУБД, которые оперируют сотнями миллионов записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 12:20 |
|
функция hash
|
|||
---|---|---|---|
#18+
Siemargl, вопрос в том для чего ты этот хеш будешь применять. Для паролей в FB используется другой алгоритм. Если ты говоришь про HASH JOIN (я не знаю какой там алгоритм используется), то там коллизии неизбежны, так как размер хеш таблицы всё равно ограничен, иначе будет гигантский оверхэд по памяти. Что касается встроенной функции, то она в будущем может быть расширена так чтобы принимать дополнительные необязательные параметры, например алгоритм и др. Но я думаю приоритет данной фичи будет ниже плинтуса. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 12:34 |
|
функция hash
|
|||
---|---|---|---|
#18+
ИМНО, для текущего поколения техники 64-бит было бы оптимальным. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 12:52 |
|
функция hash
|
|||
---|---|---|---|
#18+
WildSeryСперва искусственно ввёл в беседу о хеше GUID, и теперь заявляешь "при чём тут хеш"? "хэш" - это что, заклинание такое? WildSeryХеш - это и есть "алгоритм, предполагающий возникновение коллизии". одно из двух, либо ты "искусственно ввёл в беседу о хеше" какие-то алгоритмы, либо GUID - это просто (также как и любой хэш) ещё один ЧАСТНЫЙ СЛУЧАЙ "алгоритмa, предполагающий возникновение коллизии". И дело именно в коллизиях, а не в волшебных словах "хэш", "MD5" и прочее ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 14:09 |
|
функция hash
|
|||
---|---|---|---|
#18+
Arioch"хэш" - это что, заклинание такое? Нет, это точный математический термин. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 14:12 |
|
функция hash
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, в контекте Unique constraint единственное, что из этого термина важно, это возникновение коллизий. и random (в том числе GUID), у которого тоже нормально возникновение коллизий, в контексте Unique constraint от хэша отличается только номинально. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 14:14 |
|
функция hash
|
|||
---|---|---|---|
#18+
Ariochв контекте Unique constraint единственное, что из этого термина важно, это возникновение коллизий. Нет, гораздо важнее однозначное соответствие объекту, чья уникальность контролируется. Собственно, это, в данном случае, жизненно важная характеристика. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 14:16 |
|
функция hash
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovоднозначное соответствие объекту обеспечивается как раз уникальностью поля, будь оно хоть хэшом, хоть целочисленным по генератору, хоть чем угодно вообще, лишь бы уникальным и постоянным для этой строки (в отличии от rdb$key) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 14:19 |
|
функция hash
|
|||
---|---|---|---|
#18+
Arioch> лишь бы уникальным и постоянным для этой строки А "для какой строки" GUID ? P.S. Может не надо спорить ради спора? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 14:29 |
|
функция hash
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, Для каждой. Речь иждет про использование в unique-полях принципиально не-unique значений. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 16:02 |
|
функция hash
|
|||
---|---|---|---|
#18+
AriochРечь иждет про использование в unique-полях принципиально не-unique значений. Нет, не об этом идёт речь. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 16:05 |
|
функция hash
|
|||
---|---|---|---|
#18+
[quot Siemargl]TonalSiemargl, Чудо в том, что алгоритм соответствует и дает тот же результат (у меня). Кстати, у тебя то не совпал результат - должно быть HASHHASH114 970 874 536 61014 974 901 068 450 - разбирайся где напортачил, не смог правильно скомпилировать 3 строки? =) После исправления ошибок ( main не может быть void ) и устранения предупреждений в твоём коде, мои результаты соответствуют тестовым: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Например отсюда Код: sql 1. 2. 3. 4. 5.
Так что с кодом всё в порядке. А вот с данными вполне возможны различия. Например если сервер работает с utf данными в utf-16, а не в utf-8, как у меня в исходнике. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:09 |
|
функция hash
|
|||
---|---|---|---|
#18+
Tonal, Неверный ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:25 |
|
функция hash
|
|||
---|---|---|---|
#18+
AriochWildSeryХеш - это и есть "алгоритм, предполагающий возникновение коллизии". одно из двух, либо ты "искусственно ввёл в беседу о хеше" какие-то алгоритмы, либо GUID - это просто (также как и любой хэш) ещё один ЧАСТНЫЙ СЛУЧАЙ "алгоритмa, предполагающий возникновение коллизии". И дело именно в коллизиях, а не в волшебных словах "хэш", "MD5" и прочее Я тебе ещё только один раз отвечу без тега. Разумеется, не все алгоритмы с коллизиями являются хешами. "А есть Б" не означает "Б есть А", это простейшая математика и/или логика. Прошу вернуться к теме хешей, и не писать оффтоп. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:50 |
|
функция hash
|
|||
---|---|---|---|
#18+
TonalПосле исправления ошибок если делаешь хеш из 32-битного 64-битный, то меняй и константы 0xF0000000 на 0xF000000000000000 и 24 на 56 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:55 |
|
функция hash
|
|||
---|---|---|---|
#18+
dimitrхеш и так 64-битный Интересные результаты. 1. Хэш в ФБ похоже что 64-битный судя по результату, но 2. Хэш который Elf - и он же Elf64 на самом деле 32-битный 3. Elf это PJW-32 https://en.wikipedia.org/wiki/PJW_hash_function https://uclibc.org/docs/elf-64-gen.pdf стр.17 4. Если реализовать PJW-64 то результат расходится с ФБ и с ELF. И коллизии на АРЛЕТ БАЛЕТ нет и в 1251. Как то так. Я перевел на С#, чтобы не было расхождения в кодировках Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56.
Ну и наконец статья, что коллизий в ELF слишком много http://stackoverflow.com/questions/9159851/why-such-a-high-collision-rate-with-my-elf-hash-implementation ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 18:57 |
|
функция hash
|
|||
---|---|---|---|
#18+
dimitrTonalПосле исправления ошибок если делаешь хеш из 32-битного 64-битный, то меняй и константы 0xF0000000 на 0xF000000000000000 и 24 на 56 Вот значит, что сделано в ФБ (результат одинаков) и это _неверно_ Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 19:02 |
|
функция hash
|
|||
---|---|---|---|
#18+
Siemargl, Таки, по ходу, разобрались, кто "не умеет компилить". :) Я, чтоб закрыть все вопросы, перегнал приведённый мной исходник в кодировку cp1251, и получил ровно твои результаты: Код: sql 1. 2. 3. 4. 5.
Так что в данной реализации рояль играет именно кодировка, а не мои "кривые ручки". :) Заменив на реализацию от dimitr получаем для 1251: Код: sql 1. 2. 3. 4. 5.
и для utf-8 Код: sql 1. 2. 3.
Т. е. для 1251 значения не меняются от реализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 19:29 |
|
функция hash
|
|||
---|---|---|---|
#18+
Siemarglи это _неверно_ Это уже совершенно пофиг. Любое изменение этой функции сломает все базы, которые ею пользовались. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 19:36 |
|
функция hash
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovSiemarglи это _неверно_ Это уже совершенно пофиг. Любое изменение этой функции сломает все базы, которые ею пользовались. С одной, стороны "проблемы негров" С другой - тройка еще не вышла. Не зря функция называется evlHash [ EvilHash =) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:15 |
|
функция hash
|
|||
---|---|---|---|
#18+
Н.да. В этих ваших интернетов поразительное разнообразие реализаций этого хеша для 64 бит. И все даёт разные значения на одинаковых данных. :( Вот есть же стандартизированные варианты. Тот же CRC CRC-64-ISO и CRC-64-ECMA... Или взять те же гуглянские cityhash или farmhash . И вопросов о реализации бы не возникало - всегда с тестовыми данными сравнить можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:48 |
|
функция hash
|
|||
---|---|---|---|
#18+
Пока вы тут дискутировали, я прогнал запрос по 25млн уникальных записей. Кто угадает количество коллизий? :) Делайте ставки господа... P.S. При этом 64-битная хеш-udf отрабатывает отлично. Про теоретическую возможность коллизий я не спорю, но алгоритм для функции hash выбран неудачно (имхо) Кстати, тут выше звучал намек на замену алгоритма в существующей функции, я думаю что разработчики лучше нас понимают что этого делать нельзя. Если и делать, то добавить новую функцию в 3-ке, например тот-же sha1 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 23:36 |
|
функция hash
|
|||
---|---|---|---|
#18+
Viktor_bs, Это не алгоритм неудачный, это из-за ошибки в реализации он работает чуть лучше чем 32-битный (и то не доказано). Причем чем короче ключ - тем больше % коллизий. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 23:57 |
|
функция hash
|
|||
---|---|---|---|
#18+
SiemarglViktor_bs, Это не алгоритм неудачный, это из-за ошибки в реализации он работает чуть лучше чем 32-битный (и то не доказано). Причем чем короче ключ - тем больше % коллизий. Та я уже перечитал вашу переписку и понял. на 15млн записей - 4560 коллизий. Максимальное количество 8, там помимо текста еще и цифры (размерность). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 00:04 |
|
функция hash
|
|||
---|---|---|---|
#18+
Viktor_bsSiemarglViktor_bs, Это не алгоритм неудачный, это из-за ошибки в реализации он работает чуть лучше чем 32-битный (и то не доказано). Причем чем короче ключ - тем больше % коллизий. Та я уже перечитал вашу переписку и понял. на 15млн записей - 4560 коллизий. Максимальное количество 8, там помимо текста еще и цифры (размерность). Это достаточно мало, даже лучше чем в статье. Да и на коротких данных применять хэш невыгодно - дольше раз в несколько чем прямое сравнение. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 00:39 |
|
функция hash
|
|||
---|---|---|---|
#18+
Viktor_bsЕсли и делать, то добавить новую функцию в 3-ке, например тот-же sha1 тоже давно об этом думаю мечтаю ... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 10:06 |
|
функция hash
|
|||
---|---|---|---|
#18+
_Док_Viktor_bsЕсли и делать, то добавить новую функцию в 3-ке, например тот-же sha1 тоже давно об этом думаю мечтаю ... дык в чём проблема сделай и отошли патч. Время ещё есть. Одному товарищу захотелось вкрутить статистические функции. Он их сделал, отослал патч и в результате они попали в Firebird 3. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 10:53 |
|
функция hash
|
|||
---|---|---|---|
#18+
Симонов Денис, в 3.0 ? там разве не feature freeze уже полгода как ? вот в 3.1 тогда будет наверное ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 11:06 |
|
функция hash
|
|||
---|---|---|---|
#18+
Arioch, 3.1 скорее всего не будет вообще. Сразу 4.0 вроде делать собираются. Ну такая встроенная функция не шибко уж большая фича. Может и прикрутят. Но даже если нет, то никто не отменял: 1. UDF 2. UDR ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 11:22 |
|
функция hash
|
|||
---|---|---|---|
#18+
Симонов Денис_Док_пропущено... тоже давно об этом думаю мечтаю ... дык в чём проблема сделай и отошли патч. Время ещё есть. Одному товарищу захотелось вкрутить статистические функции. Он их сделал, отослал патч и в результате они попали в Firebird 3. Можно об этом поподробнее? Можно ссылку на эту инфу? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 16:34 |
|
функция hash
|
|||
---|---|---|---|
#18+
Viktor_bs, О статистических функциях? см. CORE-4714 . Их запилил некий Hajime Nakagami и передал патч, который после рихтовки применили. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 16:39 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1562357]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
94ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 199ms |
0 / 0 |