...um desenho não deve ter linhas desnecessárias e uma máquina não deve ter peças desnecessárias. -William Strunk Jr., Elementos de estilo
No livro Projetando aplicativos com uso intensivo de dados: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems (As Grandes Ideias por Trás de Sistemas Confiáveis, Escaláveis e Manuteníveis)Em seu livro, Martin Kleppmann escreveu sobre as características e as compensações dos elementos da infraestrutura de dados para aplicativos modernos. Nesse livro, ele desenhou a "Figura 1-1. Uma arquitetura possível para um sistema de dados que combina vários componentes". Esta é uma exploração desse exemplo e da arquitetura possível com o Couchbase.
Exemplo 1:
A Figura 1 abaixo é a arquitetura do livro.
Vamos usar um banco de dados moderno como Couchbase que simplifica a infraestrutura, fornecendo Cache, Banco de dados, Pesquisae Processamento de eventos dentro do mesmo produto. Um a um, podemos substituir cada componente independente por um recurso escalável em Couchbase recurso (em vermelho).
Vamos remover as partes desnecessárias para obter a nova arquitetura.
Exemplo 2: Acrescentei um caso de uso comum adicional: análise de dados e DataViz.
Depois de usar a mesma técnica para usar o Couchbase e remover componentes desnecessários, obtemos o seguinte:
Novamente, vamos remover as partes desnecessárias para obter a nova arquitetura. Aqui, exploramos o Serviço de análise disponíveis no Couchbase.
Isso não significa que tudo pode ser simplesmente rearquitetado para usar um ou dois produtos. A tendência de qualquer infraestrutura é aumentar a complexidade. Mais componentes aumentarão a complexidade. Este é um guia para adicionar, remover e refatorar continuamente os componentes para atender ao seu objetivo comercial e combater a complexidade.
O que o Mesos tem a ver com algo como a execução do UDF?
--- Texto Incluído ---
Por outro lado, as ferramentas de implantação e gerenciamento de clusters, como Mesos, YARN, Docker, Kubernetes e outras, são projetadas especificamente para executar o código do aplicativo. Ao se concentrarem em fazer uma coisa bem feita, elas são capazes de fazê-la muito melhor do que um banco de dados que fornece a execução de funções definidas pelo usuário como um de seus muitos recursos.
O que significa ter transações serializáveis executadas em um escopo pequeno?
--- Texto Incluído ---
Por exemplo, esse sistema poderia operar distribuído em vários data centers em uma configuração de vários líderes, replicando de forma assíncrona entre as regiões. Qualquer data center pode continuar operando independentemente dos outros, pois não é necessária nenhuma coordenação síncrona entre as regiões. Esse sistema teria garantias fracas de pontualidade - não poderia ser linearizável sem a introdução de coordenação - mas ainda pode ter garantias fortes de integridade.
Nesse contexto, as transações serializáveis ainda são úteis como parte da manutenção do estado derivado, mas podem ser executadas em um escopo pequeno, onde funcionam bem.
O que significa apresentar anomalias de inclinação de gravação?
--- Texto Incluído ---
Já vi casos em que o MySQL não conseguiu manter corretamente uma restrição de exclusividade e o nível de isolamento serializável do PostgreSQL apresentou anomalias de distorção de gravação, embora o MySQL e o PostgreSQL sejam bancos de dados robustos e bem conceituados que foram testados por muitas pessoas durante muitos anos.