почему в 1С технический ключ - это гуид а не число

  1. 9 г. назад

    Филосовский вопрос. Если я правильно понимаю, все таблички в 1С на техническом уровне имеют клчом гуид. Вопрос: а почему это гуид а не число? ведь для процессора куда проще сравнивать числа а не строки. представьте себе прирост производительсноти, если бы уникальность осуществлялась числами

    Ответы: (7) (31)
  2. так вопрос же в уникальности, а не сравнении

    Ответы: (8)
  3. гуид - это число (внезапно)

    Ответы: (5)
  4. ну да, так-то число

  5. вселенная-планета-страна-город-юрлицо-базаданных-таблица
    тогда можно и на трёхзначных уидах делать

  6. (2) слишком длинное...

    Ответы: (6) (10) (14)
  7. (5) тебя сильно [...]?

  8. (0) скорее всего был задел на обмен данными

  9. 31.08.2015 23:23:53 отредактировано ЗлобнийМальчик

    (1) ну почему же. Допустим я хочу найти все продажи по этому поставщику. У поставщика есть гуид. Я иду по таблице и для каждой строки сравниваю гуид в поле поставщик с моим гуидом. А теперь представьте что сравниваются не гуиды а Int

  10. 31.08.2015 23:25:47 отредактировано jsmith82

    гуид 128 бит, инт 32 или 64
    большая разница?

  11. (5) зато уникальное

  12. не, ну так-то автор прав. вернее, я поощряю его изыскания
    а почём там выигрыш будет?

    Ответы: (12) (14)
  13. (11) в случае 1с выигрыша не будет

    Ответы: (14)
  14. [smile=:D]

  15. (5) а насколько она нужна - уникальность эта? вот зачем кодам поставщиков быть отличными от кодов номенклатуры? пусть код материалов будет уникальным для материалов
    (11) (12) не знаю. Но саповцы рассказывают, что одним из важнейших преимуществ их column based database является то, что она хранит в строках только ключи типа число и к каждой колонке есть свой словарь который мапит эти числа к реальным значениям. За счет этого, де, обеспечивается высокая производительность - поскольку сравнивать числа де куда быстрее...

    Ответы: (15) (19)
  16. +(14) это все равно как все типы в 1С стали ссылочными по сути

  17. европейская плешь проедает моцк 1сников

  18. а чо тебя вопрос так задел? вопрос актуален как-то?

    Ответы: (18)
  19. (17) мне недавно пришлось написать агрегатор для иерархий. В процессе написания выяснилось, что представление любого значения любой колонки таблицы как числа ключа типа инт + мэппинговая таблица для колонки - богоугодно и значительно повышает производительность. И тут я читаю, что та же самая идея - одна из основ повышения производитльности в хане. Я начал думать над аналогиями...

  20. (14) Как процесс маппинга протекает? Ничего не тормозит?

    Ответы: (22)
  21. На самом деле 95% времени уходит не на сравнение чисел, а на операции с памятью (чтение и реаллокация).

    Ответы: (22)
  22. Единственный минус GUID - размер индекса не его основе.

    Ответы: (22)
  23. 01.09.2015 02:05:29 отредактировано ЗлобнийМальчик

    (19) да вроде бы нет... В принципе то, уникальных значений одного типа редко бывает очень много. Те же номера документов. А так то я думаю они хэши юзают - для тех же строк...
    (20) ну, если вся база в памяти, то это не настолько проблема
    (21) ну да, может вы и правы... надо бы мне еще на тему column based database почитать...

  24. 01.09.2015 06:35:57 отредактировано admin govnoforuma

    Это как работает? Например мне нужно найти слово "хрен", я сначала ищу его в таблице маппинга, нахожу, беру из другой колонки числовой идентификатор, потом ищу по этому идентификатору в другой таблице? Так?

    Ответы: (26)
  25. угу.

  26. Инт будет уникален в пределах таблицы. Гуид будет уникален в пределах видимой вселенной (почти). Поиск по гуиду - это не та операция, которая тормозит 1с, как верно было отмечено.

  27. (23) Хороший поиск по хэш-функции, а не маппинг

    А гуиды сделаны для того, чтобы создавать отношения межу колонкам

  28. К интам префиксы делать сложнее

  29. Объясните новичку.
    "мне нужно найти слово "хрен", я сначала ищу его в таблице маппинга" - т.е. мы ищем именно строку "хрен", а не число?
    Т.е. это обычный индекс?
    Если сделать обычный некластерный индекс по GUID, то будет то же самое?

    Ответы: (29)
  30. (28) Строку конечно, число ведь мы не знаем. Нет, это не обычный индекс. Это как два обычных индекса. Наверняка ведь в таблице маппинга эта колонка тоже проиндексирована.

    Это как если бы наименование контрагента в справочнике контрагенты хранилось не как строка, а как ссылка на справочник наименованияКонтрагентов в котором оно бы хранилось как ссылка на справочник наименованияНаименованийКонтрагентов строка.

  31. гуид выбран из-за рбд. мы все помним какая х.ня была в 7

    Ответы: (32) (34)
  32. (0) - так везде делают

  33. (30) до сих пор плотно работаю с 7. Не могу спомнить. Напомни

    Ответы: (33)
  34. (32) 8-ричная система

    Ответы: (35) (36)
  35. (30) какая? что-то не припомню...

  36. (33) 36-ричная вроде...

    Ответы: (37)
  37. (33) т.е. Я не смогу создать более 10'000'000 объектов одного типа/вида в одной базе?

    Ответы: (38)
  38. (35) да, точно. запамятовал, давно не копался уже

  39. (36) память подвела

  40. _IdToStr()
    Синтаксис:
    _IdToStr()
    Назначение:
    Возвращает строку - результат преобразования 10-тичного значения в 36-ричное.
    Параметры:
    - выражение со значением типа число.

    _StrToID()
    Синтаксис:
    _StrToID()
    Назначение:
    Возвращает число - результат преобразования 36-ричного значения в 10-тичное.
    Параметры:
    - выражение со значением типа строка.

или зарегистрируйтесь чтобы ответить!