Нарушение производительности при выполнении собственного SQL в Strongloop Loopback

Есть ли какой-либо недостаток для выполнения собственного SQL-запроса с использованием {dataSource.connector.execute(sql, params, cb) или dataSource.connector.query(sql, params, cb)}, чем с использованием связанных моделей?

Недавно я протестировал тот же сценарий с примерами данных как с Native SQL, так и с подключенными моделями. Когда я использовал Native SQL, я заметил, что соединение MYSQL теряется при увеличении нагрузки. Но та же производительность операций с подключенными моделями и фильтрами Loopback, он может выдержать почти в 4 раза нагрузку по сравнению с Native SQL Connector.

Зацикливание также не рекомендует использовать Native SQL Connector:

Эта функция не была полностью протестирована и официально не поддерживается: API может измениться в будущих выпусках. В общем, всегда лучше выполнять действия с базой данных через подключенные модели. Непосредственное выполнение SQL может привести к неожиданным результатам, поврежденным данным и другим проблемам. - петля

Мой точный вопрос: заметил ли кто-нибудь какой-либо недостаток или ухудшение производительности. Использование использования Native SQL вместо подключенных моделей Loopback?

1 ответ

Проще говоря, выполнение необработанных запросов (Native sql) может быть быстрее, чем использование ORM (моделей), поскольку они выполняют валидацию, формируют запросы на основе параметров и фильтров, которые вы предоставляете и т. Д., Тогда как при выполнении необработанных запросов просто отправляйте запрос на подключенный сервер sql по сети. без прохождения всех этих дополнительных слоев, но эти различия едва заметны. В настоящее время отраслевым стандартом является то, что вы должны использовать ORM (модели) для доступа к вашим данным, поскольку они защищают вас от многих угроз, таких как внедрение SQL и простых человеческих ошибок, поскольку он выполняет всестороннюю проверку на основе схемы. Проще говоря, ORM безопаснее, чем запросы Raw. Но это вопрос выбора того, что вы хотите сделать. Честно говоря, я попал куда-то посередине, где я использую предоставленные ORM модели, когда это возможно, но я обнаружил некоторые случаи, когда выполнение запросов Raw приносит гораздо больше простоты, например, когда вам нужно выполнять объединения более чем в 2 таблицы, а также манипулировать данными с помощью запросов, чем используйте ORM. Этот последний бит - просто мой способ делать вещи, которые, по мнению многих людей, могут быть неправильными. Я предлагаю использовать ORMs т.е. в вашем случае разъемы Strong Loop как можно больше.

Другие вопросы по тегам