O que é um banco de dados NoSQL?

12 de dezembro de 2022

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.

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 a disponibilidade e a confiabilidade dos dados. Se algumas das informações estiverem offline, o restante do banco de dados pode continuar a funcionar.

Atualmente, 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 em nuvem, big data e aplicações móveis e da web, os bancos de dados NoSQL oferecem essa velocidade e escalabilidade, tornando-os uma escolha popular pelo desempenho e 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, 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 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 bancos 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 conectassem tabelas ao fundir 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 aplicações 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 uma única aplicação. Os provedores de nuvem atuais podem oferecer compatibilidade com bancos de dados SQL ou NoSQL. O banco de dados que você vai escolher depende de 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?"

Projeto 3D de bolas rolando em uma pista

As últimas notícias e insights sobre IA 


Descubra insights selecionadas por especialistas sobre IA, nuvem e outros assuntos no boletim informativo semanal Think. 

Tipos de bancos de dados NoSQL

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

Um banco de dados NoSQL gerencia informações utilizando qualquer um desses 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 gráficos são utilizados para armazenar e gerenciar uma rede de conexões entre elementos dentro do gráfico. O Neo4j, um serviço de banco de dados baseado em gráficos baseado no Java com uma edição da comunidade de 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é-empacotada 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 em vez do 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 do NoSQL. Além dos mencionados acima, veja a seguir alguns bancos de dados NoSQL populares:

  • Apache CouchDB, um banco de dados baseado em documentos em JSON em código aberto que usa JavaScript como sua linguagem de consulta.
  • Elasticsearch, um banco de dados baseado em documentos que contém um mecanismo completo de pesquisas de texto.
  • O Couchbase, um banco de dados de documentos e chaves-valores que dá aos desenvolvedores a possibilidade de criar aplicações responsivas 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".

Mistura de Especialistas | Podcast

Decodificando a IA: resumo semanal das notícias

Junte-se a nosso renomado painel de engenheiros, pesquisadores, líderes de produtos e outros enquanto filtram as informações sobre IA para trazerem a você as mais recentes notícias e insights sobre IA.

Vantagens do NoSQL

Cada tipo de banco de dados NoSQL tem pontos fortes que o tornam melhor para casos de uso específicos. Porém, todos eles compartilham as seguintes vantagens para os desenvolvedores e criam a framework para prestar um serviço de melhor qualidade aos clientes, incluindo:

  • Relação custo-benefício: é caro manter um RDBMS comercial de alta qualidade. Exige a compra de licenças, a contratação de administradores de bancos de dados treinados e hardware poderoso para escalar verticalmente. Os bancos de dados NoSQL permitem o escalonamento horizontal rápido, alocando recursos de maneira otimizada para minimizar os custos.
  • Flexibilidade: a capacidade de escalonamento horizontal e um modelo de dados flexível também permitem que bancos de dados NoSQL manipulem grandes volumes de dados em rápida mudança, tornando-os ótimos 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 downtime 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 aplicações da web modernas e complexos, sites de comércio eletrônico ou aplicações móveis.

Em suma, 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ão de como sua organização pretende utilizá-lo. Veja a seguir alguns usos específicos de diferentes tipos de bancos de dados NoSQL.

  • Gerenciamento de relacionamentos de dados: o gerenciamento da agregação complexa de dados e dos relacionamentos entre esses pontos normalmente é feito com um banco de dados NoSQL baseado em gráficos. Isso inclui mecanismos de recomendação, gráficos de conhecimento, aplicações de detecção de fraudes e redes sociais, onde são feitas conexões entre pessoas usando diferentes tipos de dados.
  • Desempenho de baixa latência: jogos, aplicações domésticas 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. Aplicações da web necessitam de bancos de dados NoSQL in-memory para fornecer tempo de resposta rápido e gerenciar picos de uso sem os atrasos que podem ocorrer com o armazenamento em disco.
  • Escalonamento e grandes volumes de dados: o comércio eletrônico requer 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 chaves-valores são frequentemente utilizados em aplicações de comércio eletrônico porque sua estrutura simples é facilmente escalada em períodos de tráfego intenso. Essa agilidade é valiosa para aplicações 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 escalar mais rapidamente estimulou o crescimento dos microsserviços, o que levou as empresas a examinar qual tipo de banco de dados usar com diferentes aplicações.

As empresas descobriram que utilizar um único banco de dados relacional para cada componente de uma aplicação 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 toda uma aplicação. Em vez disso, a aplicação tem muitos serviços levemente acoplados e implementáveis de forma independente, cada um com seu próprio modelo de dados e banco de dados, integrados por meio de gateways de APIs ou uma iPaaS.

O padrão da utilização de vários bancos de dados em uma única aplicação, 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 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 relacionadas
Software e soluções de bancos de dados

Use soluções de bancos de dados da IBM para atender a diversas necessidades de cargas de trabalho em toda a nuvem híbrida.

Explore as soluções de banco de dados
Banco de dados nativo da nuvem com o IBM Db2

Explore o IBM Db2, um banco de dados relacional que oferece alto desempenho, escalabilidade e confiabilidade para armazenar e gerenciar dados estruturados. Está disponível como SaaS no IBM Cloud ou para auto-hospedagem.

Descubra o Db2
Serviços de consultoria de dados e análise de dados

Libere o valor dos dados empresariais com a IBM® Consulting, construindo uma organização orientada por insights, que proporciona vantagem comercial.

Conheça os serviços de análise de dados
Dê o próximo passo

Use soluções de bancos de dados da IBM para atender a diversas necessidades de cargas de trabalho em toda a nuvem híbrida.

Explore as soluções de banco de dados Descubra o IBM Db2