|
функция 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 |
|
|
start [/forum/topic.php?fid=40&msg=39162942&tid=1562357]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 169ms |
0 / 0 |