O termo NoSQL, abreviação de “não apenas SQL”, refere-se a bancos de dados não relacionais que usam um formato não tabular para armazenar dados, em vez de tabelas relacionais baseadas em regras, como bancos de dados relacionais. Os bancos de dados NoSQL usam um modelo de esquema flexível compatível com uma ampla variedade de dados não estruturados, como documentos, chaves-valor, colunas largas, gráficos e muito mais.
As organizações escolhem os bancos de dados NoSQL por causa da flexibilidade, escalonabilidade horizontal e facilidade de desenvolvimento.
Saiba como os bancos de dados NoSQL do Google Cloud Bigtable, Memorystore e Firestore podem ajudam a melhorar seus aplicativos e proporcionar ótimas experiências aos clientes sem se preocupar com escalonabilidade, confiabilidade ou mudanças frequentes nos dados.
Há cinco tipos principais de bancos de dados NoSQL:
Os bancos de dados de documentos, também conhecidos como bancos de dados orientados a documentos ou armazenamento de documentos, são usados para armazenar e consultar dados semiestruturados. Os dados são armazenados em um documento do tipo JSON semelhante aos objetos de dados que os desenvolvedores usam no código do aplicativo, facilitando a criação e a atualização de aplicativos sem referir-se a um esquema primário. Os bancos de dados de documentos são mais comumente usados em plataformas de blogs, aplicativos de e-commerce e de análise em tempo real e sistemas CMS.
Os bancos de dados de chave-valor, também conhecidos como armazenamentos de chave-valor, são o tipo mais simples de bancos de dados NoSQL. Os dados são armazenados em uma estrutura de "chave-valor", em que uma chave exclusiva é pareada com um valor, como strings, números, booleanos, objetos complexos e muito mais. Os dados podem ser gravados ou consultados usando a chave, que é usada para armazenar ou recuperar o valor associado. Os armazenamentos de chave-valor são usados com mais frequência para preferências do usuário, carrinhos de compras e perfis de usuário em aplicativos da Web.
Os bancos de dados orientados por coluna ou armazenamentos de colunas largas, armazenam e leem dados em linhas e são organizados como um conjunto de colunas. Embora seja semelhante ao formato tabular de bancos de dados relacionais, os nomes e a formatação de colunas em armazenamentos de colunas largas podem variar de linha para linha em uma única tabela. São ideais para casos de uso de análise, em que pode ser necessário consultar colunas específicas em um banco de dados e agregar o valor de uma determinada coluna rapidamente. Os armazenamentos de colunas largas são mais usados em catálogos, detecção de fraudes e mecanismos de recomendação.
Os bancos de dados gráficos organizam os dados como nós, com foco nas relações entre os elementos de dados. Essas conexões entre nós, conhecidas como bordas, são armazenadas como elementos de primeira classe, permitindo representações mais ricas de relacionamentos de dados e, ao mesmo tempo, oferecendo armazenamento e navegação mais simplificados. Os bancos de dados de gráficos são mais comumente usados em sistemas que mapeiam relacionamentos, incluindo plataformas de mídia social, sistemas de reserva e aplicativos de logística.
Esses bancos de dados armazenam dados na memória, sem oferecer latência para aplicativos em tempo real. O Redis é um exemplo de um banco de dados NoSQL na memória. Os bancos de dados na memória são mais usados para armazenamento em cache, mensagens, streaming e análise em tempo real.
Os recursos NoSQL são exclusivos do banco de dados escolhido. No entanto, eles geralmente compartilham várias qualidades de alto nível semelhantes:
Esses recursos tornam os bancos de dados não relacionais ideais para aplicativos que exigem grande escala, confiabilidade, alta disponibilidade e alterações frequentes de dados.
Os bancos de dados NoSQL armazenam muitos tipos de dados e oferecem esquemas flexíveis, ideais para dados semiestruturados e não estruturados. É possível adaptá-las facilmente a novos tipos de dados e desenvolver o esquema para atender aos requisitos de dados em constante mudança.
A flexibilidade do NoSQL complementa o desenvolvimento ágil de aplicativos. Os bancos de dados NoSQL podem armazenar muitos tipos de dados no formato nativo e permitem que o modelo de dados seja definido e adaptado à medida que você avança, de modo que os desenvolvedores possam avançar, gastar menos tempo na transformação de dados e iterar rapidamente.
Ao contrário dos bancos de dados relacionais, os bancos de dados NoSQL facilitam o aumento da capacidade à medida que os dados e o tráfego aumentam. Na maioria dos casos, sem tempo inatividade. Os bancos de dados baseados na nuvem são ainda mais fáceis de escalonar com base na demanda, oferecendo recursos de escalonamento automático e modelos de preços flexíveis.
O NoSQL foi desenvolvido para lidar com conjuntos de dados grandes e complexos, permitindo que as organizações adotem e dimensionem Big Data, análise em tempo real e casos de uso de IoT.
As arquiteturas de dados NoSQL são distribuídas desde a concepção e não têm um ponto único de falha. Elas também fornecem replicação fácil, tornando-as mais resistentes a interrupções e interrupções não planejadas.
Ao contrário dos bancos de dados relacionais, que são normalizados para reduzir a duplicação de dados, o NoSQL é otimizado para consultas rápidas. O NoSQL geralmente não exige junções complexas, o que significa que as consultas ao banco de dados retornam resultados mais rapidamente.
Os bancos de dados NoSQL ganharam muita popularidade nos últimos anos, mas há algumas desvantagens em usá-los em relação aos bancos de dados relacionais. Eles ainda são relativamente novos e podem não ter a maturidade dos sistemas de dados relacionais. Em geral, o NoSQL vem com menos experiência de desenvolvedor, menos ferramentas e produtos disponíveis e menos suporte em caso de problemas não documentados.
Além disso, o NoSQL não tem uma língua franca como o SQL. Cada banco de dados pode ter sua própria linguagem para a consulta e o gerenciamento de dados.
Em muitos casos, os bancos de dados NoSQL não têm as proteções de integridade de dados e o alto nível de consistência de dados que são padrão nos bancos de dados SQL. No entanto, alguns, como o Firestore e o MongoDB, são compatíveis com transações ACID.
Ainda assim, os modelos de consistência posterior são suficientes para a maioria dos casos de uso do NoSQL, em que um pequeno atraso de milissegundos não importa. Para muitos aplicativos, a alta disponibilidade e a velocidade superam em muito a necessidade de uma consistência global forte.
Então por que as organizações usam bancos de dados NoSQL não relacionais para alguns aplicativos ou permanecem com os bancos de dados SQL relacionais para outros? A escolha do banco de dados certo geralmente se resume ao seu caso de uso. Veja quando usar SQL versus NoSQL.
Os bancos de dados SQL são excelentes para gerenciar dados relacionais estruturados e consultas complexas. Os bancos de dados SQL são compatíveis com ACID, o que os torna confiáveis para informações transacionais.
Casos de uso do SQL:
Os bancos de dados NoSQL são excelentes em casos de uso que exigem um grande número de usuários distribuídos em todo o mundo para oferecer experiências altamente personalizadas. Esses aplicativos interativos têm melhor performance com a agilidade dos bancos de dados NoSQL.
Os bancos de dados NoSQL também priorizam a alta disponibilidade, oferecem desempenho consistente, escalonam rapidamente sem inatividade e podem lidar com grandes volumes de diferentes tipos de dados.
Esses recursos de bancos de dados NoSQL tornam os bancos de dados não relacionais ideais para aplicativos que exigem grande escala, confiabilidade e alta disponibilidade.
Os usos mais comuns de NoSQL incluem:
Comece a criar no Google Cloud com US$ 300 em créditos e mais de 20 produtos do programa Sempre gratuito.