понедельник, 4 мая 2020 г.

хранимые процедуры (stored procedures) - стоит ли применять?


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

Вот что я для себя выяснил:

  • СУБД гораздо менее дружелюбны к масштабированию ( https://habr.com/ru/post/487622/, один из комментов)
  • неудобство контроля версий. прям, печаль, люди опытом делятся, какое решение кто нашел. целая буча, в общем
  • скудные возможности языка
  • как следствие из предыдущего - тяжело/не возможно следовать принципам ООП - на мой взгляд, самый тяжкий из грехов
  • проблемы с юнит-тестированием (вытекает из предыдущего) (хотя, другие говорят, что как-то можно)
  • не скейлятся (ну или скейлятся как-то проблемно. типа, они ~"изначально должны быть заточены на шардинг", чтоб их можно было скейлить). это, кстати, чаще других упоминается.
  • тяжелее прописывать сложную логику 
  • IDE для разработки ХП, возможно, будет лажовым (зависит от СУБД)
  • язык хранимок распологает к копипасте 


сам я не использую хранимки, поэтому делал упор на аргументы против :)
про аргументы "за" у меня сложилось впечатление, что большинство их них можно не принимать во внимание при наличии 3-звенной архитектуры / бизнес-слоя / сервиса бизнес-логики. Единственный убедительный для меня аргумент - оптимизация. для себя я сделал вывод, что, как и в случае с другой оптимизацией, хранимые процедуры нужно применять только в "бутылочных горлышках системы". и заплатить за это, как и в случае прочей оптимизации, придется простотой поддерживаемости кода. в общем, без необходимости лучше не использовать.

полезные ссылки: 


Комментариев нет:

Отправить комментарий