Preocupar-se com a escalabilidade de um novo site
-
13-09-2019 - |
Pergunta
Eu estou construindo um webapp que tem as seguintes características:
- Ele só tem um pequeno número de páginas, casa, contacte-nos, sobre, singup, etc.
- Cada usuário tem uma página baseada em jQuery que lhes permite arrastar / soltar / manipular elementos DOM.
- Quando um usuário tem elementos de manipulação acabados eles podem bater em Salvar e elementos são enviados via JSON para um script PHP no servidor. Eles também pode carregar previamente salvo JSON.
Então, basicamente: muito poucas páginas com informações estáticas 90%. Uma página com o trabalho do lado do cliente e, potencialmente, um monte de obter / Destacamento de JSON.
Eu construí um POC deste usando PHP / Smarty, jQuery e mySQL. detalhes do usuário são armazenados no MySQL e assim são os dados JSON. Páginas Web são armazenados em cache por Smarty no disco.
Agora eu estou pensando sobre escalabilidade e a pergunta óbvia é que eu deveria estar armazenando os dados JSON muitas vezes mudou em mySQL ou devo estar usando memcacheDB ou alguma outra loja do valor-chave? Quer ir para a opção mySQL fácil ou introduzir um armazenamento de chave-valor agora ou você esperar para ver se surgem questão escala? Am I realisticamente nunca vai chegar a um ponto onde o MySQL é o gargalo?
Eu estou planejando para hospedar isso em Slicehost para começar e, em seguida, movê-lo se for necessário.
Solução
A pergunta é, haveria quaisquer pesquisas baseadas nesses valores ou não? É que vai haver versões de valores específicos a nível de banco de dados ou não ... dados Serilaized ou JSON vai ser mais rápido e eficiente (armazenamento sábio) se tudo que você faz é puxar a corda toda e não têm requisitos para consulta ou modificar -lo.
Com base em como você escala, porém, você pode querer manter uma estrutura de chave / valor juntamente com uma representação de dados plana para fins de pesquisa.
Considere também usando apache AB para alguns de benchmarking e obter ideias sobre como o seu efeito muda a sua saída simultânea.
Boa sorte:)
Outras dicas
Quanto ao JSON está em causa, não vai fazer a diferença: eu não vejo como você pode otimizar o armazenamento de dados. Acho que a questão resume-se a "Quão complexa é os dados do usuário?". Se há um gráfico social maciça conectado com chaves estrangeiras RDBMS, e é muito difícil para mapear os dados para um armazenamento de chave-valor, eu prefiro não gastar o esforço agora. No entanto, se os dados do usuário é apenas informações de perfil plano, eu prefiro passar para um armazenamento de chave-valor agora, mais tarde, antes de eu usar muitos recursos RDBMS.