Índice:
Vídeo: QUAL TIPO DE CONSISTÊNCIA DO GEL ESQUENTA MENOS NA CABINE 2024
A propriedade consistência de um banco de dados significa que uma vez que os dados são gravados em um banco de dados com sucesso, as consultas que se seguem podem acessar os dados e obter uma visão consistente dos dados. Na prática, isso significa que se você escrever um registro em um banco de dados e, em seguida, solicitar imediatamente esse registro, você está garantido para vê-lo. É particularmente útil para coisas como pedidos da Amazon e transferências bancárias.
A consistência é uma escala deslizante, porém, e um assunto muito profundo para cobrir aqui. No entanto, no mundo NoSQL, a consistência geralmente cai em um dos dois campos:
-
ACID Consistency (ACID significa Atomicidade, Consistência, Isolação, Durabilidade): ACID significa que, uma vez que os dados estão escritos, você tem consistência total em lê.
-
Consistência Eventual (BASE): BASE significa que, uma vez que os dados são gravados, eventualmente aparecerá para leitura.
Uma batalha tem sido uma raiva entre as pessoas que acreditam que a consistência forte em um banco de dados não é necessária e aqueles que acreditam absolutamente é necessário (traduz pessoas para empresas NoSQL "departamentos de marketing! ).
A realidade está em algum lugar intermediário. É importante que a postagem do Facebook de uma pessoa não seja vista por todos os seus amigos por cinco minutos? Não, provavelmente não. Mude a "publicação do Facebook" para "transação financeira de bilhões de dólares", porém, e sua atitude muda rapidamente! A abordagem de consistência que você escolher depende da situação. Na minha experiência, porém, a consistência forte é sempre a escolha em situações do sistema empresarial de missão crítica.
ACID
ACID é um conjunto geral de princípios para sistemas transacionais, não algo vinculado apenas a sistemas relacionais, ou mesmo apenas bancos de dados, por isso vale a pena conhecer. ACID significa, basicamente, " Este banco de dados tem instalações para impedir que você corrompa ou perca dados, ", que não é um dado para todos os bancos de dados. Na verdade, a grande maioria dos bancos de dados NoSQL não fornece garantias ACID.
Foundation DB, MarkLogic e Neo4j são excepções notáveis. Alguns bancos de dados NoSQL fornecem uma garantia de menor qualidade chamada Verificar e configurar que verifica se outra pessoa alterou um documento antes de permitir que uma transação seja completada. Esse comportamento geralmente é limitado porque tende a ser implementado de forma única.
O MongoDB é um banco de dados notável que fornece capacidades de seleção e configuração. Com o MongoDB, um número inteiro de dados de nó pode ser bloqueado durante uma atualização, impedindo assim todas as operações de leitura e gravação até que a operação seja concluída.A empresa ainda está trabalhando para remover essa limitação.
BASE
BASE significa que, em vez de garantir a ACID, o banco de dados possui um equilíbrio ajustável de consistência e disponibilidade de dados. Normalmente, esse é o caso quando os nós de um dado banco de dados agem como gerentes principais de uma parte do banco de dados e outros nós possuem réplicas de somente leitura.
Para garantir que cada cliente veja todas as atualizações (ou seja, eles têm uma visão consistente dos dados), uma gravação no nó primário que contém os dados precisa ser bloqueada até que todas as réplicas de leitura estejam atualizadas. Isso é chamado de dois - fase commit - a mudança é feita localmente, mas aplicada e confirmada ao cliente somente quando todos os outros nós são atualizados.
BASE relaxa esse requisito, exigindo apenas um subconjunto dos nós que mantenham os mesmos dados atualizados para que a transação seja bem sucedida. Em algum momento após a transação ter sido cometida, a réplica somente leitura é atualizada.
A vantagem dessa abordagem é que as transações são mais rápidas. Ter réplicas ao vivo legíveis também significa que você pode espalhar sua carga de leitura de dados, tornando a leitura mais rápida.
A desvantagem é que os clientes que se conectam a algumas réplicas de leitura podem ver informações desatualizadas por um período de tempo não especificado. Em alguns cenários, esse estado está bem. Se você publicar uma nova mensagem no Facebook e alguns de seus amigos não vêem por alguns minutos, não é uma perda enorme. Se você enviar uma ordem de pagamento para seu banco, porém, você pode querer uma transação imediata.
Uma abordagem alternativa para réplicas de somente leitura é ter um cluster compartilhado - nada no qual apenas um nó em um cluster serve sempre uma parte específica do banco de dados.
Compartilhado - nada não significa que você perde a replicação, no entanto. Os bancos de dados que empregam este método tipicamente replicam seus dados para uma área secundária em outro nó ou nós primários - mas apenas um nó é o mestre para ler e gravar a qualquer momento.
Os clusters sem compartilhamento têm a vantagem de um modelo de consistência mais simples, mas requerem uma confirmação em duas fases para as réplicas. Esse fato significa que a transação é bloqueada enquanto todas as réplicas são atualizadas. (Um bloqueio interno mais o bloqueio para outros nós fornece duas fases.)
Isso geralmente tem menos impacto do que os clusters de dados compartilhados com réplicas de somente leitura, porém, porque as áreas de dados de réplica de nada compartilhadas não recebem solicitações de leitura para isso parte do banco de dados. Portanto, os compromissos em duas fases são mais rápidos em um cluster de nada compartilhado do que em um cluster com réplicas legíveis.
Escolhendo ACID ou BASE?
Como você pode esperar, grande parte do argumento é porque os fornecedores do NoSQL podem se diferenciar de seus concorrentes ao reivindicar uma abordagem diferente e única. É interessante notar, no entanto, o número de vendedores da NoSQL com conformidade ACID em seu roteiro.
Alguns bancos de dados NoSQL possuem conformidade ACID em seu roteiro, mesmo que sejam defensores da BASE, o que mostra quão relevantes as garantias de ACID são sistemas corporativos, missão - críticos .
Muitas empresas usam produtos de consistência BASE ao testar idéias porque são gratuitas, mas depois migram para um banco de dados pago compatível com ACID quando querem entrar ao vivo em um sistema de missão crítica.
A maneira mais fácil de decidir se você precisa de ACID é considerar as interações que as pessoas e outros sistemas têm com seus dados. Por exemplo, se você adicionar ou atualizar dados, é importante que a próxima consulta possa ver a mudança? Em outras palavras, são decisões importantes sobre o estado atual do banco de dados? Verificando dados um pouco desactualizados significam que essas decisões podem ser fatalmente falhas?
Nos serviços financeiros, a necessidade de consistência é óbvia. Pense em comerciantes comprando estoque. Eles precisam verificar o saldo de caixa antes de negociar para garantir que eles tenham o dinheiro para cobrir o comércio. Se eles não vêem o saldo correto, eles decidirão gastar dinheiro em outra transação. Se o banco de dados que estão consultando é apenas consistente, eles podem não ver a falta de fundos suficientes, expondo assim sua organização ao risco financeiro.
Casos similares podem ser construídos para ACID em relação à BASE em serviços de saúde, defesa, inteligência e outros setores. Tudo se resume aos dados, porém, e a importância tanto da segurança quanto da segurança dos dados.