Вход | Регистрация
 

Как лучше спроектировать регистр

Как лучше спроектировать регистр
Я
   lanc2233
 
20.11.20 - 12:51
Есть регистр, что-то типа лога.
Подразумеваются что в нем будет много записей, операции чтения, поиск записей и их редактирование через МенеджерЗаписи, изменение записей при проведении документов.

Одно из измерений регистра будет иметь составной тип "ЗаказПокупателя", "ЗаказПоставщику" и так около 5-7 типов (в процессе может добавляться).

Как лучше поступить, с точки зрения производительности : делать одно измерение с составным типом, или сделать 5-7 разных измерений с разными типами?

Когда-то вроде читал, что у реквизитов с составными типами нелинейно растет нагрузка на БД, особенно если включена индексация по ним.
   mikecool
 
1 - 20.11.20 - 12:53
на каждый тип документа добавлять новое измерение? оО
   ДенисЧ
 
2 - 20.11.20 - 12:58
Надо не "когда-то читать", а взять и посмотреть на структуру таблиц. Потом смоделировать ситуацию и покурить планы запросов.
Но вот идея "5-7 разных измерений с разными типами" - она однозначно влечёт за собой канделябр.
   VladZ
 
3 - 20.11.20 - 13:00
(0) "Есть регистр, что-то типа лога." - убрать нахрен все ссылочные объекты. Оставить только текст.
   youalex
 
4 - 20.11.20 - 13:04
(0) одно измерение - уникальный идентификатор. Писать через НаборЗаписей.Записать(Ложь)
Документ - в реквизит, и индекс на него, если надо.
   lanc2233
 
5 - 20.11.20 - 13:07
Да, крутое решение. Спасибо.
   youalex
 
6 - 20.11.20 - 13:09
(5) Только учти, что индекс работает только по одному реквизиту/ресурсу, в отличие от индекса по измерениям.  
Т.е. если у тебя стоит в двух реквизитах стоит индексировать, эти индексы не "складываются", будет работать только один из них.
   H A D G E H O G s
 
7 - 20.11.20 - 13:13
(6) Реквизиты не складываются, а вот Реквизит и Измерение складывается.
   H A D G E H O G s
 
8 - 20.11.20 - 13:15
Решение с UUID забавно. Но как его потом юзать в запросах?
   youalex
 
9 - 20.11.20 - 13:15
(7) Да, там Реквизит+Измерения, Измерение штатно выбросить нельзя, увы.
   ДенисЧ
 
10 - 20.11.20 - 13:15
(8) Зачем тебе запрос по логам?
   H A D G E H O G s
 
11 - 20.11.20 - 13:19
(0) Автор, помни, кстати, как только ты имеешь РС с 2 и более измерениями и НаборЗаписей.Записать(Истина), ты можешь столкнуться с загадочным ожиданием на блокировке.
   H A D G E H O G s
 
12 - 20.11.20 - 13:19
(10) Действительно, глупость какая.
   Новиков
 
13 - 20.11.20 - 13:23
(4) Если в измерении стоит > 1 документа, то в типовых сделано где как:
- где просто составной тип,
- где определяемый тип, который сам по себе составной.

(8) Пост.обработкой, как еще? Получил датасет, преобразуй уникальный идентификатор обратно к документу. Я слыхал так запариваются те, кто логи куда-то складывает отдельно - эластики и прочее. ХЗ, насколько это актуально для ТС.
   youalex
 
14 - 20.11.20 - 13:26
(13) не, там просто Новый УникальныйИдентификатор(), он с данными никак не связан.
   mistеr
 
15 - 20.11.20 - 13:44
(10) Ладно запрос, но зачем "изменение записей при проведении документов"?
   H A D G E H O G s
 
16 - 20.11.20 - 13:46
Я бы сделал составным Измерением ссылку на док.
Ну че там такого - лишние 5 байт в индексе.
Зато удобно и кластерно.
   Новиков
 
17 - 20.11.20 - 14:14
(11) >>и НаборЗаписей.Записать(Истина), ты можешь столкнуться с загадочным ожиданием на блокировке.

В типовых тяжелые РС, статусы доков и подобное, именно так и пишутся, с Истиной.
   H A D G E H O G s
 
18 - 20.11.20 - 14:17
(17) Ну может там одно измерение.
1С накладывает упр. блокировку на область набора записей, по которой не задан отбор с Записать(Истина). Чтобы не было фантомов.
Записать(Ложь) не допустит фантома на уровне вставки в индекс СУБД.
Вроде так.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.