У меня есть система, которая включает в себя множество связанных таблиц. Подумайте о стандартной категории / продукт / заказ / клиент / заказ сценария. Некоторые таблицы имеют собственные ссылки (например, категории). Ни одна из таблиц не является особенно большой (около 100 тыс. Строк с приблизительным масштабом до 1 млн. Строк). У этих данных есть много аспектов, которые мне нужно рассмотреть, но их необходимо запрашивать практически в реальном времени. Я также не знаю, какие измерения интересуют конкретного пользователя - это может быть один или несколько критериев в многочисленных таблицах. Вещи могут варьироваться от
- Дайте мне все с категорией куртки
- Дайте мне все с категорией курток-> Парки красного цвета, купленные в прошлом месяце в Нью-Йорке.
- Дайте мне все, что не было куплено в Нью-Йорке и стоит более 100 долларов.
В настоящее время у нас очень длинный SP, который использует подход «каскадных данных» - мы идем таблица за таблицей, фильтруя все во временную таблицу, используя те критерии, которые были указаны для этой таблицы. Для следующей таблицы мы присоединяем текущую временную таблицу к любой используемой таблице и применяем новый набор фильтров к новой временной таблице. Это работает, но управляемость и производительность медленные. Мне нужно что-то лучше.
Мне нужен новый подход к этой проблеме. Это явно необходимость в OLAP, возможно, с использованием звездообразной схемы. Работает ли это в реальном времени? Можно ли настроить его на работу в реальном времени? Должен ли я использовать индексированные представления для создания набора денормализованных таблиц? Должен ли я полностью разгрузить это вне базы данных?
К вашему сведению Мы используем Sql Server.