Обращение за советом для Oracle приложений, интенсивно использующих данные - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь разработать приложение, использующее Oracle в качестве серверной части базы данных. Приложение рассчитает несколько статистических данных из различных таблиц в базе данных. Интерфейс, скорее всего, будет веб-приложением, и этот интерфейс будет отображать различные диаграммы и рассчитанную статистику. Теперь я полагаю, что было бы более эффективно выполнять вычисления в базе данных, а не на уровне обслуживания, потому что указанные вычисления необходимо будет выполнять для каждого веб-запроса. В таком случае я не уверен, какой механизм использовать. (например, хранимая процедура, функция, представление). Чтобы проиллюстрировать, что я собираюсь сделать, предположим, что я хочу вести статистику оценок многих студентов. Я хотел бы иметь веб-интерфейс, который позволяет мне просматривать эту статистику по каждому студенту, а также по системе «все включено». Некоторые статистические данные зависят от совокупных показателей (например, среднего, минимального, максимального) всех оценок учащихся, а некоторые статистические данные зависят только от отдельных учащихся. В этой ситуации каждый раз, когда добавляется или обновляется запись, агрегаты должны быть пересчитаны. Итак, я предполагаю, что если бы у меня была специальная таблица, содержащая все рассчитанные значения, которые мне нужны, и триггер (ы) для пересчета всего, когда запись добавляется / обновляется, тогда все, что мне нужно было бы сделать, из точки веб-запроса -view - позволяет уровню сервиса извлекать требуемые значения из этой специальной таблицы. Я просто не уверен, что это лучший способ go или нет, поэтому я прошу сообщество дать какие-либо комментарии / советы. Примечание. Хотя я использую Oracle, я открыт для использования PostgreSQL или mySQL.

Заранее спасибо

1 Ответ

1 голос
/ 05 мая 2020

Сценарий, который вы описываете, идеально подходит для использования материализованных представлений. Они могут быть спроектированы так, чтобы обновлять sh автоматически (и постепенно) каждый раз, когда исходные данные обновляются вашим приложением. Вычисления будут встроены в определение представления. Никаких триггеров и, скорее всего, хранимых процедур не потребуется, если ваши расчеты не включают несколько шагов. Проверьте здесь: https://oracle-base.com/articles/misc/materialized-views и здесь: https://medium.com/oracledevs/lightning-fast-sql-with-real-time-materialized-views-12-things-developers-will-love-about-oracle-54bcc9eac358 для получения дополнительной информации.

...