Bancos de dados relacionais são projetados com confiabilidade e consistência em seu núcleo. Os engenheiros que os desenvolveram focaram em um modelo transacional que garante que os quatro princípios do modelo ACID sejam sempre preservados. No entanto, o advento de um novo modelo de banco de dados não estruturado está virando o ACID de cabeça para baixo. O modelo de banco de dados NoSQL evita o modelo relacional altamente estruturado em favor de uma abordagem flexível de armazenamento de chave/valor. Essa abordagem não estruturada de dados requer uma alternativa ao modelo ACID: o modelo BASE.
Princípios Básicos do Modelo ACID
Existem quatro princípios básicos do modelo ACID:
- A atomicidade das transações garante que cada transação do banco de dados seja uma única unidade que adota uma abordagem "tudo ou nada" para execução. Se qualquer instrução na transação falhar, toda a transação será revertida.
- Bancos de dados relacionais também garantem a consistência de cada transação com as regras de negócio do banco de dados. Se algum elemento de uma transação atômica interromper a consistência do banco de dados, toda a transação falhará.
- O mecanismo de banco de dados impõe isolation entre várias transações que ocorrem ao mesmo tempo ou quase. Cada transação ocorre antes ou depois de qualquer outra transação, e a visão do banco de dados que uma transação vê em seu início só é alterada pela própria transação antes de sua conclusão. Nenhuma transação deve ver o produto intermediário de outra transação.
- O princípio ACID final, durabilidade, garante que uma vez que uma transação seja confirmada no banco de dados, ela seja permanentemente preservada através do uso de backups e logs de transações. Em caso de falha, esses mecanismos podem ser usados para restaurar transações confirmadas.
Princípios Fundamentais da BASE
Bancos de dados NoSQL, por outro lado, abrangem situações em que o modelo ACID é um exagero ou, de fato, dificultaria a operação do banco de dados. Em vez disso, o NoSQL depende de um modelo mais suave conhecido, apropriadamente, como o modelo BASE. Esse modelo acomoda a flexibilidade oferecida pelo NoSQL e abordagens semelhantes ao gerenciamento e curadoria de dados não estruturados. BASE consiste em três princípios:
- Disponibilidade Básica A abordagem de banco de dados NoSQL foca na disponibilidade de dados mesmo na presença de várias falhas. Ele consegue isso usando uma abordagem altamente distribuída para gerenciamento de banco de dados. Em vez de manter um único grande armazenamento de dados e se concentrar na tolerância a falhas desse armazenamento, os bancos de dados NoSQL distribuem dados por vários sistemas de armazenamento com alto grau de replicação. No caso improvável de uma falha interromper o acesso a um segmento de dados, isso não resultará necessariamente em uma interrupção completa do banco de dados.
- Estado Suave. Os bancos de dados BASE abandonam os requisitos de consistência do modelo ACID praticamente completamente. Um dos conceitos básicos por trás do BASE é que a consistência dos dados é um problema do desenvolvedor e não deve ser tratado pelo banco de dados.
- Consistência Eventual O único requisito que os bancos de dados NoSQL têm em relação à consistência é exigir que, em algum momento no futuro, os dados convergirão para um estado consistente. No entanto, não há garantias sobre quando isso ocorrerá. Isso é um afastamento completo do requisito de consistência imediata do ACID que proíbe a execução de uma transação até que a transação anterior seja concluída e o banco de dados tenha convergido para um estado consistente.
Em BASE, disponibilidade básica pode significar que você nem mesmo controla as fontes de dados. Por exemplo, você pode vincular a conjuntos de dados públicos como parte de seu esforço.
Casos de Uso Relativos
O modelo BASE não é adequado para todas as situações, mas certamente é uma alternativa flexível ao modelo ACID para bancos de dados que não exigem adesão estrita a um modelo relacional.
Os casos de uso ideais para bancos de dados que usam ACID dependem de dados altamente estruturados com entradas e saídas previsíveis. Assim, bancos de dados de recursos humanos, bancos de dados de varejo e registros médicos eletrônicos se beneficiam da robusta verificação de consistência interna que o ACID oferece.
No entanto, as soluções BASE são melhores para assuntos difusos, como análise de sentimentos. Por exemplo, um projeto estruturado em BASE pode escanear um feed do Twitter procurando palavras que impliquem emoção com base em uma hashtag específica. O feed do Twitter não é bem estruturado ou instanciado localmente, mas o fluxo de dados oferece as informações programadas em consultas, mesmo que o escopo e a natureza desses dados não sejam delimitados de forma clara.