|
Как хранить ссылки? | ☑ | ||
---|---|---|---|---|
0
Dolphinbet
28.01.14
✎
11:24
|
Как лучше хранить ссылки на элементы справочников из других баз идентичной конфигурации? Есть три варианта Строка(36), УникальныйИдентификатор, в виде "битых" ссылок. Какой вариант предпочтительней с точки зрения производительности запросов с участием этих полей, что лучше индексируется?
|
|||
1
Ненавижу 1С
гуру
28.01.14
✎
11:26
|
(0) сначала скажи зачем?
если нужно будет его представление, то лучше и хранить как идентичный справочник |
|||
2
Defender aka LINN
28.01.14
✎
11:27
|
(0) Ссылка - это кроме ИД, еще и тип. Которого в другой базе элементарно может и не быть.
|
|||
3
H A D G E H O G s
28.01.14
✎
11:27
|
(2) "идентичной конфигурации"
|
|||
4
Адинэснег
28.01.14
✎
11:29
|
(0)о че бы объекты не хранить?
|
|||
5
portowyi
28.01.14
✎
11:29
|
ЗначениеВСтрокуВнутр(), ЗначениеИзСтрокиВнутр() - использую при обмене через COM соединение.
|
|||
6
H A D G E H O G s
28.01.14
✎
11:29
|
Храни УникальныйИдентификатор
|
|||
7
Dolphinbet
28.01.14
✎
11:29
|
(1) Да, представление нужно будет
|
|||
8
Ненавижу 1С
гуру
28.01.14
✎
11:32
|
(7) тогда прочти (1) полностью
|
|||
9
Maxus43
28.01.14
✎
11:33
|
сами элементы справочника и храни... что мешает?
|
|||
10
Dolphinbet
28.01.14
✎
11:35
|
(8) Из-за представления создавать идентичные элементы справочника? Нужно только ссылка+представление
|
|||
11
Ненавижу 1С
гуру
28.01.14
✎
11:35
|
(10) смотри тогда (9) раз непонятно
|
|||
12
Dolphinbet
28.01.14
✎
11:38
|
Непонятно зачем мне в базе создавать копии элементов справочников, если есть ссылка на справочник во внешней базе всегда через веб-сервис например можно получить данные этого элемента. Тем более если эти справочники большие...
|
|||
13
Ненавижу 1С
гуру
28.01.14
✎
11:39
|
(12) а скорость чтения?
большие это насколько? |
|||
14
sapphire
28.01.14
✎
11:40
|
ЗначениеXML
|
|||
15
sapphire
28.01.14
✎
11:40
|
или (6)
|
|||
16
Dolphinbet
28.01.14
✎
11:43
|
(13) скорость меньше, но это не критично. К примеру насколько для Вас критична скорость загрузки страниц при работе в интернете? Никто же не тащит всю информации на ваш компьютер. Или к примеру работа в веб-клиенте 1С
|
|||
17
Ненавижу 1С
гуру
28.01.14
✎
11:44
|
(16) ты помнишь как миста тормозила?
|
|||
18
Dolphinbet
28.01.14
✎
11:45
|
(6) А как хранится одинэсовский УникальныйИдентификатор в базе данных?
|
|||
19
Dolphinbet
28.01.14
✎
11:47
|
(17) нет, не помню)
|
|||
20
H A D G E H O G s
28.01.14
✎
11:48
|
(18) Что конкретно тебя интересует?
|
|||
21
Dolphinbet
28.01.14
✎
11:50
|
(20) Тип значения в БД SQL.. на индексирование же влияет тип данных.
|
|||
22
H A D G E H O G s
28.01.14
✎
11:51
|
(21) binary(16)
Так же, как у ссылки. Все норм. |
|||
23
Ненавижу 1С
гуру
28.01.14
✎
11:51
|
(21) бинарный тип
|
|||
24
Dolphinbet
28.01.14
✎
11:52
|
ну т е для индексирования это лучше чем Строка(36)?
|
|||
25
H A D G E H O G s
28.01.14
✎
11:53
|
Да
|
|||
26
Dolphinbet
28.01.14
✎
11:53
|
Спасибо, тогда остановлюсь на таком варианте. Сначала сделал строковый тип, но возникли сомнения, решил уточнить)
|
|||
27
Maxus43
28.01.14
✎
11:53
|
искать тут оптимальный тип... не в этом проблема будет, а в постоянном дёрганье веб-сервиса на получение данных по этому элементу. То, что ты мог запросами узнать у себя в "общей" базе - придётся дёргать веб-сервис
|
|||
28
Dolphinbet
28.01.14
✎
11:54
|
(27) вроде как скоро обещают REST сделать, он вроде производительней чем SOAP
|
|||
29
Maxus43
28.01.14
✎
12:13
|
(28) если бы да кабы... Везде где видел подобные реализации "общих справочников" аля НСИ - хранят спокойно сами элементы, обмениваются или по планам обмена, или просто сериализуют элемент в файл и кидают спокойненько в другую базу. Более универсально и надёжно это вот, вдруг потом понадобится реально эта информация? Делать дак на века...
|
|||
30
Dolphinbet
28.01.14
✎
14:34
|
Такс, первый глюк с УникальнымИдентификаторм. Создаю ТЗ с типом колонки УникальныйИдентификатор, помещаю ТЗ во временную таблицу - "тип не может быть выбран в запросе".
|
|||
31
Рэйв
28.01.14
✎
14:36
|
ЗначениеВСтрокуВнутр.
Если правда идентичные конфы конечно |
|||
32
Dolphinbet
28.01.14
✎
15:02
|
(31) ЗначениеВСтрокуВнутр это строка, причем длиннее 36 символов, если уж хранить в строковом виде тогда, тогда лучше Строка(УникальныйИдентификатор)
|
|||
33
Maxus43
28.01.14
✎
15:11
|
ТЗ точно типизирована?
|
|||
34
Рэйв
28.01.14
✎
15:14
|
(32)А УникальныйИдентификатор потом пербором по всем таблицам будешь выискивать?
|
|||
35
Maxus43
28.01.14
✎
15:15
|
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("УИД", Новый ОписаниеТипов("УникальныйИдентификатор")); |
|||
36
Широкий
28.01.14
✎
15:16
|
Я бы в качестве строки ГУИД хранил.
XMLСтрока/XMLЗначение кстати быстрее всего отрабатывают |
|||
37
Dolphinbet
28.01.14
✎
15:16
|
(34) Нет, зачем?
(35) Да, так и есть |
|||
38
SeraFim
28.01.14
✎
15:18
|
в БСП подсистема обмен данными - как строку хранят (РС СоответствияОбъектовИнформационныхБаз)
|
|||
39
Dolphinbet
28.01.14
✎
15:19
|
(38) как строку не очень хорошо, но возможно придется. Еще вариант хранить "битые" ссылки
|
|||
40
Dolphinbet
28.01.14
✎
15:23
|
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("УИД", Новый ОписаниеТипов("УникальныйИдентификатор")); НС = ТЗ.Добавить(); Нс.УИД = Новый УникальныйИдентификатор; Запрос = Новый Запрос("ВЫБРАТЬ | времТЗ.УИД |ПОМЕСТИТЬ времТЗ |ИЗ | &времТЗ КАК времТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | времТЗ.УИД |ИЗ | времТЗ КАК времТЗ"); Запрос.УстановитьПараметр("времТЗ", ТЗ); Запрос.Выполнить().Выбрать(); {Форма.Форма(25)}: Ошибка при вызове метода контекста (Выполнить): {(2, 2)}: Тип не может быть выбран в запросе <<?>>времТЗ.УИД Запрос.Выполнить().Выбрать(); по причине: {(2, 2)}: Тип не может быть выбран в запросе <<?>>времТЗ.УИД |
|||
41
Широкий
28.01.14
✎
15:23
|
(39) Битые ссылки это хрень. Нет гарантии что ид-шники таблиц будут совпадать
|
|||
42
Dolphinbet
28.01.14
✎
15:30
|
(41) тогда придется в виде строки, жаль что УникальныйИдентификатор не прокатил
|
|||
43
ИС-2
naïve
28.01.14
✎
15:31
|
(0) я храню ввиде текстовых GUIDов в базе приемнике. В основной базе добавил общий реквзит GUID.
В запросах связываю данные по этому реквзиту. Пользователи даже не знают, что данные для отчетов берутся из другой базы. Минус, что приходится использовать код т.к внешние источники данных не могут работать с другими таблицами :( (1) например, база делится на 2. База оперативного учета (регистры хранят только актуальную информацию) и аналитическую базу (хранится история заполнения регистра). |
|||
44
Широкий
28.01.14
✎
15:32
|
(42) Если обмен односторонний - можно элементы в примнике создавать с тем же ид-шником, что и в источнике.
Тогда заморачиватся с соответствиями не надо |
|||
45
ИС-2
naïve
28.01.14
✎
15:32
|
(40) все нормально. GUIDы нельзя выбрать в запросе, поэтому храню как текст(36)
|
|||
46
Dolphinbet
28.01.14
✎
15:34
|
(45) ладно, переделываю обратно на Строка(36)....
|
|||
47
H A D G E H O G s
28.01.14
✎
16:37
|
| времТЗ.УИД
|ПОМЕСТИТЬ времТЗ |ИЗ | &времТЗ КАК времТЗ |; | Заменить на | ВЫРАЗИТЬ (времТЗ.УИД как Справочник.Номенклатура) как УИД |ПОМЕСТИТЬ времТЗ |ИЗ | &времТЗ КАК времТЗ |; | |
|||
48
Dolphinbet
03.02.14
✎
09:40
|
(47)хм, в таком случае я не уверен, что СУБД построит правильный план запроса, при соединении таблиц по полю с выражением ВЫРАЗИТЬ:
| ВЫРАЗИТЬ (времТЗ.УИД как Справочник.Номенклатура) как УИД |ПОМЕСТИТЬ времТЗ |ИЗ | &времТЗ КАК времТЗ |; | ... ИЗ времТЗ ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствияНоменклатуры КАК СоответствияНоменклатуры ПО времТЗ.УИД = ВЫРАЗИТЬ (СоответствияНоменклатуры.ИдНоменклатуры КАК Справочник.Номенклатура) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |