Não há nada remotamente próximo de um tamanho único aqui, mas se você está procurando ir além das soluções de bancos de dados relacionais tradicionais, sugiro que você faça o "NoSQL" do Google e comece a ler.
Estou desenvolvendo um aplicativo da Web que exigirá dimensionamento para vários servidores. Precisarei de vários servidores da web executando o código do meu aplicativo e haverá leituras pesadas e gravações pesadas no banco de dados. Obviamente, não posso usar apenas um banco de dados.
Eu lidei com replicação de banco de dados onde havia um único mestre e vários escravos. Com isso, tínhamos vários servidores API somente leitura, cada um com um servidor dedicado e um banco de dados escravo dedicado (replicado).
Mas como eu lidaria com as gravações? Parece que seria uma má ideia ter todas as gravações ocorrendo em um único banco de dados devido ao engarrafamento e, em vez disso, eu gostaria de gravar em vários bancos de dados separados. Mas então eu teria vários bancos de dados mestres, e posso imaginar que seria um desastre se os mestres estivessem fora de sincronia. E eu poderia imaginar que haveria colisões de chave primária.
Outra opção pode ser ter vários bancos de dados com o mesmo esquema, mas cada um não é uma cópia do outro. Isso soa assustador, como se poderia falhar, e eu perderia dados. Isso parece um pesadelo de manutenção, mas talvez eu esteja errado.
O que seria uma arquitetura boa, testada, prática e escalável para as necessidades que descrevi? Links para artigos ou apenas posts aqui seriam ótimos.
Não há nada remotamente próximo de um tamanho único aqui, mas se você está procurando ir além das soluções de bancos de dados relacionais tradicionais, sugiro que você faça o "NoSQL" do Google e comece a ler.
resposta curta: sharding
resposta longa: você desenvolve sua própria camada "nosql" no topo de um sql db (geralmente mysql) ou usa uma das muitas ferramentas nosql de tópico quente (mongodb, cassandra, redis, etc).
no entanto já que sua postagem incluiu zero métricas, é extremamente improvável que você realmente precise fazer isso, se você estivesse no modo de números. O mais provável é que você consiga uma dose saudável de memória RAM e algum tempo gasto ajustando as consultas SQL ou um grande valor de armazenamento SSD / high-end.
Se você pode ajustar seus dados de forma diferente para tabelas relacionais padrão do que eu consideraria NoSQL ..
Um armazenamento de dados de cluster de estilo de gravação pesado seria cassandra (NoSQL) Ele é projetado para escrever sem bloqueio ...: D
Caso contrário .. Tentativa de fragmentação com SQL e, como as empresas maiores às vezes fazem, execute o mysql em um master < --- > configuração principal ..
Que tipo de dados é escrito e lido?