2016-01-28 2 views
1

Насколько полезно хранить «простые» результаты вычислений в базе данных (sql)?Результаты поиска в базе данных?

Позволяет сделать пример:

  • брутто Стоимость: 10.00 $
  • Налоги являются: 20%
  • стоимость доставки являются: 5,00 $

Из этих информаций я могу вычислить:

  • Цена нетто: 12.00 $
  • Общая стоимость: 17,00 $

Возникает вопрос: Должен ли я хранить только 3 необработанные значения и вычислить другие 2 на каждом запросе, или я должен вычислить их один раз и хранить их тоже?

Иными словами: что более ценно? Вычислительная мощность или пространство для хранения?

+1

Основная причина, по которой я не буду хранить расчетные результаты, заключается в том, что налоги и стоимость доставки могут меняться со временем, поэтому эти результаты устаревают или хуже: неправильно. Причиной сохранения их было бы проще/быстрее. Но для вашего примера я настоятельно рекомендую вам вычислить их на лету, когда они вам понадобятся. – Burki

+1

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

+1

Я бы оставил вычисляемый ответ только в том случае, если есть необходимость поиска по его значению, потому что вы не можете сделать индекс по вычисленному значению, или если для его пересчета потребуется доступ к другим большим таблицам. –

ответ

1

На ваш вопрос:

Другими словами: Что еще более ценным? Вычислительная мощность или место для хранения?

Чтобы ответить на это, вам необходимо рассмотреть прецедент ваших данных и компромиссы, которые вы готовы сделать со скоростью и хранением.

Рассмотрите прецедент, в котором есть 100 миллионов записей, и вам нужно часто запускать отчеты, которые запрашивают чистую цену, общие затраты. В этом случае ваши отчеты будут работать медленнее, если значения будут вычислены. Теперь, если вам нужно, чтобы отчеты выполнялись быстрее, вы можете рассмотреть возможность хранения вычисленных значений в таблице.

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

Таким образом, ответ действительно зависит от вашего варианта использования и компромиссов, которые вы готовы сделать.