На сайте с разумным объемом трафика, имеет ли значение, если прикладная / бизнес-логика записывается как хранимые процедуры, триггеры и представления, а не внутри самого PHP-кода?
Каким будет лучший способ удержать масштабируемость.
Я не могу предоставить вам статистику, но если вы не планируете менять PHP для другого языка в будущем, я могу сказать, что сохранение бизнес-логики в PHP более «масштабируемо».
Его всегда проще и дешевле решать проблемы загрузки веб-сервера, чем их в базе данных. Ваша база данных всегда должна быть быстро освещена и просто бросать зеркала на нее не решит проблему. Чем больше у вас подчиненных блогов, тем больше вы должны делать записи.
По моему опыту, вы должны поместить бизнес-логику в код PHP, а не перемещать ее в базу данных. Предполагая, что ваша база данных находится на отдельном сервере, вы не хотите, чтобы ваша база данных была занята вычислением формул, когда поступают запросы.
Держите вашу базу данных молниеносной, чтобы обрабатывать выбор, вставки и обновления.
Я думаю, что у вас будет намного лучше масштабируемость, сохраняя код базы данных в базе данных, где она может быть настроена на производительность, поскольку количество записей становится больше. У вас также будет более высокая целостность данных, что крайне важно для данных, даже полезных. Вы не видите много реляционных dbs с размерами terrabyte со всем их кодом в приложении.
Прочтите несколько книг по настройке производительности базы данных, а затем решите, хотите ли вы подвергать риску данные вашей компании по коду приложения.
При попытке решить, следует ли размещать бизнес-логику в базе данных или в коде приложения, нужно учитывать несколько факторов.
Будет ли доступ к той же базе данных с разных веб-сайтов или веб-приложений? Будут ли сайты / приложения написаны на одном языке или на другом языке?
Если база данных будет использоваться с одного сайта, а сайт будет написан на одном языке, тогда это станет проблемой. В противном случае вам нужно будет рассмотреть дополнительную сложность хранимых процедур, триггеров и т. Д. Против попытки поддерживать логику доступа к базе данных и т. Д. В нескольких базовых кодах.
Что такое реляционные базы данных в целом и для чего лучше всего подходит MySQL? Что такое PHP?
Это соображение довольно прямолинейно. Реляционные базы данных по всем направлениям и, в частности, в любом варианте SQL, будут делать отличную работу по вставке, обновлению и удалению данных. Как правило, они также хорошо обрабатывают транзакции ATOMIC. Однако большинство вариантов SQL (включая MySQL) не подходят для сложных вычислений, обработки данных на лету, доступа к файловой системе и т. Д.
PHP, с другой стороны, очень быстро справляется с расчетами, датами, доступом к файловой системе. Занимая немного времени, вы даже можете создать свой PHP-код для работы таким образом, чтобы записи извлекались только один раз, а затем сохранялись при необходимости.
Что вам больше всего нравится / удобнее в использовании?
Очевидно, что имеет смысл использовать инструмент, с которым вы наиболее знакомы.
В качестве последнего пункта следует учитывать, что только потому, что дрель может использоваться для резки листовой породы или из-за того, что молоток может использоваться для приведения винта, это не означает, что они должны использоваться для этих целей. Иногда я думаю, что программисты наносят больше потенциального урона, пытаясь сделать более мощные инструменты, которые делают все, а не делают более простые инструменты, которые делают одну вещь действительно, очень хорошо.
Хорошо выполненное PHP-приложение должно быть достаточно, но имейте в виду, что он также требует от вас меньше вызовов к базе данных, которую вы можете. Сохраните значения, которые вам понадобятся позже в PHP, сократите количество запросов, кеш и т. Д.
Оптимизация MySQL всегда обязательна, так как она также уменьшает количество вызовов базы данных с помощью PHP и, таким образом, повышает производительность. Поэтому вы не можете думать о хранимых процедурах и т. Д., Если ваша цель – повысить производительность. Но MySQL сам по себе не будет достаточным, если ваш PHP-код не будет хорошо выполнен (много ненужных запросов к базе данных), поэтому я считаю, что PHP должен быть хорошо закодирован, имея в виду процесс дыр при его разработке, так что ненужные вещи не мешает. Кэш, например, в «дуэте» с надлежащим MySQL, значительно повышает производительность.
Мой POV, даже не имеющий большого опыта разработки больших приложений, заключается в том, чтобы написать бизнес-логику в БД по некоторым причинам:
1 – Поддержание работоспособности, я думаю, что языки обесценивают функции и меняют многие другие вещи за короткий промежуток времени, поэтому, если PHP изменяет версию, вам нужно будет адаптировать свой код к новой версии
2 – БД имеют тенденцию быть более устойчивыми на языке, поэтому, когда выходит новая версия RDBMS, обычно это не изменяет многие вещи в том, как вы пишете свои запросы или SP, или даже не меняете. Написание вашей логики в БД приведет к уменьшению адаптации кода из-за новой версии БД
3 – СУРБ более вероятно, будет жить в течение длительного периода, а не языка программирования. Кроме того, поскольку ваши данные имеют решающее значение, существует большая проблема со стороны разработчиков RDBMS для автоматической миграции всех ваших данных на новую версию RDBMS, включая ваши SP. Когда клипер умер, не было способов переноса систем на новый язык программирования, их нужно было полностью переписать.
4 – Если вы думаете, что когда-нибудь полностью измените язык, на котором вы пишете приложение по какой-либо причине (например, смерть языка), единственное, что нужно переписать, это презентация и вызовы SP, а не бизнес-логика.
Я хотел бы узнать от других людей, если то, что я указал, имеет смысл, а если нет, то почему. Я нахожусь в той же ситуации, что и Сабин Малик, я собираюсь начать свой первый огромный проект, и я стремлюсь к SP из-за того, что я написал. Так что пришло время исправить мой POV, если это не так правильно.
MySQL отстой в использовании передовых методов БД, это просто и быстро. PHP, являющийся динамическим языком, очень упрощает обработку данных. Поэтому обычно имеет смысл использовать PHP.