Беспокойство по поводу масштабируемости нового сайта

StackOverflow https://stackoverflow.com/questions/1465574

Вопрос

Я создаю веб-приложение, которое обладает следующими характеристиками:

  1. В нем всего несколько страниц: главная страница, контакты, о программе, подписка и т.д.
  2. У каждого пользователя есть одна страница на основе jquery, которая позволяет им перетаскивать элементы DOM / drop / манипулировать ими.
  3. Когда пользователь заканчивает манипулировать элементами, он может нажать Сохранить, и элементы отправляются через JSON в PHP-скрипт на сервере.Они также могут загружать ранее сохраненный JSON.

Так что по сути:очень мало страниц, содержащих 90% статической информации.Одна страница с работой на стороне клиента и потенциально большим количеством получения / публикации JSON.

Я создал POC из этого, используя PHP / Smarty, jQuery и MySQL.Данные пользователя хранятся в MySQL, как и данные JSON.Веб-страницы кэшируются Smarty на диске.

Теперь я думаю о масштабируемости, и очевидный вопрос заключается в том, должен ли я хранить часто изменяемые данные JSON в MySQL или мне следует использовать MemcacheDB или какое-либо другое хранилище значений ключа?Выбрали бы вы простой вариант MySQL или внедрили хранилище ключ-значение сейчас или подождали бы, чтобы увидеть, возникнет ли проблема с масштабированием?Реально ли я когда-нибудь достигну точки, когда MySQL станет узким местом?

Для начала я планирую разместить это на Slicehost, а затем переместить, если потребуется.

Это было полезно?

Решение

Вопрос в том, будут ли какие-либо запросы, основанные на этих значениях, или нет?Будут ли обновления для определенных значений на уровне базы данных или нет...Сериализованные данные или json будут быстрее и эффективнее (с точки зрения хранения), если все, что вы делаете, это извлекаете всю строку целиком и не предъявляете требований к ее запросу или изменению.

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

Также рассмотрите возможность использования apache AB для некоторого сравнительного анализа и получения идей о том, как ваши изменения влияют на ваш параллельный вывод.

Удачи :)

Другие советы

Что касается JSON, то это ничего не изменит:Я не понимаю, как вы можете оптимизировать хранение этих данных.Я думаю, вопрос сводится к тому, "Насколько сложны пользовательские данные?".Если существует огромный социальный граф, связанный с внешними ключами СУБД, и слишком сложно сопоставить эти данные с хранилищем ключ-значение, я бы предпочел не тратить на это усилия сейчас.Однако, если пользовательские данные - это просто информация плоского профиля, я бы предпочел перейти к хранилищу ключ-значение сейчас, чем позже, прежде чем использовать слишком много функций СУБД.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top