|
![]() |
#1 |
Мрачный тип
|
В курсе, раздел "простейшие одноклеточные"
Я скорее всего не совсем внятно выразился, не добавление , а его следствие пугает - общее число уровней аналитики, используемых в проводках, возрастает более быстрыми темпами, чем максимальное число одновременно используемых уровней. Тип счета в общем журнале или группировка в профилях разноски ОС и номенклатуры - есть зло ? Может быть для работы ними с каждого типа счета/группировки создать отдельное поле ссылки согласно классике одноклеточного мира ? ![]() Цитата:
Где Вы его увидели Enum в коде и отказ от таблицы настроек складских моделей ? На MoprhX - не жалко, на Аксапту - иногда жалко ![]() Цитата:
Цитата:
Секьюрити на уровни аналитики складской ? Можно в студию пример бизнес-процесса, когда понадобится раздавать разный доступ на разные уровни ? В одном заказе один менеджер выбирает цвет, второй менеджер размер, а знать, что выбрал другой, им не позволительно ? Не представляю такой ситуации в принципе ... А что с RLS не так ? Запрос при lookup на таблицы-справочники разрезов складской аналитики как строился согласно Relations на InventDim так и будет строиться, RLS как отрабатывал - так должен отработать.Настраивать RLS для строк документа, имеющих ссылку на складскую аналитику, в зависимости от ее значений ? Не всегда подобное необходимо, хотя если припрет - да, сложнее станет, но отнюдь не смертельно. ItemId, поле-массив Enum'ов, поле-массив ссылок - пока в ограничения платформы не упрется. Такой вот , блин, enum. ![]() Цитата:
Вырабатывает дисциплинированность и внимательность. Симметрично. Особливо когда понимаю возможности платформы системы и сравниваю с тем, что и как на ней создано. P.S. Цитата:
![]() Буду как один академик-атомщик на заре становления атомной отрасли, из-за секретности он был под псевдонимом Хренов. Вот поди потешался мужик, при отправке докладов в политбюро ![]() ![]() ![]()
__________________
Мы летаем, кружимся, нагоняем ужасы ... Последний раз редактировалось TasmanianDevil; 27.03.2008 в 12:38. Причина: знаки препинания и очепятки |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от TasmanianDevil
![]() В курсе, раздел "простейшие одноклеточные"
Я скорее всего не совсем внятно выразился, не добавление , а его следствие пугает - общее число уровней аналитики, используемых в проводках, возрастает более быстрыми темпами, чем максимальное число одновременно используемых уровней. Цитата:
Сообщение от TasmanianDevil
![]() Тип счета в общем журнале или группировка в профилях разноски ОС и номенклатуры - есть зло ? Может быть для работы ними с каждого типа счета/группировки создать отдельное поле ссылки согласно классике одноклеточного мира ?
![]() Может создадите новую ветку и выскажетесь подробно и с аругментами? Цитата:
Сообщение от TasmanianDevil
![]() Enum не в коде, он в AOT, и использовать его предлагается как раз в таблице настроек моделей(массив на основе этого Enum), определяя какой уровень складской аналитики ссылается на какой справочник. В дальнейшем, в создаваемых строках документов, где есть привязка к складской аналитике, упомянутый массив из модели складской аналитики, соответствующей номенклатуре строки документа, скопируется в соответствующий массив в InventDim и, согласно прописанных Relations, определит поведение lookup при выборе на соответсвующем уровне аналитики.
Где Вы его увидели Enum в коде и отказ от таблицы настроек складских моделей ? схему данных можно? Цитата:
Сообщение от TasmanianDevil
![]() Секьюрити на уровни аналитики складской ? Можно в студию пример бизнес-процесса, когда понадобится раздавать разный доступ на разные уровни ?
В одном заказе один менеджер выбирает цвет, второй менеджер размер, а знать, что выбрал другой, им не позволительно ? Не представляю такой ситуации в принципе ... Цитата:
Сообщение от TasmanianDevil
![]() А что с RLS не так ? Запрос при lookup на таблицы-справочники разрезов складской аналитики как строился согласно Relations на InventDim так и будет строиться, RLS как отрабатывал - так должен отработать.Настраивать RLS для строк документа, имеющих ссылку на складскую аналитику, в зависимости от ее значений ? Не всегда подобное необходимо, хотя если припрет - да, сложнее станет, но отнюдь не смертельно.
Ничего не понимаю. Цитата:
Цитата:
|
|
![]() |
#3 |
Участник
|
Очень интересная дискуссия, давайте как- то зафиксируем промежуточные результаты?
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). |
![]() |
#4 |
Участник
|
Вроде правильно.
Спасибо за резюме. Надо подумать. |
|
![]() |
#5 |
Участник
|
Цитата:
InventDim поддерживает аналитики не только строкового типа. Я так понимаю, это практически никто не использует, но, насколько я понмю, мы на каком-то проекте таки использовали |
|
![]() |
#6 |
Участник
|
Цитата:
inventTrans.SelectiveDims.SerialNo |
|
![]() |
#7 |
Участник
|
Сейчас полазил по доке на SQL на предмет освежить сведения по индексам - что-то не нашел такой возможности ! Для такого вида запросов наилучшим решением были-бы индексированные вьюшки - они действительно дают большой прирост производительности.
|
|
![]() |
#8 |
Участник
|
Вот это Creating Indexes on Computed Columns
Теоретически ничто не мешает сделать специфический вид Computed Column, для которого легко сообразит, что она часть приджоэниной таблицы и транслировать (хоть бы и на уровне аксапты) условие по таблице в условие по вычисляемому полю. Другое дело что проблему "селективных аналитик" это не решит - InventDim будет пухлым. Возможно стоит сделать, чтобы селективные были в типа Dimension, а неселективные - в InventDim. только надо предусмотреть некоторый путь перехода для модифицированного кода от текущей ситуации к этой новой. Тут такие мысли: 1. Найти такой код легко - он просто перестанет компилироваться 2. Для корректно написынных форм с редактированием InventDim можно, наверное, сделать автоматический конвертер 3. Для кода с InventDim надо как-то сделать, чтобы можно было легко преобразовывать старый код в новый и список рекомендаций - вот тут мне на ум ничего не приходит... |
|
![]() |
#9 |
Участник
|
Коллеги, а как была релизована аналитика в XAL ?
В упомянутом блоге Sven ссылается на XAL. Плюс интересно сравнить с Oracle и SAP Кто в курсе как там реализованы аналитики ? |
|
![]() |
#10 |
Участник
|
Цитата:
Размера и цвета не было. Склад, Серийный номер, Партия, Паллета, Ячейка были в inventDim. ГТД локализаторы также затолкали в InventDim (в Аксапту решение было перенесено из XAL). По этому поводу сильно возмущался Pavel, насколько я помню. Насколько я помню, одно из преимуществ альтернативной локализации XAL, которое предлагал Pavel, это - другая реализация работы с ГТД. Цитата:
В Навижине InventDim'а точно нет, есть специализированные поля, специализированные таблицы и специализированные индексы для каждой аналитики. |
|
![]() |
#11 |
Member
|
Цитата:
Сообщение от mazzy
...
Конфигурация была отдельным полем. Размера и цвета не было. Склад, Серийный номер, Партия, Паллета, Ячейка были в inventDim. ...
__________________
С уважением, glibs® |
|
![]() |
#12 |
Member
|
Цитата:
Сообщение от Logger
...
Коллеги, а как была релизована аналитика в XAL ? В упомянутом блоге Sven ссылается на XAL. Плюс интересно сравнить с Oracle и SAP Кто в курсе как там реализованы аналитики ? ... В проводках аналитик нет вообще. Зато есть отдельная таблица, в которой структура примерно такая: - ссылка на таблицу проводок - ссылка на запись - вид аналитики - значение аналитики (может быть несколько полей-значений под разные типы данных) Соответственно для каждой проводки хранится n записей в списке аналитик. Видел такое в одной из систем. На практике не пробовал. Да в то время у меня и навыков таких еще не было. Думать на эту тему лениво. Весна. Хочется думать о чем-то другом ![]() А вообще в теории задачи грубо делятся на транзакционные (OLTP) и аналитические (OLAP). Ну и, как правило, если на некой структуре данных транзакционные операции выполняются оптимально, то аналитические тормозят. Или наоборот. Для OLAP самой эффективной с т.з. производительности структурой является MOLAP, как известно из теории. Это когда всего одна таблица со всеми возможными измерениями. Она же самая затратная с т.з. потребления места на диске. Она является противоположностью реляционным многотабличным структурам. И неудобна для транзакционных операций (скорость изменения данных, блокировки, и т.п.). В общем, с высокой степенью вероятности как вы аналитики не организуйте, всегда найдутся запросы (практикам вместо "запросы" читать "задачи"), на которых выбранная структура будет тормозить (точнее, будет неэффективна). В общем, не стоит искать более правильную структуру (если в текущую не были заложены ошибки). Если упростить до двух структур и двух ситуаций, то в первой ситуации Структура 1 будет эффективной, а Структура 2 неэффективной. Во второй ситуации будет наоборот. Это как сравнивать Камаз и Жигули. Или самолет и автомобиль. Это упрощенно, "на счетных палочках", но примерно так и есть на самом деле. В свете темы ответственности за свои советы, которую поднял Маззи, еще раз повторю. Это были некоторые теоретические выкладки. "Пища для размышлений". Чтобы адекватнее воспринимать окружающий мир. Прикладной аспект осветил fed.
__________________
С уважением, glibs® |
|
|
За это сообщение автора поблагодарили: TasmanianDevil (3). |
![]() |
#13 |
Участник
|
Цитата:
Цитата:
Ни в коем случае не на одну таблицу проводок, поскольку аналитики где-только не появляются: и в прайсах, в заказах, в закупках, в производстве, в планировании, в журналах и т.п. Оно и видно ![]() |
|
|
За это сообщение автора поблагодарили: oip (12). |
![]() |
#14 |
Member
|
Цитата:
Сообщение от mazzy
...
Вопрос был про XAL. Ответ был тоже про XAL. ...
__________________
С уважением, glibs® |
|
![]() |
#15 |
Участник
|
И вообще, должен придти fed и расставить все на свои места!
|
|
![]() |
#16 |
Участник
|
TasmanianDevil, я правильно понял, что одно и то же поле будет в таблице иметь разный смысл (и конуептцально тип) в зависимости от настроек конфигурации?
А как интересно будет выглядеть тогда запрос "выбрать все с данного слклада" X++: select x from t1 where (dimType[1] == DimType::Location && dimValue[1] == _location) || (dimType[2] == DimType::Location && dimValue[2] == _location) || (dimType[2] == DimType::Location && dimValue[2] == _location) |
|
![]() |
#17 |
Мрачный тип
|
Цитата:
Сообщение от belugin
![]() TasmanianDevil, я правильно понял, что одно и то же поле будет в таблице иметь разный смысл (и конуептцально тип) в зависимости от настроек конфигурации?
А как интересно будет выглядеть тогда запрос "выбрать все с данного слклада" X++: select x from t1 where (dimType[1] == DimType::Location && dimValue[1] == _location) || (dimType[2] == DimType::Location && dimValue[2] == _location) || (dimType[2] == DimType::Location && dimValue[2] == _location) Решения : 1) Увеличить кол-во запросов (N уровней -N запросов) 2) Общие для всех моделей разрезы аналитики использовать в едином для всех разрезе(порядок и уровень). Допустим общие у нас разрезы - это "склад" и "кладовщик", первым уровнем для всех моделей будет "склад", вторым - "кладовщик". Экзотику , специфичную для каждой конкретной модели опускать на нижние уровни. У обоих вариантов есть недостатки - но их можно считать это платой за универсальность
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
![]() |
#18 |
Moderator
|
В общем - в подробности я пока лезть не буду (времени нету), но по моему при подобной степени модификации Аксапты, дальнейшие затраты на поддержку и развитие системы, превысят стоимость ОЧЕНЬ крутого сервера БД. При нынешнем росте зарплат в России, инвестиции в железо в 95% случаев оказываются выгоднее, чем затраты на оптимизацию.
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
![]() |
#19 |
Участник
|
|
|
![]() |
#20 |
Moderator
|
Да в общем - имелись в виду любые модификации, связанные со слишком глубоким изменением существующего подхода к работе со складскими проводками и складской аналитике
![]() ![]() Кстати - вот одна из моих любимых статей в jargon file: http://www.catb.org/~esr/jargon/html/B/brute-force.html |
|
|
За это сообщение автора поблагодарили: belugin (5), aidsua (1). |
Теги |
axapta, faq, inventdim, производительность |
|
![]() |
||||
Тема | Ответов | |||
dynamicsmatters: Performance and Inventdim PII | 17 | |||
dynamicsmatters: Dynamics AX Base Data Model Part II | 0 | |||
Dynamics AX Geek: #InventDimJoin | 0 |
|