Как определить, что дороже ресурсов, запись / чтение или вычисление - PullRequest
0 голосов
/ 04 марта 2019

Я скребу биржевые данные.Я очищаю следующее:

opening price, stock price, volume traded, shares in issue

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

value traded, market cap, price change

Хотя последние могут быть просто скопированы в мою базу данных и затем прочитаны позднее, я также мог бы просто написать методы, которые вычисляютих на лету, когда требуется.Поэтому вместо того, чтобы записывать их в базу данных и читать позже, я мог бы просто иметь такие методы, как

calculate_value_traded(), calculate_market_cap() и calculate_price_change()

Мой вопрос заключается в том, что является более эффективным способом?Как определить «более эффективный» на практике?Я знаю, что это может зависеть от количества записываемых / читаемых данных, а также от характера вычислений, но мне интересно, как можно даже сделать эталонный тест, который является более эффективным с точки зрения ресурсов и в конечном итоге менее дорогим?

Смотрю ли я на используемую память,пропускная способность, ввод / вывод или что?Какие вещи мне нужно измерить, чтобы в конечном итоге выбрать одно над другим?

1 Ответ

0 голосов
/ 04 марта 2019

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

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

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

...