|
24.11.2015, 15:59 | #1 |
Гость
|
Хэш функции Why?
Вопрос all?
В 12 используются как минимум два алгоритма hash функций: sha1 класс DimensionAttributeValueSetStorage метод getHash и md5 класс RLedgerTurnoverParamHashKey метод getHash и традиционная паранойя не дает покоя с традиционными вопросами почему? и что лучше? ЗЫ Хэш функции ессно вещь замечательная и соблазнительная и хочется научится их готовить правильно Последний раз редактировалось axm2013; 24.11.2015 в 16:02. |
|
24.11.2015, 16:02 | #2 |
Участник
|
Может, потому что второе делала локализация, а первое - центр?
__________________
Ivanhoe as is.. |
|
24.11.2015, 16:06 | #3 |
Гость
|
И кого правильнее клеймить позором а кому честь и слава в веках? Индусов или локализаторов?
Ну и конечно SHА1 оно вроде как надежнее, но значит ли это что MD5 дает больше коллизий и реально не стоит даже думать о ней? Ведь люди зачем то заморачивались и явно не спроста. PS ну и навскидку может кто подскажет какую нибудь стандартную функцию упаковки строки или куда смотреть? Просто есть некие текстовые поля набор которых на вид хорошо бы представить одним полем и по идее обычную строчку с низкой энтропией можно упаковать без особых потерь. Последний раз редактировалось axm2013; 24.11.2015 в 17:15. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
25.11.2015, 09:47 | #4 |
Участник
|
Цитата:
Цитата:
На мой взгляд, использование MD5 в Аксапте более чем оправдано: ожидать коллизий на таких смешных для криптографической хеш-функции объемах данных (тысячи наборов финансовых аналитик, миллионы комбинаций складских аналитик) не стоит, а удобство использования типа GUID для хранения значений MD5 подчас бесценно. Это нарушение 1-й нормальной формы. Используйте числовые коды вместо строк с низкой энтропией, если хотите сэкономить и повысить производительность. |
|
|
За это сообщение автора поблагодарили: mazzy (2), macklakov (1), ZVV (1), Logger (3), AP-1055D (1). |
25.11.2015, 10:41 | #5 |
Гость
|
Цитата:
Цитата:
Второй тогда уж: но это не принципиально так как нормализация не является необходимым условием щастья. Нет мне нужно именно эквивалент хэш функции так как данные возможно будут перезаливать. Идеальная хэш функция была бы в самый раз. |
|
25.11.2015, 12:16 | #6 |
Участник
|
Цитата:
Цитата:
Не бывает идеальных хеш-функций, другое дело, что под ваши конкретные условия может за глаза хватить того или иного алгоритма. Посмотрите в сторону TextBuffer::strHashKey(), если почему-то считаете, что она вам не подходит, - возьмите ту же MD5. |
|
29.02.2016, 09:53 | #7 |
Модератор
|
|
|
29.02.2016, 09:43 | #8 |
Участник
|
Ну а как вы тестировали ?
Кстати, тестировать имеет смысл на небольшой длине ключа (порядка килобайта) - так как именно на такой длине вычисляется хеш для inventDim |
|
29.02.2016, 10:03 | #9 |
Гость
|
Цитата:
А при чем тут InventDim? У меня другая задача в любом случае строки не мега длины де факто. Цитата:
Сообщение от George Nordic
Тогда лишитесь возможности поиска по данным полям.
1. взял значение полей 2. сгенерил хэш 3 осуществил поиск 4 вуаля |
|
29.02.2016, 10:09 | #10 |
Участник
|
Цитата:
А код как работал ? p-code ? CIL ? В первом случае могли сказаться накладные расходы на вызов IL функций. см. http://blogs.msdn.com/b/mfp/archive/...the-metal.aspx |
|
29.02.2016, 11:42 | #11 |
Модератор
|
|
|
29.02.2016, 11:52 | #12 |
Гость
|
Цитата:
Поля останутся и с точки зрения пользователя кардинально ничего не поменяется, а по системе оперировать можно будет значением хэша (связи и прочее), что удобней, приятней и молодежней. |
|
29.02.2016, 10:24 | #13 |
Участник
|
Как некрасиво.
А мы тут вас всерьез пытаем, как тестили, чего делали. Бррр. |
|
|
За это сообщение автора поблагодарили: (0). |
29.02.2016, 12:02 | #14 |
Модератор
|
А, понял. Никак тему найти не могу, которая может быть Вам интересна: искусственный vs естественный ключ, там обсуждались преимущества того и другого подхода. А так - да, имеет право на жизнь, особенно если использовать как ключевое поле для связывания таблиц или индекс.
С Уважением, Георгий |
|
29.02.2016, 12:11 | #15 |
Гость
|
Ну у нас идея использования хэш родилась по естественным причинам (некоторые данные могут затереть а потом восстановить к примеру), вопрос был только по быстродействию и почему вместо MD5 использовали SHA1. Потестив вопрос снял.
|
|
04.03.2016, 11:49 | #16 |
Гость
|
Смотрю сейчас на CustVendSettle на метод checkTransDimension_RU и горько мне от от того что существует еще этот кривой и страшный метод (с точки зрения архитектуры и скорости).
И тянет пофилософствовать а заодно и подумать почему же хэши не использовали внятно в фин. аналитиках и как это сделать за микрософт ибо сопоставления иначе работают медленно а хочется на уровне вжиххх.. ну и традиционное доколе. Кто чего думает про это? Можно/нельзя/уже делаю? Ну и ессно использовать будем лучший и самый быстрый алгоритм SHA1 PS посмотрел на DimensionAttributeValueSet - обрадовался все уже почти готово оказывается Последний раз редактировалось axm2013; 04.03.2016 в 12:15. |
|
09.03.2016, 16:38 | #17 |
Гость
|
Измышления на заданную тему
Жаль нельзя редактировать
Добавлю для тех кому интересно и не очень идеи. Фин аналитики в частности есть собственно некая структура, представленная в табличках DimensionHierarchy DimensionHierarchyLevel Пример Аналитика Структура 1: 1. Важный поставщик 2. Важный ответственный Структура 2: 1. Важный поставщик 2. ответственный ни очем Структура 3: 1. Важный поставщик и т п и собственно значения: DimensionAttributeValueSet DimensionAttributeValueSetItem Пример Набор значений 1 1. Важный поставщик: Коля 2 Важный ответственный Вася 3. ответственный ни очем Оля Набор значений 2 1. Важный поставщик: Коля 3. ответственный ни очем Катя и т п Для каждого набора значений DimensionAttributeValueSet вырабатывается хэш по всей совокупности значений DimensionAttributeValueSetItem что позволяет быстренько в случае необходимости их сравнивать и радоваться жизни. И казалось бы радость близка но к сожалению не все так просто так как мы сравниваем в соответствии со структурой (например ) а они могут и не совпадать Пример Ищем по Структуре 3 Видимо создатели индусы или их собратья по разуму видели эту проблему и решили ее со свойственной им находчивостью захерачив кучку хэшей в табличку DimensionAttributeValueSet но далее кто-то их уволил либо просто настучал по башке и мысль остановилась на префиксе DEL_ Как же быть? Вариант видится в том чтобы пойти таки по пути индусов но не до конца: т.е хреначить хэши в соответствии с структурами. Но при этом мы проиграем в скорости в моменте. Чтобы такого не произошло видится мысль создавать их где то в стороне и по ночам пока все спят. Но правильно ли такое? Может есть лучше пути-дороги? Кто сможет решить проблему красиво и так чтобы безвестные кришны в микрософте утерлись от щастья? Есть ли еще мастера- архитекторы или уже все ушли в поля зеленой энергетики? Помогите! Подскажите! Последний раз редактировалось axm2013; 09.03.2016 в 16:52. |
|
11.04.2016, 09:35 | #18 |
Гость
|
Так как традиционно на сложный вопрос ответов нет, отвечу сам:
за счет денормализации ускорили сопоставление раз так в 55 (для любителей цифирок). Вопрос теперь лишь в том как красиво и правильно проводить денормализацию вообще и в частности по финансовым аналитикам. Больше теоретический, но мало ли: вдруг кто что умное скажет. Делитесь мыслями, не стесняйтесь. |
|
11.04.2016, 11:08 | #19 |
Участник
|
Может быть вы поподробнее опишете ваше решение с денормализацией ?
Пока не сложилось понимания, что же вы меняли. |
|
11.04.2016, 11:27 | #20 |
Гость
|
Одно из мест где сопоставление будет тупить и тупит однозначно это сравнение фин аналитик. Происходит это за счет возможно красивой но крайне херовой на больших объемах структурой нормализованных аналитик. Так как хотелось как лучше и без напрягов сделали аналог InventDim +- т.е де нормализовали структуру без слома.
|
|
Теги |
hash, md5, sha1, хэш |
|
|