PHP и MySQL решение для большого трафика - PullRequest
2 голосов
/ 10 октября 2011

Рассмотрим создание PHP-сайта с большим трафиком и множеством параллельных пользователей.Какая наилучшая возможная абстракция MySQL (ORM или OODBMS) с точки зрения эффективности (15-20 таблиц баз данных с суммой около 100000 элементов и запросов JOIN между не более чем 4 таблицами)?библиотеки подходят или мне стоит использовать фреймворк как Zend?Какие из этих решений баз данных построены на основе PDO и не требуют большого изучения (в настоящее время я использую чистый PHP)?

Ответы [ 3 ]

4 голосов
/ 10 октября 2011

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

Здесь есть PHP API для memcached здесь

3 голосов
/ 10 октября 2011

ORM или любой слой моделирования данных никогда не улучшат вашу производительность. Их единственная цель - ускорить и упростить время разработки. Они общеизвестно плохи в принятии решений, когда дело доходит до правильного использования отношений и заканчивают тем, что опрашивают все таблицы, чтобы найти правильные данные. На этом уровне сложных запросов вы не сможете абстрагировать эти отношения без ущерба для производительности.

MySQL подходит как минимум для пары миллионов записей (я использовал более 100 миллионов в одной таблице). Для повышения производительности вы, как правило, хотите иметь хотя бы настройку master / slave и какой-то метод распределения чтений между ними. База данных почти всегда будет ограничивающим фактором в производительности. Вы всегда можете добавить больше веб-серверов и получить баланс нагрузки перед ними, чтобы решить другую сторону, но настройку базы данных всегда немного сложнее поддерживать.

Вы должны подумать о том, почему вы хотите использовать ORM. Если это по причинам развития, это нормально, но будьте уверены, что ваша производительность пострадает. В противном случае придерживайтесь запросов. ORM добавляет третий уровень кода для работы и изучения. Если вы знаете PHP и MySQL, вам нужно учить третий язык, чтобы эффективно их использовать? Чаще всего ответ - нет.

У вас есть много вариантов на выбор, но имейте в виду, что в какой-то момент выбранный вами фреймворк / ORM не будет вести себя так, как вы этого хотите, и чтобы заставить его соответствовать вашим желаниям, вам придется много искать и копаться в коде. Это классическая проблема - сэкономить время заранее и заплатить за него позже или потратить время сразу, без возможного выигрыша позже.

1 голос
/ 10 октября 2011

ORM-решения смогут оптимизировать некоторые аспекты, если вы кешируете данные запросов и используете объектный API запланированным и преднамеренным образом.

Базы данных столбцов / документов [nosql: hbase, mongo] повысят производительность, если у вас много (миллионов +) записей и они продолжают расти.

Memcached поможет, если у вас много свободной памяти, особенно если выполняется много повторяющихся запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...