Циклы в базе данных против приложения

0

Вскоре я планирую переписать свое приложение на Java (с VB.NET), и, поскольку у меня появился такой шанс, я планирую сделать большую очистку кода в новом приложении, так как тот, который написан на VB.NET, является моим первым приложением и это оказалось довольно большим для одного человека.

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

Пример работы: в моих приложениях поступают товары. Когда я продаю товары, мне нужно подключить продажи с ранее купленными товарами с помощью правила First in First out. Например, я купил 10 бананов, затем еще 10, а затем 20. Затем я хочу продать 30 из них, поэтому я связываю первые 10 бананов, и он оставляет меня с 20, поэтому я связываю его с другими 10, поэтому он оставляет меня с 10, а затем я свяжите его с последней партией бананов, но я не использую их всех, поэтому у меня осталось 20 бананов.

Как я вижу это:

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

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

Как вы думаете?

  • 5
    В общем: петли, плохо; Операции на основе SQL, хорошо. Вы можете быть удивлены тем, как часто вы можете заменить циклы SELECT .
  • 0
    Прежде чем углубляться в хранимые процедуры, попробуйте небольшой кейс и убедитесь, что он вам поможет. Хранимые процедуры MySQL могут значительно замедлить работу вашего приложения.
Показать ещё 7 комментариев
Теги:
loops

1 ответ

1
Лучший ответ

Пытаясь ответить объективно, я бы сказал: это зависит от сложности вашего запроса, количества данных, которые необходимо обработать, и от используемой СУБД.

Я также хотел бы добавить, что только потому, что данные обрабатываются в базе данных, это не должно быть быстрее, чем ваше приложение. Основное качество баз данных лежит в операциях на основе набора SQL, как уже писал Гордон Линофф.

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

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

В вашем примере это означает: используйте SQL, чтобы получить ваш запас, отфильтрованный для бананов, и отсортировать их по дате (очевидно). Затем проведите свои результаты в приложении и остановитесь, как только вы получите нужное количество бананов

Используя оконную функцию Sum-Function, вы можете даже ограничить результаты запроса точкой, что кумулятивная сумма количества передает определенное значение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню