O que são bancos de dados NoSQL?
Descubra o NoSQL, um tipo de design de banco de dados que oferece mais flexibilidade do que um banco de dados tradicional
Círculos de fio azul sobre uma mesa
O que é banco de dados NoSQL?

NoSQL, também conhecido como "não apenas SQL", "não SQL", é uma abordagem de design de banco de dados que permite o armazenamento e consulta de dados fora das estruturas tradicionais encontradas em bancos de dados relacionais. Embora ainda possa armazenar dados encontrados em sistemas de gerenciamento de banco de dados relacional (RDBMS), ele apenas os armazena de maneira diferente em comparação com um RDBMS. A decisão de usar um banco de dados relacional versus um banco de dados não relacional é amplamente contextual e varia dependendo do caso de uso.

Em vez da estrutura tabular típica de um banco de dados relacional, os bancos de dados NoSQL armazenam dados em uma estrutura de dados, como um documento JSON. Como esse design de banco de dados não relacional não requer um esquema, ele oferece escalabilidade rápida para gerenciar conjuntos de dados grandes e normalmente não  estruturados.

O NoSQL também é um tipo de banco de dados distribuído, o que significa que as informações são copiadas e armazenadas em vários servidores, que podem ser remotos ou locais. Isso garante disponibilidade e confiabilidade de dados. Se alguns dos dados ficarem off-line, o restante do banco de dados poderá continuar em execução.  

Hoje, as empresas precisam gerenciar grandes volumes de dados em alta velocidade com a capacidade de escalar rapidamente para executar aplicativos da Web modernos em quase todos os setores. Nesta era de crescimento na cloud, big data e aplicativos móveis e da web, os bancos de dados NoSQL fornecem essa velocidade e escalabilidade, tornando-os uma escolha popular por seu desempenho e facilidade de uso. 

NoSQL vs. SQL

A linguagem de consulta estruturada (SQL) é comumente referenciada em relação ao NoSQL. Para entender melhor a diferença entre NoSQL e SQL, pode ser útil entender a história do SQL, uma linguagem de programação usada para recuperar informações específicas de um banco de dados.  

Antes dos bancos de dados relacionais, as empresas usavam um sistema de banco de dados hierárquico com uma estrutura semelhante a uma árvore para as tabelas de dados. Esses primeiros sistemas de gerenciamento de banco de dados (DBMS) permitiam que os usuários organizassem grandes quantidades de dados. No entanto, eles eram complexos, geralmente proprietários de um aplicativo específico e limitados nas formas como podiam ser descobertos nos dados. Essas limitações acabaram levando ao desenvolvimento de sistemas de gerenciamento de banco de dados relacionais, que organizam os dados em tabelas. O SQL forneceu uma interface para interagir com dados relacionais, permitindo que os analistas conectassem tabelas mesclando campos comuns.

Com o passar do tempo, as demandas por uso mais rápido e díspar de grandes conjuntos de dados tornaram-se cada vez mais importantes para tecnologias emergentes, como aplicativos de comércio eletrônico. Os programadores precisavam de algo mais flexível do que bancos de dados SQL (ou seja, bancos de dados relacionais). O NoSQL tornou-se essa alternativa. 

Embora o NoSQL tenha fornecido uma alternativa ao SQL, esse avanço não substituiu os bancos de dados SQL. Por exemplo, digamos que você esteja gerenciando pedidos de varejo em uma empresa. Em um modelo relacional, as tabelas individuais gerenciariam os dados do cliente, os dados do pedido e os dados do produto separadamente e seriam unidos por meio de uma chave única e comum, como um ID do cliente ou um ID do pedido. Embora isso seja ótimo para armazenar e recuperar dados rapidamente, requer memória significativa. Quando você deseja adicionar mais memória, os bancos de dados SQL só podem ser dimensionados verticalmente, não horizontalmente, o que significa que sua capacidade de incluir mais memória é limitada ao hardware que você possui. O resultado é que a escala vertical acaba por limitar o armazenamento e a recuperação de dados de sua empresa.

Em comparação, os bancos de dados NoSQL não são relacionais, o que elimina a necessidade de conectar tabelas.Suas capacidades embutidas de fragmentação e alta disponibilidade facilitam o ajuste de escala horizontal. Se um único servidor de banco de dados não for suficiente para armazenar todos os seus dados ou lidar com todas as consultas, a carga de trabalho poderá ser dividida em dois ou mais servidores, permitindo que as empresas escalem seus dados horizontalmente.

Embora cada tipo de banco de dados tenha suas próprias vantagens, as empresas geralmente utilizam bancos de dados NoSQL e relacionais em um único aplicativo. Os provedores de cloud de hoje podem oferecer suporte a bancos de dados SQL ou NoSQL. O banco de dados que você escolher depende dos seus objetivos

Para saber mais sobre as diferenças entre as duas opções, consulte "Bancos de dados SQL vs. NoSQL: qual é a diferença?"

Tipos de bancos de dados NoSQL

O NoSQL fornece outras opções para organizar dados de várias maneiras. Ao oferecer diversas estruturas de dados, o NoSQL pode ser aplicado para análise de dados, gerenciamento de big data, redes sociais e desenvolvimento de aplicativos móveis. 

Um banco de dados NoSQL gerencia informações usando qualquer um desses modelos de dados primários: 

Armazenamento de chave-valor

Isso é normalmente considerado a forma mais simples de bancos de dados NoSQL. Esse modelo de dados sem esquema é organizado em um dicionário de pares chave-valor, onde cada item possui uma chave e um valor. A chave pode ser algo semelhante encontrado em um banco de dados SQL, como um ID de carrinho de compras, enquanto o valor é uma matriz de dados, como cada item individual no carrinho de compras do usuário. É comumente usado para armazenar em cache e armazenar informações de sessão do usuário, como carrinhos de compras. No entanto, não é ideal quando você precisa extrair vários registros de uma vez. Redis e Memcached são exemplos de bancos de dados chave-valor de software livre.

Armazenamento de documento

Conforme sugerido pelo nome, os bancos de dados de documentos armazenam dados como documentos. Eles podem ser úteis no gerenciamento de dados semiestruturados, e os dados geralmente são armazenados nos formatos JSON, XML ou BSON. Isso mantém os dados juntos quando são usados em aplicativos, reduzindo a quantidade de conversão necessária para usar os dados. Os desenvolvedores também ganham mais flexibilidade, pois os esquemas de dados não precisam corresponder entre os documentos (por exemplo, nome x primeiro_nome). No entanto, isso pode ser problemático para transações complexas, levando à corrupção de dados. Os casos de uso populares de bancos de dados de documentos incluem sistemas de gerenciamento de conteúdo e perfis de usuário. Um exemplo de  banco de dados orientado a documentos é o  MongoDB, o componente de banco de dados da pilha MEAN.

Quer saber mais sobre o MongoBD? Confira o tutorial IBM em introdução ao uso do IBM Cloud Databases for MongoDB. 

Armazenamento de coluna larga

Esses bancos de dados armazenam informações em colunas, permitindo que os usuários acessem apenas as colunas específicas de que precisam, sem alocar memória adicional para dados irrelevantes. Esse banco de dados tenta solucionar as deficiências de armazenamento de chave-valor e documentos, mas, como pode ser um sistema mais complexo de gerenciar, não é recomendado para equipes e projetos mais novos. O Apache HBase e o Apache Cassandra são exemplos de bancos de dados de coluna e software livre. O Apache HBase foi desenvolvido sobre o Hadoop Distributed Files System que fornece uma maneira de armazenar conjuntos de dados esparsos, que é comumente usado em muitos aplicativos de big data. O Apache Cassandra, por outro lado, foi projetado para gerenciar grandes quantidades de dados em vários servidores e clusters que abrangem vários centros de dados. Tem sido usado para uma variedade de casos de uso, como sites de redes sociais e análise de dados em tempo real.

Armazenamento de gráfico

Esse tipo de banco de dados geralmente armazena dados de um gráfico de conhecimento. Os elementos de dados são armazenados como nós, bordas e propriedades. Qualquer objeto, lugar ou pessoa pode ser um nó. Uma borda define o relacionamento entre os nós. Por exemplo, um nó pode ser um cliente, como a IBM, e uma agência, como a Ogilvy. Uma vantagem seria categorizar o relacionamento como um relacionamento com o cliente entre a IBM e a Ogilvy.

Os bancos de dados de gráficos são usados para armazenar e gerenciar uma rede de conexões entre os elementos dentro do gráfico. O Neo4j (link externo à IBM), é um serviço de banco de dados baseado em gráfico baseado em Java com uma edição comunitária de software livre onde os usuários podem adquirir licenças para backup on-line e extensões de alta disponibilidade, ou versão licenciada pré-embalada com backup e extensões incluídas. 

Armazenamento na memória

Com esse tipo de banco de dados, como o IBM solidDB, os dados residem na memória principal e não no disco, tornando o acesso aos dados mais rápido do que com bancos de dados convencionais baseados em disco. 

Exemplos de bancos de dados NoSQL

Muitas empresas entraram no cenário NoSQL. Além dos mencionados acima, aqui estão alguns bancos de dados NoSQL populares: 

  • Apache CouchDB, um banco de dados baseado em documento JSON de software livre que usa JavaScript como sua linguagem de consulta. 
  • Elasticsearch, um banco de dados baseado em documentos que inclui um mecanismo de procura de texto completa. 
  • Couchbase, um banco de dados de valores-chave e documentos que capacita os desenvolvedores a criar aplicativos responsivos e flexíveis para computação em cloud, móvel e de borda. 

Para saber mais sobre o estado dos bancos de dados, consulte "Uma breve visão geral do cenário do banco de dados".

Benefícios do NoSQL

Cada tipo de banco de dados NoSQL possui pontos fortes que o tornam melhor para casos de uso específicos. No entanto, todos eles compartilham os seguintes benefícios para desenvolvedores e criam o framework para fornecer melhores serviços aos clientes, incluindo: 

  • Custo-benefício: é caro manter um RDBMS comercial de ponta. Eles exigem a compra de licenças, gerentes de banco de dados treinados e hardware poderoso para escalar verticalmente. Os bancos de dados NoSQL permitem escalar horizontalmente rapidamente, alocando melhor os recursos para minimizar os custos. 
  • Flexibilidade: a escala horizontal e um modelo de dados flexível também significam que os bancos de dados NoSQL podem lidar com grandes volumes de dados que mudam rapidamente, tornando-os excelentes para desenvolvimento ágil, iterações rápidas e pushes de código frequentes. 
  • Replicação: a funcionalidade de replicação sem SQL copia e armazena dados em vários servidores. Essa replicação fornece confiabilidade de dados, garantindo acesso durante o tempo de inatividade e protegendo contra perda de dados se os servidores ficarem off-line. 
  • Velocidade: o NoSQL permite armazenamento e processamento mais rápidos e ágeis para todos os usuários, de desenvolvedores a equipes de vendas e clientes. A velocidade também torna os bancos de dados NoSQL geralmente mais adequados para aplicativos modernos e complexos da Web, sites de comércio eletrônico ou aplicativos móveis.  

Resumindo, os bancos de dados NoSQL fornecem alto desempenho, disponibilidade e escalabilidade. 

Casos de uso do NoSQL

A estrutura e o tipo de banco de dados NoSQL escolhido dependerão de como sua organização planeja usá-lo. Aqui estão alguns usos específicos para vários tipos de bancos de dados NoSQL. 

  • Gerenciando relacionamentos de dados: o gerenciamento da complexa agregação de dados e as relações entre esses pontos geralmente é feito com um banco de dados NoSQL baseado em gráfico. Isso inclui mecanismos de recomendação, gráficos de conhecimento, aplicativos de detecção de fraude e redes sociais, em que conexões são feitas entre pessoas usando vários tipos de dados. 
  • Desempenho de baixa latência: jogos, aplicativos de condicionamento físico doméstico e tecnologia de anúncios exigem alto rendimento para gerenciamento de dados em tempo real. Essa infraestrutura oferece o maior valor para o consumidor, sejam atualizações de lances de mercado ou retorno dos anúncios mais relevantes. Os aplicativos da Web requerem bancos de dados NoSQL na memória para fornecer tempo de resposta rápido e gerenciar picos de uso sem o atraso que pode vir com o armazenamento em disco. 
  • Ajuste de escala e grandes volumes de dados: o comércio eletrônico requer a capacidade de gerenciar grandes picos de uso, seja para uma liquidação de um dia ou para a temporada de compras de fim de ano. Os bancos de dados de valor-chave são frequentemente usados em aplicativos de comércio eletrônico porque sua estrutura simples é facilmente ampliada durante períodos de tráfego intenso. Essa agilidade é valiosa para aplicativos de jogos, adtech e Internet das coisas (IoT). 
Microsserviços e bancos de dados NoSQL

A necessidade das grandes empresas de fornecer serviços sem latência e escalar mais rapidamente estimulou o crescimento dos microsserviços o que levou as empresas a examinar qual tipo de banco de dados usar para diferentes aplicativos. 

As empresas descobriram que usar um único banco de dados relacional para cada componente de um aplicativo tem suas limitações, especialmente quando existem alternativas melhores para componentes específicos. Os microsserviços são uma opção atraente, em parte, porque eliminam a necessidade de um único armazenamento de dados compartilhado para um aplicativo inteiro. Em vez disso, o aplicativo tem muitos serviços livremente acoplados e implementáveis de forma independente, cada um com seu próprio modelo de dados e banco de dados, e integrados via APIgateways ou um iPaaS

O padrão de uso de vários bancos de dados em um único aplicativo, também conhecido como persistência poliglota, ajudou a criar espaço no mercado para que os bancos de dados NoSQL prosperassem. Hoje, os desenvolvedores podem aproveitar o banco de dados certo para o microsserviço certo sem tentar fazer tudo funcionar no contexto de um único banco de dados relacional. 

Soluções IBM
Saiba qual tipo de banco de dados usar

Conheça os diferentes fatores a serem considerados ao tentar determinar as melhores opções de banco de dados ao refatorar para uma abordagem de microsserviços.

Saiba mais sobre bancos de dados para microsserviços
IBM® Microservices

Saiba mais sobre Microsserviços (ou arquitetura de microsserviços), uma abordagem de arquitetura nativa da cloud na qual um único aplicativo é composto de muitos componentes ou serviços menores fracamente acoplados e implementáveis de forma independente.

Saiba mais sobre o valor dos microsserviços
Recursos Bancos de dados SQL vs NoSQL: qual é a diferença?

Conheça as principais diferenças entre bancos de dados SQL e NoSQL e saiba qual tipo de banco de dados é melhor para vários casos de uso.

Usando um banco de dados NoSQL para gerenciar informações em um ambiente de varejo moderno

Saiba como acelerar a mudança para as compras on-line.

Dê o próximo passo

Hoje, muitos aplicativos são entregues como serviços, e esses serviços devem estar disponíveis 24 horas por dia, sete dias por semana, acessíveis a partir de uma ampla variedade de dispositivos e dimensionados para o que pode ser potencialmente milhões de usuários. O IBM Cloudant é um banco de dados de documentos JSON escalável otimizado para aplicativos da Web, aplicativos móveis, aplicativos IoT e aplicativos serverless. O serviço é compatível com um ecossistema de software livre que inclui Apache CouchDB, PouchDB e bibliotecas para as pilhas de desenvolvimento móvel e da Web mais populares.

Teste o IBM Cloudant agora