Очень интересная дискуссия, давайте как- то зафиксируем промежуточные результаты?
1. Щас есть два решения для хранения аналитик - InventDim и Dimensions
2. Недостатки InventDim
- требуется лишний джоин
интересно, есть ли данные насколько такой джоин дорог в количественном отношении?
- невозможность пострения составного индекса для поиска по полю таблицы и полю InventDim
для запросов типа
X++:
select * from InventTrans
where InventTrans.ItemID == _itemID
join InventDim
where InventTrans.InventDimID == InventDim.InventDimID
&&
InventDim.InventLocationID == _inventLocationID
тут нельзя сделать составной индекс по <ItemID, inventLocationID> так как они в разных таблицах
Это мне кажется ограничение скорее аксапты - в SQL server, насколько я знаю, есть возможность строить индексы по функциям общего вида => мало что мешает строит индексы по полю связанной таблицы
- требуется лазить в дополнительную таблицу для получения оттуда данных
3. Недостатки Dimensions
- если объем InventDim существенно меньше объема inventTans, то inventTrans распухнет при переходе к схеме Dimensions (с другой стороны, есть менее постоянные аналитики, для которых это оправдано)
- нетипизированность ( все значения должны быть одного размера) - это ограничение наложенное аксаптой так как нет типа "структура" а есть тип "массив"
4. недостатки перехода InventDim --> Dimensions
- отвалятся модификации использующие существующую архитектуру
Я все правильно понял или что-то упустил?
С моей точки зрения недостатки inventDim в какой-то степени можно нивелировать развитием движка аксапты, SQL сервера или возможности использования второго первым...