2009-09-23 3 views
0

я в здании веб-приложение, которое имеет следующие характеристики:Беспокоясь о масштабируемости нового сайта

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

По существу: очень мало страниц со статической информацией 90%. Одна страница с клиентской работой и потенциально много GETting/POSTing JSON.

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

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

Я планирую разместить это на Slicehost для начала, а затем, если нужно, переместите его.

ответ

1

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

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

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

Удачи :)

+0

Нет поисковых запросов, просто прямое хранилище. Создайте JSON с помощью jQuery, сохраните как есть в mySQL, а затем позже извлеките из БД, отправьте обратно на клиентскую сторону и итерации jQuery через JSON. –

+0

Тогда прямая экономия JSON будет наименее используемым процессом и лучшей моделью хранения. (хотя может потребоваться больше места для хранения, но он оставит вас с меньшим количеством строк в таблице, чтобы иметь дело, следовательно, меньший индексный файл и быстрее извлекает). – Mohammad

1

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

+0

Благодарим за отзыв. Я всегда буду иметь пользовательские данные в mySQL - это просто простые профили. Моя основная проблема заключалась в том, будет ли хранение + извлечение строк, содержащих объекты JSON, быстрее с использованием хранилища ключей/значений. –

+0

Hm. Я не думал об этом достаточно сильно - я больше сосредоточился на данных профиля пользователя. Вы можете попробовать профилировать ... с помощью простых строк JSON, я не уверен, почему хранилище значений ключей должно быть значительно быстрее. – artagnon

Смежные вопросы