|
![]() |
#1 |
Участник
|
Очень интересная дискуссия, давайте как- то зафиксируем промежуточные результаты?
1. Щас есть два решения для хранения аналитик - InventDim и Dimensions 2. Недостатки InventDim - требуется лишний джоин интересно, есть ли данные насколько такой джоин дорог в количественном отношении? - невозможность пострения составного индекса для поиска по полю таблицы и полю InventDim для запросов типа X++: select * from InventTrans where InventTrans.ItemID == _itemID join InventDim where InventTrans.InventDimID == InventDim.InventDimID && InventDim.InventLocationID == _inventLocationID Это мне кажется ограничение скорее аксапты - в SQL server, насколько я знаю, есть возможность строить индексы по функциям общего вида => мало что мешает строит индексы по полю связанной таблицы - требуется лазить в дополнительную таблицу для получения оттуда данных 3. Недостатки Dimensions - если объем InventDim существенно меньше объема inventTans, то inventTrans распухнет при переходе к схеме Dimensions (с другой стороны, есть менее постоянные аналитики, для которых это оправдано) - нетипизированность ( все значения должны быть одного размера) - это ограничение наложенное аксаптой так как нет типа "структура" а есть тип "массив" 4. недостатки перехода InventDim --> Dimensions - отвалятся модификации использующие существующую архитектуру Я все правильно понял или что-то упустил? С моей точки зрения недостатки inventDim в какой-то степени можно нивелировать развитием движка аксапты, SQL сервера или возможности использования второго первым... |
|
|
За это сообщение автора поблагодарили: mazzy (5). |
![]() |
#2 |
Участник
|
Вроде правильно.
Спасибо за резюме. Надо подумать. |
|
![]() |
#3 |
Участник
|
Цитата:
InventDim поддерживает аналитики не только строкового типа. Я так понимаю, это практически никто не использует, но, насколько я понмю, мы на каком-то проекте таки использовали |
|
![]() |
#4 |
Участник
|
Цитата:
inventTrans.SelectiveDims.SerialNo |
|
![]() |
#5 |
Участник
|
Сейчас полазил по доке на SQL на предмет освежить сведения по индексам - что-то не нашел такой возможности ! Для такого вида запросов наилучшим решением были-бы индексированные вьюшки - они действительно дают большой прирост производительности.
|
|
![]() |
#6 |
Участник
|
Вот это Creating Indexes on Computed Columns
Теоретически ничто не мешает сделать специфический вид Computed Column, для которого легко сообразит, что она часть приджоэниной таблицы и транслировать (хоть бы и на уровне аксапты) условие по таблице в условие по вычисляемому полю. Другое дело что проблему "селективных аналитик" это не решит - InventDim будет пухлым. Возможно стоит сделать, чтобы селективные были в типа Dimension, а неселективные - в InventDim. только надо предусмотреть некоторый путь перехода для модифицированного кода от текущей ситуации к этой новой. Тут такие мысли: 1. Найти такой код легко - он просто перестанет компилироваться 2. Для корректно написынных форм с редактированием InventDim можно, наверное, сделать автоматический конвертер 3. Для кода с InventDim надо как-то сделать, чтобы можно было легко преобразовывать старый код в новый и список рекомендаций - вот тут мне на ум ничего не приходит... |
|
Теги |
axapta, faq, inventdim, производительность |
|
![]() |
||||
Тема | Ответов | |||
dynamicsmatters: Performance and Inventdim PII | 17 | |||
dynamicsmatters: Dynamics AX Base Data Model Part II | 0 | |||
Dynamics AX Geek: #InventDimJoin | 0 |
|