AnúncioApresentando MongoDB 8.0, o MongoDB mais rápido de todos os tempos! Leia mais >
AnúncioVoyage AI se junta ao MongoDB para impulsionar aplicativos de AI mais precisos e confiáveis no Atlas. Saiba mais >

O que é NoSQL?

Crie um cluster NoSQL gratuitamente
Experimente um banco de dados NoSQL com o Atlas

O que é NoSQL?

Os bancos de dados NoSQL (também conhecidos como "not only SQL") armazenam dados de maneira diferente das tabelas relacionais. Existem diversos tipos de bancos de dados NoSQL, de acordo com o modelo de dados. Os principais tipos são documento, chave-valor, colunar amplo e grafo. Eles oferecem esquemas flexíveis e são facilmente dimensionados para lidar com grandes volumes de big data e altas cargas de usuários.

Neste artigo, você aprenderá o que é um banco de dados NoSQL, por que (e quando) deve usá-lo e como começar.

Índice

O que é um banco de dados NoSQL?

Quando as pessoas usam o termo “banco de dados NoSQL”, geralmente estão se referindo a qualquer banco de dados não relacional. Alguns dizem que o termo NoSQL significa “não SQL”, enquanto outros afirmam que significa “não apenas SQL" (not only SQL). De qualquer forma, a maioria concorda que os bancos de dados NoSQL armazenam dados de maneira mais natural e flexível. O NoSQL, em oposição ao SQL, é uma abordagem de gerenciamento de bancos de dados, enquanto o SQL é apenas uma linguagem de query, assim como as linguagens de query dos bancos de dados NoSQL.

Tipos de bancos de dados — NoSQL

Com o tempo, surgiram quatro principais tipos de bancos de dados NoSQL: bancos de dados de documentos, bancos de dados chave-valor, bancos de dados colunares amplos e bancos de dados de grafos. Atualmente, os bancos de dados multimodelo também estão sendo bastante usados.

Bancos de dados orientados a documentos

Um banco de dados orientado a documentos armazena dados em documentos com estrutura semelhante à de objetos JSON (JavaScript Object Notation). Cada documento contém pares de campos e valores. Os valores podem ser de diversos tipos, incluindo strings, números, booleanos, arrays ou até mesmo outros objetos. Um banco de dados de documentos oferece um modelo de dados flexível, ideal para conjuntos de dados semiestruturados e, em geral, não estruturados. Além disso, oferece suporte a estruturas aninhadas, facilitando a representação de relacionamentos complexos ou dados hierárquicos.

Entre os exemplos de bancos de dados de documentos estão MongoDB e Couchbase. Um documento típico tem a seguinte estrutura:

 

 

Bancos de dados chave-valor

Um banco de dados chave-valor é um tipo mais simples de banco de dados, no qual cada item contém chaves e valores. Cada chave é única e está associada a um único valor. São usados para cache e gerenciamento de sessões e oferecem alto desempenho em leituras e gravações, pois geralmente armazenam os dados em memória. Exemplos incluem Amazon DynamoDB e Redis. Veja abaixo uma visualização simples dos dados armazenados em um banco de dados chave-valor:

 

 

Armazenamentos de colunas amplas

Bancos de dados colunares amplos armazenam dados em tabelas, linhas e colunas dinâmicas. Os dados são armazenados em tabelas; no entanto, ao contrário dos bancos de dados SQL tradicionais, os bancos de dados colunares amplos são flexíveis, permitindo que diferentes linhas tenham conjuntos distintos de colunas. Esses bancos de dados podem empregar técnicas de compactação por coluna para reduzir o espaço de armazenamento e melhorar o desempenho. As linhas e colunas amplas permitem a recuperação eficiente de dados esparsos e extensos. Dois exemplos de bancos de dados colunares amplos são Apache Cassandra e HBase. Veja um exemplo típico de como os dados são armazenados em um banco de dados colunar amplo:

 

name id email dobcity
Foo bar12345 foo@bar.com Some city
Carn Yale34521bar@foo.com 12-05-1972

 

Bancos de dados de grafos

Um banco de dados de grafos armazena dados na forma de nós e arestas. Os nós geralmente armazenam informações sobre pessoas, lugares e coisas (geralmente substantivos), enquanto as arestas armazenam informações sobre os relacionamentos entre os nós. Esses bancos de dados funcionam bem para dados altamente conectados, nos quais os relacionamentos ou padrões podem não ser evidentes inicialmente. Exemplos de bancos de dados de grafos incluem Neo4J e Amazon Neptune. O MongoDB também oferece recursos de travessia de grafos usando o estágio $graphLookup do pipeline de agregação. A seguir, veja um exemplo de como os dados são armazenados:

Bancos de dados multimodelo

Bancos de dados multimodelo oferecem suporte a mais de um tipo de modelo de dados NoSQL, permitindo que os desenvolvedores escolham o mais adequado de acordo com os requisitos da aplicação. Esses bancos de dados contam com um mecanismo de banco de dados unificado, capaz de lidar com múltiplos modelos de dados em uma única instância de banco de dados. Exemplos incluem CosmosDB e ArangoDB.

Comparação rápida dos tipos de bancos de dados — NoSQL

Cada tipo de banco de dados NoSQL oferece recursos diferentes. Por exemplo, bancos de dados de grafos são mais adequados para analisar relacionamentos complexos e padrões entre entidades, enquanto bancos de dados de documentos oferecem uma forma mais flexível e natural de armazenar e recuperar grandes volumes de dados de tipos semelhantes na forma de documentos. A escolha do banco de dados depende do caso de uso que você pretende desenvolver.

Para saber mais, leia Entenda sobre os diferentes tipos de banco de dados NoSQL.

Breve história do banco de dados NoSQL

Os bancos de dados NoSQL surgiram no final dos anos 2000, à medida que o custo de armazenamento diminuiu significativamente. Não era mais necessário criar um modelo de dados complexo e difícil de gerenciar para evitar a duplicação de dados. Os bancos de dados NoSQL foram otimizados para melhorar a produtividade dos desenvolvedores.

À medida que os custos de armazenamento diminuíram, a quantidade de dados que as aplicações precisavam armazenar e consultar aumentou. Esses dados passaram a existir em todo tipo de formatos — estruturados, semiestruturados e não estruturados —, e definir o esquema antecipadamente tornou-se praticamente impossível. Os bancos de dados NoSQL permitem que os desenvolvedores armazenem grandes volumes de dados não estruturados, oferecendo muita flexibilidade.

No início dos anos 2000, um artigo publicado pelo Google sobre o BigTable, o banco de dados colunar amplo, explorou a ampla variedade de possibilidades para um sistema de armazenamento distribuído. Em 2009, houve um grande crescimento dos bancos de dados NoSQL, com a chegada de dois importantes bancos de dados orientados a documentos: MongoDB e CouchDB.

Na década de 2010, surgiram diferentes tipos de bancos de dados NoSQL, e a aceitação do NoSQL tornou-se generalizada, com as empresas cada vez mais orientadas a dados.

Além disso, o Manifesto Agile estava se popularizando e os engenheiros de software começaram a repensar como deveriam desenvolver seus sistemas. Eles precisavam se adaptar rapidamente a requisitos em constante mudança, iterar com agilidade e fazer alterações em toda a pilha de software, incluindo o banco de dados. Os bancos de dados NoSQL proporcionaram a eles essa flexibilidade.

A computação em nuvem também expandiu, e os desenvolvedores começaram a utilizar nuvens públicas para hospedar aplicações e dados. Eles buscavam a capacidade de distribuir dados entre múltiplos servidores e regiões para tornar suas aplicações mais resilientes, dimensionar horizontalmente em vez de verticalmente e posicionar seus dados geograficamente. Alguns bancos de dados NoSQL, como MongoDB Atlas, oferecem essas funcionalidades.

Devido ao crescimento exponencial da digitalização, as empresas hoje coletam o máximo possível de dados não estruturados. Para poder analisar e extrair insights em tempo real a partir de tais big data, as empresas precisam de soluções modernas que vão além do simples armazenamento. É necessário um plataforma capaz de dimensionar, transformar e visualizar dados; criar dashboards, relatórios e gráficos; e trabalhar com IA e ferramentas de business intelligence para acelerar a produtividade do negócio. Devido à sua natureza flexível e distribuída, os bancos de dados NoSQL (como o MongoDB) são ideais para essas tarefas.

Recursos do banco de dados NoSQL

Bancos de dados NoSQL são bancos de dados flexíveis, dimensionáveis e distribuídos. Cada tipo de banco de dados NoSQL possui seus recursos exclusivos.

Em um nível geral, os bancos de dados NoSQL normalmente oferecem os seguintes recursos:

Conformidade com BASE

Bancos de dados NoSQL são compatíveis com BASE, sigla em inglês para basic availability soft state eventual consistency. Basic availability (disponibilidade básica) refere-se à capacidade do sistema de tolerar uma falha parcial (como a perda de um nó). Soft state (estado suave) significa que o sistema permite inconsistências temporárias antes de, eventualmente, atingir a consistência automaticamente ao longo do tempo. A conformidade com BASE garante alta disponibilidade, processamento de dados mais rápido, escalabilidade e flexibilidade. No entanto, o MongoDB também pode ser configurado para fornecer ACID compliance em múltiplos documentos.

Conheça as vantagens do banco de dados NoSQL.

Exemplo de banco de dados relacional x banco de dados NoSQL

Vamos usar um exemplo de armazenamento de informações sobre um usuário e seus hobbies. Precisamos armazenar o nome, sobrenome, número de telefone celular, cidade e hobbies de um usuário.

Em um sistema de gerenciamento de banco de dados relacional (RDBMS), provavelmente criaríamos duas tabelas: uma para Usuários e outra para Hobbies.

Para recuperar todas as informações sobre um usuário e seus hobbies, seria necessário realizar uma junção (join) entre as tabelas Usuários e Hobbies.

O modelo de dados que projetamos para um banco de dados NoSQL dependerá do tipo de banco de dados NoSQL escolhido. Agora vamos falar sobre como armazenar as mesmas informações sobre um usuário e seus hobbies em um banco de dados de documentos, como o MongoDB.

Para recuperar todas as informações sobre um usuário e seus hobbies, um único documento pode ser obtido do banco de dados. Não são necessárias junções, o que resulta em queries mais rápidas.

Para ver uma versão mais detalhada deste exemplo de modelagem de dados, leia Mapeamento de termos e conceitos do SQL para o MongoDB.

Diferenças entre bancos de dados RDBMS e NoSQL

Há uma variedade de diferenças entre sistemas de gerenciamento de bancos de dados relacionais e bancos de dados não relacionais. Uma das principais diferenças é a forma como os dados são modelados no banco de dados. Veja abaixo algumas distinções importantes de cada recurso:

Modelagem de dados

NoSQL: os modelos de dados variam de acordo com o tipo de banco de dados NoSQL utilizado — por exemplo, chave-valor, documentos, grafos e colunar amplo —, o que torna o modelo adequado para dados semiestruturados e não estruturados.

RDBMS: o RDBMS utiliza uma estrutura de dados tabular, com os dados representados como um conjunto de linhas e colunas, tornando o modelo adequado para dados estruturados.

Esquema

NoSQL: fornece um esquema flexível, no qual cada conjunto de documentos/pares linha-coluna/chave-valor pode conter diferentes tipos de dados. Essa flexibilidade facilita a alteração do esquema, quando necessário.

RDBMS: trata-se de um esquema fixo, no qual todas as linhas devem conter os mesmos tipos de colunas previamente definidos. É difícil alterar o esquema depois que os dados são armazenados.

Linguagem de query

NoSQL: varia de acordo com o tipo de banco de dados NoSQL utilizado. Por exemplo, o MongoDB usa MQL, e o Neo4J usa Cypher.

RDBMS: este sistema utiliza linguagem de query estruturada (SQL).

Escalabilidade

NoSQL: o NoSQL foi projetado para dimensionamento vertical e horizontal.

RDBMS: o RDBMS foi projetado para dimensionamento vertical. No entanto, pode oferecer capacidades limitadas de dimensionamento horizontal.

Relacionamento de dados

NoSQL: o relacionamento pode ser aninhado, explícito ou implícito.

RDBMS: os relacionamentos são definidos por meio de chaves estrangeiras e acessados por meio de junções (joins).

Tipo de transação

NoSQL: as transações são compatíveis com ACID ou BASE.

RDBMS: as transações são compatíveis com ACID.

Desempenho

NoSQL: o NoSQL é adequado para processamento em tempo real, análise de big data e ambientes distribuídos.

RDBMS: o RDBMS é adequado para cargas de trabalho com predominância de leitura e transações.

Consistência de dados

NoSQL: oferece consistência eventual na maioria dos casos.

RDBMS: oferece alta consistência de dados.

Computação distribuída

NoSQL: um dos principais motivos para a introdução do NoSQL foi a computação distribuída, e os bancos de dados NoSQL oferecem suporte ao armazenamento distribuído de dados, bem como ao dimensionamento vertical e horizontal por meio de fragmentação, replicação e clusterização.

RDBMS: o RDBMS oferece suporte à computação distribuída por meio de clusterização e replicação. No entanto, ele é menos dimensionável e flexível, pois não foi tradicionalmente projetado para oferecer suporte a uma arquitetura distribuída.

Tolerância a falhas

NoSQL: o NoSQL possui tolerância a falhas integrada e alta disponibilidade devido à replicação de dados.

RDBMS: o RDBMS utiliza mecanismos de replicação, backup e recuperação. No entanto, como não é projetado nativamente para esses cenários, medidas adicionais, como mecanismos de recuperação de desastres, podem precisar ser implementadas durante o desenvolvimento da aplicação.

Particionamento de dados

NoSQL: é feito através de fragmentação e replicação.

RDBMS: oferece suporte ao particionamento baseado em tabelas e à eliminação de partições (partition pruning).

Saiba mais sobre particionamento de dados aqui.

Mapeamento de dados para objetos

NoSQL: o NoSQL armazena os dados de diversas formas, por exemplo, como documentos JSON, em modelos colunares amplos ou como pares chave-valor. Fornece abstração por meio de frameworks de ODM (object–data mapping), permitindo trabalhar com dados NoSQL de forma orientada a objetos.

RDBMS: o RDBMS depende mais do mapeamento de dados para objetos, de modo que haja uma integração perfeita entre as colunas do banco de dados e o código da aplicação orientada a objetos.

Para saber mais sobre as diferenças entre bancos de dados relacionais e bancos de dados NoSQL, leia Bancos de dados NoSQL x SQL.

Casos de uso do NoSQL

Os sistemas de bancos de dados NoSQL são utilizados em praticamente todos os setores, para análises em tempo real, gerenciamento de conteúdo, aplicações de IoT, sistemas de recomendação, detecção de fraudes, gerenciamento de catálogos de produtos e muito mais. Os casos de uso variam dos mais críticos (por exemplo, armazenamento de dados financeiros e registros de saúde) aos mais descontraídos e triviais (por exemplo, armazenar leituras de IoT de uma caixa de areia inteligente para gatos).

Quando o NoSQL deve ser usado?

Ao decidir qual banco de dados utilizar, os responsáveis pela decisão normalmente identificam um ou mais dos seguintes fatores que os levam a escolher um banco de dados NoSQL:

  • Desenvolvimento Agile acelerado
  • Armazenamento de dados estruturados e semiestruturados
  • Grandes volumes de dados
  • Requisitos de arquitetura com dimensionamento horizontal
  • Paradigmas modernos de aplicação, como microsserviços e streaming de dados em tempo real

Veja Quando usar bancos de dados NoSQL e Exemplos de bancos de dados NoSQL para obter informações mais detalhadas sobre os fatores listados acima.

Equívocos sobre o banco de dados NoSQL

Ao longo dos anos, muitos equívocos sobre bancos de dados NoSQL se disseminaram pela comunidade de desenvolvedores. Nesta seção, falaremos sobre dois dos equívocos mais comuns.

Equívoco: dados relacionais são mais apropriados para bancos de dados relacionais

Um equívoco comum é acreditar que bancos de dados NoSQL, ou não relacionais, não armazenam bem dados de relacionamento. Bancos de dados NoSQL podem, sim, armazenar dados de relacionamento: apenas o fazem de forma diferente dos bancos de dados relacionais.

De fato, quando comparados aos bancos de dados relacionais, muitos consideram que a modelagem de dados de relacionamento em bancos de dados NoSQL é mais simples, pois os dados relacionados não precisam ser divididos entre tabelas. Os modelos de dados NoSQL permitem que dados relacionados sejam aninhados em uma única estrutura de dados.

Equívoco: bancos de dados NoSQL não oferecem suporte a transações ACID

Outro equívoco comum é a ideia de que bancos de dados NoSQL não oferecem suporte a transações ACID. Alguns bancos de dados NoSQL, como o MongoDB, de fato oferecem suporte a transações ACID.

Observe que a forma como os dados são modelados em bancos de dados NoSQL pode eliminar a necessidade de transações envolvendo múltiplos registros em muitos casos de uso. Considere o exemplo anterior, em que armazenamos informações sobre um usuário e seus hobbies tanto em um modelo relacional quanto em um banco de dados de documentos. Para garantir que as informações sobre um usuário e seus hobbies fossem atualizadas em conjunto em um banco de dados relacional, seria necessário usar uma transação para atualizar registros em duas tabelas. Para fazer o mesmo em um banco de dados de documentos, poderíamos atualizar um único documento, sem a necessidade de uma transação envolvendo múltiplos registros.

Para conhecer os equívocos comuns, leia Tudo o que você sabe sobre MongoDB está errado.

Tutoriais de queries no NoSQL

Você pode começar pelo MongoDB, o banco de dados NoSQL mais popular do mundo, segundo o DB-Engines. A forma mais fácil de começar a usar o MongoDB é por meio do MongoDB Atlas. O Atlas é o banco de dados como serviço totalmente gerenciado do MongoDB. O Atlas possui um tier grátis permanente, que você pode experimentar. Confira o tutorial do MongoDB Atlas para começar.

Você pode continuar a interação com seus dados usando o Atlas Data Explorer para incluir documentos, editar documentos existentes e excluir documentos.

Quando estiver tudo pronto para experimentar queries mais avançadas que agregam seus dados, crie um pipeline de agregação. O framework de agregação é uma ferramenta extremamente poderosa para analisar seus dados. Para saber mais, faça o curso gratuito M121 The MongoDB Aggregation Framework da MongoDB University.

Para visualizar seus dados, confira o MongoDB Charts. No Charts, é possível criar dashboards com diversos tipos de visualização dos seus dados.

Resumo

Os bancos de dados NoSQL oferecem uma variedade de benefícios, incluindo modelos de dados flexíveis, dimensionamento horizontal, consultas extremamente rápidas e facilidade de uso para desenvolvedores. Os bancos de dados NoSQL existem em diferentes tipos, como bancos de dados de documentos, bancos de dados chave-valor, bancos de dados colunares amplos, bancos de dados de grafos e bancos de dados multimodelo.

O MongoDB é o banco de dados NoSQL mais popular do mundo. Aprenda mais sobre o MongoDB Atlas e experimente o tier grátis.

Quer aprender mais agora que você já tem sua própria conta do Atlas? Acesse a MongoDB University, onde você pode obter treinamento online gratuito com engenheiros do MongoDB e obter uma certificação MongoDB. Os Quickstarts são outro excelente ponto de partida; eles permitem começar rapidamente a trabalhar com sua linguagem de programação de preferência.

Perguntas frequentes

Este artigo foi escrito por Lauren Schaefer, líder dos desenvolvedores do MongoDB.

Saiba mais sobre as principais diferenças entre bancos de dados NoSQL e SQL

Recursos relacionados ao NoSQL

Saiba mais

Comece a usar o Atlas hoje mesmo

Comece em segundos. Nossos grupos gratuitos oferecem 512 MB de armazenamento para que você possa usar dados de amostragem e conhecer mais sobre a nossa plataforma.
Experimente grátisFale com a equipe de vendas
COMECE A USAR:
  • Mais de 125 regiões em todo o mundo
  • Amostragem de conjuntos de dados
  • Autenticação sempre ativada
  • Criptografia de ponta a ponta
  • Ferramentas de linha de comando