На сколько стоит увлекаться программированием функций самой БД?
=================================================================

 Как я понимаю все современные БД позволяют писать на своем внутреннем языке определенный функции. Попутно вопрос - получается что любую функцию можно обернуть в триггер, так?  
  

На сколько стоит заморачиваться с изучением\написанием непосредственно самих функций, если задачу можно решить с использованием непосредственно языка программирования?  
  

1. В каких случаях целесообразно написание самих функций?  
  

2. Что на счет скорости? Есть ли хоть какие-то тесты хранимых процедур vs внешних языков программирования?  
  

3. На сколько вообще удобны/функциональны встроенный языки? Все ли можно на них делать? Или только узкий спектр задач?  
  

4. Сложно ли отлаживать эти внутренние функции? 

 Есть даже такой способ абстракции программы от данных - в программе ни единого запроса, а только вызовы хранимых процедур из БД. И тогда программисты остаются программистами, а администраторы хранения - администраторами хранения. Реструктуризация базы может вообще не задеть программистов.   
  

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

 Написание функций целесообразно при обработке больших объемов данных, когда передача их по сети будет идти дольше чем сама обработка.  
  

Написание хранимок вещь великая, но:  

1. их нельзя подвести под версионный контроль  

2. Если вся логика будет на БД, то рано или поздно нужно будет апгрейдить сервер с БД. В свою очередь если мы используем БД как хранилище (без обработки), то у нас будет больше времени подготовится к очередной смене архитектуры системы, когда БД в очередной раз будет узким местом.  

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