O que é um banco de dados NoSQL?
Explore a solução de banco de dados NoSQL da IBM Inscreva-se para receber atualizações de IA
Ilustração com colagem de pictogramas de nuvens, gráfico de pizza, pictogramas de gráfico no seguinte
O que é um banco de dados NoSQL?

O NoSQL, também conhecido como "não somente SQL" ou "não SQL", é uma abordagem de projeto de banco de dados que possibilita o armazenamento e a consulta de dados fora das estruturas tradicionais encontradas nos bancos de dados relacionais.

Embora o NoSQL ainda possa armazenar dados encontrados em sistemas de gerenciamento de banco de dados relacional (RDBMS), a forma de armazenamento é diferente do RDBMS. A decisão de utilizar um banco de dados relacional em vez de um banco de dados não relacional é amplamente contextual e varia dependendo do caso de uso.

No lugar da estrutura tabular típica dos bancos de dados relacionais, os bancos de dados NoSQL armazenam dados em estruturas de dados, como um documento JSON. Como esse design de banco de dados não relacional não exige um esquema, oferece rápida escalabilidade para gerenciar conjuntos de dados grandes e normalmente não estruturados.

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 a disponibilidade e a confiabilidade dos dados. Se alguns dos dados ficarem offline, o restante do banco de dados poderá continuar a ser executado.  

Hoje, as empresas precisam gerenciar grandes volumes de dados em alta velocidade, com a possibilidade de ampliação rápida para executar aplicações da web modernas em quase todos os setores. Nesta era de crescimento na nuvem, big data e aplicativos móveis e na web, os bancos de dados NoSQL oferecem essa velocidade e escalabilidade, tornando-os uma escolha popular pelo desempenho e pela facilidade de uso.  

NoSQL versus SQL

A linguagem de consulta estruturada (SQL) é comumente mencionada em relação ao NoSQL. Para entender melhor a diferença entre NoSQL e SQL, talvez ajude conhecer a história do SQL, linguagem de programação utilizada para ler informações específicas de bancos de dados.  

Antes dos bancos de dados relacionais, as empresas utilizavam um sistema de banco de dados hierárquico com uma estrutura em á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, eram complexos, muitas vezes proprietários de uma aplicação específica e limitados na capacidade de descoberta dentro dos dados. Essas limitações acabaram levando ao desenvolvimento de sistemas de gerenciamento  debancos de dados relacionais, que organizavam os dados em tabelas. O SQL oferecia uma interface para interagir com dados relacionais, possibilitando que os analistas vinculassem tabelas vinculando campos em comum.

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 apresentado uma alternativa ao SQL, esse avanço não substituiu de forma alguma 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 em separado e eles seriam unidos por meio de uma chave comum exclusiva, como a ID do cliente ou a ID do pedido. Embora isso seja ótimo para armazenar e recuperar dados rápido, exige muita memória. Se você quiser adicionar mais memória, os bancos de dados SQL podem ser dimensionados somente no sentido vertical, não horizontal, o que significa que sua capacidade de adicionar mais memória está limitada ao hardware disponível. O resultado é que o dimensionamento vertical acaba limitando o armazenamento e a recuperação de dados da empresa.

Por outro lado, os bancos de dados NoSQL são não relacionais, o que elimina a necessidade de vincular tabelas. Seus recursos integrados de fragmentação e alta disponibilidade facilitam o dimensionamento 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 expandam 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 nuvem atuais podem oferecer compatibilidade a bancos de dados SQL ou NoSQL. O banco de dados que você vai 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?"

IA generativa e ML para empresas

Aprenda os principais benefícios da IA generativa e como as organizações podem incorporar IA generativa e aprendizado de máquina em seus negócios.

Conteúdo relacionado

Inscreva-se para receber o e-book sobre Presto

Tipos de bancos de dados NoSQL

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

Um banco de dados NoSQL gerencia informações por meio qualquer um destes modelos de dados primários: 

Armazenamento de chave-valor

Normalmente, essa é considerada a forma mais simples de bancos de dados NoSQL. Esse modelo de dados sem esquema é organizado em um dicionário de pares de chave-valor, onde cada item tem uma chave e um valor. A chave poderia ser algo semelhante ao encontrado em um banco de dados SQL, como uma identificação de carrinho de compras, enquanto o valor é um conjunto de dados, como cada item individual do carrinho de compras desse usuário. É comumente utilizado em cache e armazenamento de informações de sessões de usuários, como carrinhos de compras. No entanto, não é a solução ideal para extrair vários registros de uma vez. Redis e Memcached são exemplos de bancos de dados de valor-chave em código aberto.

Armazenamento de documentos

Conforme sugerido pelo nome, os bancos de dados de documentos armazenam dados como documentos. Eles podem ser úteis no gerenciamento de dados semi-estruturados, e os dados são tipicamente armazenados em formatos JSON, XML ou BSON. Isso mantém os dados reunidos quando utilizados em aplicações, reduzindo a quantidade de conversão necessária para utilizar os dados. Os desenvolvedores também ganham mais flexibilidade, já que os esquemas de dados não precisam ser os mesmos entre os documentos (por exemplo, nome vs. primeiro_nome). No entanto, isso pode ser problemático em transações complexas, levando ao corrompimento de dados. São casos de uso populares de bancos de dados de documentos os sistemas de gerenciamento de conteúdo e os perfis de usuário. Um exemplo de banco de dados baseado em documentos é o MongoDB, componente de banco de dados da stack MEAN.

Quer mais informações sobre o MongoBD? Consulte o tutorial da IBM sobre como começar a usar o IBM Cloud Databases for MongoDB. 

Armazenamento com colunas amplas

Esses bancos de dados armazenam informações em colunas, possibilitando que os usuários acessem somente as colunas específicas de que precisam sem alocar memória adicional para dados irrelevantes. Esse banco de dados tenta resolver as deficiências dos armazenamentos baseados em chave-valor e de documentos, mas como pode ser um sistema mais complexo de gerenciar, não é recomendado para equipes iniciantes e projetos mais novos. Apache HBase e Apache Cassandra são exemplos de bancos de dados de colunas amplas em código aberto. O Apache HBase é desenvolvido sobre o Hadoop Distributed Files System que oferece uma maneira de armazenar conjuntos de dados esparsos, comumente utilizados em muitas aplicações 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 diversos data centers. Tem sido utilizado em uma variedade de casos de uso, como sites de redes sociais e análise de dados em tempo real.

Armazenamento em grafos

Esse tipo de banco de dados normalmente abriga dados de um grafos de conhecimento. Os elementos de dados são armazenados como nós, arestas e propriedades. Qualquer objeto, lugar ou pessoa pode ser um nó. Uma aresta define a relação 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 em grafos são utilizados para armazenar e gerenciar uma rede de conexões entre elementos dentro do grafo. Neo4j (link fora da IBM), serviço de banco de dados baseado em grafos baseado em Java com uma edição da comunidade em código aberto, onde os usuários podem comprar licenças para backup online e extensões de alta disponibilidade, ou uma 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, veja a seguir alguns bancos de dados NoSQL populares: 

  • Apache CouchDB, banco de dados baseado em documentos em JSON em código aberto que utiliza JavaScript como linguagem de consulta. 
  • Elasticsearch, banco de dados baseado em documentos que contém um mecanismo completo de pesquisas de texto. 
  • Couchbase, banco de dados de documentos e chave-valor que dá aos desenvolvedores a possibilidade de criar aplicativos responsivos e flexíveis para computação em nuvem, móvel e edge computing. 

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

Vantagens do NoSQL 

Cada tipo de banco de dados NoSQL tem pontos fortes que o tornam melhor para casos de uso específicos. No entanto, todos eles compartilham as seguintes vantagens para os desenvolvedores e criam a estrutura para oferecer serviços melhores aos clientes: 

  • Relação custo-benefício: é caro manter um RDBMS comercial de alta qualidade. Exigem a compra de licenças, a contratação de administradores de banco de dados treinados e hardware poderoso para ampliar verticalmente.  Os bancos de dados NoSQL possibilitam a rápida expansão horizontal, alocando melhor os recursos para minimizar os custos. 
  • Flexibilidade: a expansão horizontal e o modelo de dados flexível também significam que os bancos de dados NoSQL são capazes de lidar com grandes volumes de dados que mudam rapidamente, o que os torna excelentes para o desenvolvimento ágil, iterações rápidas e atualizações frequentes de código. 
  • Replicação: a funcionalidade de replicação do NoSQL copia e armazena dados em vários servidores. Essa replicação proporciona confiabilidade de dados, garantindo o acesso durante o tempo de inatividade e protegendo contra perda de dados se os servidores ficarem offline. 
  • Velocidade: o NoSQL possibilita o armazenamento e o 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 mais adequados de forma geral para aplicativos da web modernos e complexos, sites de comércio eletrônico ou aplicativos móveis.  

Em poucas palavras, os bancos de dados NoSQL oferecem alto desempenho, disponibilidade e escalabilidade. 

Casos de uso do NoSQL 

A estrutura e o tipo de banco de dados NoSQL que você escolher dependerá de como sua organização pretende utilizá-lo. Veja a seguir alguns usos específicos de vários tipos de bancos de dados NoSQL. 

  • Gerenciamento de relações de dados: O gerenciamento da agregação complexa de dados e das relações entre esses pontos normalmente é feito com um banco de dados NoSQL baseado em grafos. Isso inclui mecanismos de recomendação, grafos de conhecimento, aplicativos de detecção de fraudes e redes sociais, onde são feitas conexões entre pessoas usando vários tipos de dados. 
  • Desempenho de baixa latência: jogos, aplicativos domésticos de condicionamento físico e tecnologia de anúncios exigem alto rendimento para o gerenciamento de dados em tempo real. Essa infraestrutura oferece o maior valor para o consumidor, seja atualizando os lances do mercado ou retornando os anúncios mais relevantes. Os aplicativos da web exigem bancos de dados NoSQL na memória para proporcionar tempo de resposta rápido e gerenciar picos de uso sem os atrasos que podem ocorrer com o armazenamento em disco. 
  • Dimensionamento e grandes volumes de dados: o comércio eletrônico exige a capacidade de gerenciar grandes picos de uso, seja para uma promoção de um dia ou para a temporada de compras natalinas. Bancos de dados de valores-chave são frequentemente utilizados em aplicações de comércio eletrônico porque sua estrutura simples é facilmente ampliada em 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 de grandes empresas de prestar serviços sem latência e de expandir mais rapidamente estimulou o crescimento dos microsserviços, o que levou as empresas a examinar qual tipo de banco de dados usar com diversos aplicativos. 

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

O padrão da utilização 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 os bancos de dados NoSQL prosperarem. Hoje, os desenvolvedores podem utilizar 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 relacionadas
IBM Cloudant

A camada de dados para aplicações de hiperescala resilientes e globalmente disponíveis, baseados no Apache CouchDB de código aberto

Conheça o IBM Cloudant
Recursos Bancos de dados SQL vs. NoSQL: qual é a diferença?

Explore as principais diferenças entre bancos de dados SQL e NoSQL e saiba qual o tipo de banco de dados mais adequado para vários casos de uso.

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

Saiba como acelerar a mudança para as compras online.

Saiba que tipo de banco de dados usar

Explore os diversos fatores a serem considerados quando tentar definir as melhores opções de banco de dados ao refatoração para uma abordagem de microsserviços.

Dê o próximo passo

Escale cargas de trabalho de IA para todos os seus dados, em qualquer lugar, com o IBM watsonx.data, um armazenamento de dados feito sob medida, construído em uma arquitetura aberta de data lakehouse.

Explore o watsonx.data Agende uma demonstração em tempo real