Задать вопрос
savostin
@savostin
Еще один программист

Покритикуйте подход?

Есть идея создать web-приложение, не суть важно какое, где вся логика работы с данными (API, Restful, CRUD) не будет вынесена за пределы базы данных. Т.е. всю бизнес-логику оставляем внутри базы, пишем на innoDB-триггерах, SQL-процедурах и SQL-функциях. PHP (допустим) не делает никаких SELECT/INSERT/UPDATE/DELETE, а вызывает только процедуры типа METHOD_acion(params).
Например, GET_some(id);
Из плюсов вижу:
  1. Данные и логика в одном месте
  2. PHP легко заменяется на всё, что угодно, вплоть до nginx модуля на С
  3. Версионность, целостность кода+данных легче (?) контролировать
  4. Бэкап одним дампом


Из минусов:
  1. Как работать со "сложными" данными/параметрами, в частности с JSON? Есть ли какой-то "универсальный" формат передачи иерархических данных PHP <-> MySQL? На случай, если понадобится отдать xml, например.
  2. К предыдущему пункту: валидация входных данных - как?
  3. Как все-таки сделать версионность?
  4. Отладка кода - мрак еще тот.
  5. Удобства почти ноль - ни фреймворков, ни библиотек - все ручками.


Кто-то таким извращением занимался? Отговорите меня ;)
  • Вопрос задан
  • 391 просмотр
Подписаться 2 Оценить 3 комментария
Решения вопроса 2
@lega
Отлаживал я один такой проект одной крупной (forbes top 40) компании, тот ещё отстой, тормозило как в не себя, хранимые процедуры в 10к строк.

- Ну удобно разрабатывать
- Язык не для разработки приложений (если это *SQL)
- Будет больше тормозить, т.к. вся нагрузка идет на одно звено, когда в высоконагруженых проектах стараются наоборот, разгрузить центральные звенья.
Ответ написан
@maxtm
Make money, not job
Тестировать адски сложно. Сложно приделать авто-тесты (модульные и другие), да и вообще, выносить логику приложения в БД - плохая идея.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Возможна такая ситуация: где-то что-то поменял и все рухнуло. А где и что поменял, не помню.
Ответ написан
Dmitry_BPW
@Dmitry_BPW
Поддерживаю Night. Очень сложно тестировать подобные вещи. А без надлежащих тестов не получится качественного продукта. Как вариант, можно оставить идею, но немного смягчить её. То есть вынести за пределы БД хотя бы часть запланированного. Тогда и тестить легче, и тормозов тоже меньше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы