Я знаю, что это очень общий и субъективный вопрос, поэтому не стесняйтесь голосовать, чтобы закрыть его, если он не соответствует этикету StackOverflow ... но для меня это стоит попробовать;)
Я имеюс тех пор я никогда не создавал приложения с большим трафиком, поэтому я не знаю (за исключением некоторого чтения в Интернете) о методах масштабирования.
Как я могу создать базу данных, которая, когда масштабированиенужно, мне не нужно реорганизовывать структуру базы данных или код приложения?
Я знаю, что разработка (и оптимизация) должна идти шаг за шагом, оптимизировать узкое место по мере их появления, и это почтиневозможно создать идеальную структуру, если вы не знаете, сколько у вас будет пользователей и как они будут использовать базу данных (например, соотношение чтения / записи), я просто ищу хорошую базу для начала.
Каковы наилучшие практики для создания структуры, почти готовой для масштабирования с помощью partitioning
и sharding
, и чего hacks
следует абсолютно избегать?
Редактировать some detail о моем приложении:
- Приложение будет работать как многосайтовое поведение
- У меня будет база данных для каждой версии приложения (db_0_0_1, db_0_0_2 и т. д.) *
- Каждый «сайт» будет иметь схему внутри базы данных * и роль, которая может получить доступ только к его собственным схемам
- Код приложения будет в основном PHP и несколько вещей (демонов и вещей обслуживания) в Python
- Веб-сервер, вероятно, будет Nginx и lighttpd или node.js в качестве поддержки для задач с длительным опросом (например, чата)
- Кэширование будет выполняться с memcached (плюс apc для вещей, строго связанных с phpкод, как его можно использовать вне php)