Беспокоясь о масштабируемости нового сайта
Я строю веб-приложение, которое имеет следующие характеристики:
- Он имеет только небольшое количество страниц, дома, свяжитесь с нами, о, Singup и т. Д.
- У каждого пользователя есть одна страница на основе jquery, которая позволяет им перетаскивать / отбрасывать / манипулировать элементами DOM.
- Когда пользователь завершил манипулирование элементами, он может нажать "Сохранить", и элементы будут отправлены через JSON в сценарий PHP на сервере. Они также могут загрузить ранее сохраненный JSON.
Итак, по сути: очень мало страниц с 90% статической информацией. Одна страница с работой на стороне клиента и потенциально большим количеством GETting/POSTing JSON.
Я создал POC для этого, используя PHP/Smarty, jQuery и mySQL. Данные пользователя хранятся в mySQL, как и данные JSON. Smarty кэширует веб-страницы на диске.
Теперь я думаю о масштабируемости, и очевидный вопрос заключается в том, следует ли мне хранить часто изменяемые данные JSON в mySQL или использовать memcacheDB или другое хранилище значений ключей? Пойдете ли вы на простой вариант mySQL или введете хранилище значений ключей сейчас или подождете, если возникнет проблема масштабирования? Реально ли я когда-нибудь достигну точки, где mySQL является узким местом?
Я планирую разместить его на Slicehost для начала, а затем перенести его, если это будет необходимо.
2 ответа
Вопрос в том, будут ли какие-либо поиски на основе этих значений или нет? Будут ли обновления для определенных значений на уровне базы данных или нет... Серилизованные данные или json будут быстрее и эффективнее (с точки зрения хранения), если все, что вы делаете, это извлекают всю строку и не имеют требований для запроса или изменения Это.
В зависимости от того, как вы масштабируете, вы можете сохранить структуру ключ / значение вместе с плоским представлением данных для целей поиска.
Также рассмотрите возможность использования apache AB для некоторого тестирования и получения идей о том, как ваши изменения влияют на ваш параллельный вывод.
Удачи:)
Что касается JSON, это не будет иметь значения: я не понимаю, как вы можете оптимизировать хранение этих данных. Я думаю, что вопрос сводится к "Насколько сложны пользовательские данные?". Если существует огромный социальный граф, связанный с внешними ключами СУБД, и слишком сложно сопоставить эти данные с хранилищем значений ключей, я бы не стал тратить сейчас усилия. Однако, если пользовательские данные - это просто информация профиля, я бы предпочел перейти к хранилищу значений ключей сейчас, чем позже, прежде чем использовать слишком много функций RDBMS.