Depende de quais são seus requisitos. Se você precisar de uma solução de alto desempenho e baixa latência que dependa de muitas tarefas pequenas, poderá optar por uma estrutura semelhante à descrita. As soluções mais comuns, em Java, PHP e C #, não são padronizadas para isso.
A maioria dos aplicativos da Web depende muito dos bancos de dados - a maioria deles tanto que as páginas não foram processadas sem pelo menos uma chamada. Obviamente, você não deseja expor seu banco de dados publicamente, por vários motivos:
- Segurança (como Oded menciona) - você definitivamente não deseja expor sua rede publicamente! Idealmente, a única interface externa para os seus sistemas deve ser https para o servidor.
- Facilidade de desenvolvimento - você realmente, realmente , realmente não quero SQL escrita em Javascript, e as línguas projetados para apresentação web não funcionam bem com RDB. Eles não têm conceito de estado, por exemplo.
Portanto, quando você precisa de um banco de dados, usa linguagens que se adaptam bem a eles, como Java, C #, PHP etc. A maneira mais fácil de gerar uma página é a seguinte: Você usa uma linguagem de modelagem (mais conhecida como PHP, JSP e ASP são duas outras linguagens muito comuns) para construir a página. A linguagem fornece construções que chamam outros módulos. No PHP, isso geralmente ocorre na página ou em outro arquivo PHP, usando o padrão MVC. No JSP, você usa scriptlets ou o JSP Expression Language. Esses outros módulos podem ter o trabalho pesado de se conectar ao banco de dados, executando a lógica e retornando valores à sua camada de visualização. O resultado final é uma página HTML gerada, renderizada no servidor e enviada ao cliente.
Quando seu banco de dados está na mesma rede que o renderizador de página, você obtém melhor desempenho também. O cliente precisa apenas fazer uma solicitação e receber uma página - pode ser necessário fazer 10 a 15 solicitações de banco de dados antes de ter todas as informações de que o usuário precisa. Uma latência de milissegundos na sua rede seria de segundos a minutos se o cliente tivesse que fazer todos eles.
Quando os sistemas crescem, a separação de preocupações e competências essenciais se torna crucial. HTML é bom para exibição. Javascript é bom para conteúdo dinâmico. O SQL é ótimo para consultar um banco de dados, e outros idiomas são bons na lógica de negócios. Nosso trabalho como desenvolvedores é usar todas as ferramentas disponíveis para criar um sistema sustentável. A facilidade de desenvolvimento é uma grande parte de um bom sistema. Na minha opinião, é quase tão importante quanto desempenho e usabilidade. Grandes sistemas evoluem com o tempo. Sistemas ruins foram mal escritos desde o início e nunca foram aprimorados.