с использованием JPA (гибернация) VS хранимых процедур

Я работаю над проектом, используя ZK Framework, Hibernate, Spring и Mysql.

Мне нужно создать несколько диаграмм из базы данных Mysql, но после того, как я подсчитал количество объектов, которые мне нужны для расчета значений этих диаграмм, я обнаружил, что это более 1400 объектов и такое же количество запросов и транзакций.

Поэтому я подумал, что если использовать хранимые процедуры в Mysql для вычисления этих значений и сохранения их в отдельных таблицах (используя архитектуру, близкую к хранилищу данных), а затем использовать мое веб-приложение, чтобы просто прочитать значения этих таблиц и отобразить их в виде диаграмм.

Я хочу знать с точки зрения скорости и производительности, какой из этих методов лучше?

И спасибо


person elmetni hamza    schedule 18.06.2014    source источник


Ответы (1)


Невозможно сказать, действительно, без многих других подробностей. Однако:

То, что вы хотите сделать, называется Денормализация. Это общепризнанный метод ускорения и упрощения отчетности. (Если это не так, ваша денормализация не удалась!) Когда она работает, она имеет следующие преимущества:

  • Отчеты выполняются быстрее
  • Код отчета легче написать

С другой стороны:

  • Данные отчета устарели и содержат только данные на момент последнего расчета.

Крайняя форма выполнения этого заключается в том, чтобы взять базу данных OLTP (стандартную базу данных) и экспортировать ее в базу данных анализа (также известную как база данных Cube или OLAP).

Одна из проблем денормализации заключается в том, что а) это обычно требует значительных усилий, б) добавляется дополнительный код, который усложняет и, таким образом, увеличивает затраты на поддержку, и в) это может не иметь достаточного (или никакого) значения. Из-за этого обычно не делают этого, пока вы узнаете, что у вас есть проблема. Это произойдет, когда вы сделаете свои отчеты по базовой базе данных и обнаружите, что они либо слишком сложны для написания, либо выполняются слишком медленно. Я бы настоятельно рекомендовал, чтобы только когда вы достигнете этой точки, вы приступали к денормализации.

Бывают случаи, когда вам это не нужно, но я видел только 1 такой пример за более чем 25 лет разработки; и этому решению помогло желание руководства использовать базу данных OLAP в политических целях.

person simon at rcl    schedule 18.06.2014