MongoDB World is back in NYC June 7 - 9!MongoDB World is back in NYC June 7 - 9!

O que é NoSQL?

Crie um cluster NoSQL gratuitamente
Experimente um banco de dados NoSQL com Atlas
O que é NoSQL?

Os bancos de dados NoSQL (também conhecidos como “não apenas SQL“) armazenam dados de forma diferente das tabelas relacionais. Existem bancos de dados NoSQL em uma variedade de tipos com base em seu modelo de dados. Os principais tipos são documento, valor-chave, coluna ampla e gráfico. Eles fornecem esquemas flexíveis e dimensionam facilmente com grandes quantidades de big data e altas cargas de usuário.

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

Índice
O que é um banco de dados NoSQL?

Quando as pessoas usam o termo “banco de dados NoSQL“, normalmente o usam para se referir a qualquer banco de dados não relacional. Alguns dizem que o termo “NoSQL“ significa “não SQL“, enquanto outros dizem que significa “não apenas SQL“. De qualquer forma, a maioria concorda que os bancos de dados NoSQL armazenam dados de uma forma mais natural e flexível. O NoSQL, ao contrário do SQL, é uma abordagem de gerenciamento de banco de dados de dados, enquanto o SQL é apenas uma linguagem de consulta, semelhante às linguagens de consulta dos bancos de dados NoSQL.

Tipos de bancos de dados — NoSQL

Com o tempo, quatro principais tipos de bancos de dados NoSQL surgiram: bancos de dados de documento , bancos de dados de valores-chave, armazenamentos de colunas largas e bancos de dados gráficos. Hoje em dia, os bancos de dados multimodelos também estão se tornando bastante populares.

Bancos de dados orientados a documentos

Um banco de banco de dados orientado a documentos armazena dados em documentos semelhantes a objetos JSON (JavaScript Object Notion). Cada documento contém pares de campos e valores. Os valores normalmente podem ser uma variedade de tipos, incluindo coisas como strings, números, booleanos, matrizes ou até mesmo outros objetos. Um banco de banco de dados de documento oferece um modelo de dados flexível, muito adequado para conjuntos de dados semiestruturados e normalmente não estruturados. Eles também oferecem suporte a estruturas aninhadas, facilitando a representação de relacionamentos complexos ou dados hierárquicos.

Exemplos de bancos de dados de documento são MongoDB e Couchbase. Um documento típico será semelhante ao seguinte:

Bancos de dados de valores-chave

Um armazenamento de valores-chave é um tipo mais simples de banco de banco de dados onde cada item contém chaves e valores. Cada chave é única e está associada a um único valor. Eles são usados para armazenamento em cache e gerenciamento de sessões e oferecem alto desempenho em leituras e gravações porque tendem a armazenar coisas na memória. Os exemplos são Amazon DynamoDB e Redis. Uma visão simples dos dados armazenados em um banco de banco de dados de valores-chave é fornecido abaixo:

Armazenamentos de coluna larga

Os armazenamentos de coluna larga 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 armazenamentos de colunas largas são flexíveis, onde diferentes linhas podem ter diferentes conjuntos de colunas. Esses bancos de dados podem empregar técnicas de compactação de colunas para reduzir o espaço de armazenamento e melhorar o desempenho. As linhas e colunas largas permitem a recuperação eficiente de dados escassos e amplos. Alguns exemplos de armazenamentos de coluna larga são Apache Cassandra e HBase. Um exemplo típico de como os dados são armazenados em uma coluna ampla é o seguinte:

nameidemaildobcity
Foo bar12345foo@bar.comSome city
Carn Yale34521bar@foo.com12-05-1972

Bancos de dados de gráficos

Um banco de dados de gráficos armazena dados na forma de nós e bordas. Os nós normalmente armazenam informações sobre pessoas, lugares e coisas (como nomes), enquanto as bordas armazenam informações sobre os relacionamentos entre os nós. Eles funcionam bem para dados altamente conectados, onde os relacionamentos ou padrões podem não ser muito óbvios inicialmente. Exemplos de bancos de dados gráficos são Geo4J e Amazon Neptune. O MongoDB também fornece recursos de passagem de gráficos usando o estágio $graphLookup do pipeline de agregação. Veja abaixo um exemplo de como os dados são armazenados:

Exemplo de bancos de dados gráficos.
Bancos de dados multimodelo

Bancos de dados multimodelo suportam mais de um tipo de modelo de dados NoSQL, de maneira que os desenvolvedores possam escolher com base nos requisitos de sua aplicação . Esses bancos de dados têm um mecanismo de banco de dados unificado que pode lidar com vários modelos de dados em uma instância de banco de dados. Os exemplos são KosmosDB e ArongDB.

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

Cada um dos bancos de dados NoSQL oferece recursos diferentes. Por exemplo, os bancos de dados gráficos podem ser mais adequados para analisar relacionamentos e padrões complexos entre entidades, enquanto os bancos de dados de documento fornecem uma maneira mais flexível e natural de armazenar e recuperar grandes volumes de dados de tipos semelhantes como documentos. A escolha do banco de dados de dados depende do caso de uso que você deseja desenvolver.

Comparação de tipos de bancos de dados NoSQL.

Para saber mais, leia Compreensão dos diferentes tipos de bancos de dados NoSQL.

Resumo de histórico dos bancos de dados NoSQL Os bancos de dados

NoSQL surgiram no final dos anos 2000, quando o custo do armazenamento diminuiu drasticamente. Já se foi o tempo em que era necessário criar um modelo de dados complexo e difícil de gerenciar para evitar a duplicação de dados. Bancos de dados NoSQL otimizados para a produtividade do desenvolvedor.

À medida que os custos de armazenamento diminuiram rapidamente, a quantidade de dados que os aplicativos precisavam armazenar e consultar aumentava. Esses dados vêm de todas as formas e tamanhos — estruturados, semiestruturados e não estruturados — e definir o esquema com antecedência tornou-se quase impossível. Os bancos de dados NoSQL permitem que os desenvolvedores armazenem grandes quantidades de dados não estruturados, o que lhes dá muita flexibilidade.
Resumo de histórico dos bancos de dados NoSQL.

No início dos anos 2000, um artigo publicado pelo Google sobre o BigTable, o banco de dados de colunas largas, explorou a ampla gama de possibilidades de um sistema de armazenamento distribuído. Em 2009, ocorreu um grande aumento nos bancos de dados NoSQL, com dois bancos de dados importantes orientados a documentos, o MongoDB e o CouchDB, entrando em ação.

Na década de 2010, surgiram diferentes tipos de bancos de dados NoSQL e a adesão ao NoSQL tornou-se generalizada, com as empresas se tornando mais orientadas por dados.

Além disso, o Manifesto Ágil estava ganhando popularidade, e os engenheiros de software estavam repensando a maneira como desenvolviam software. Eles tiveram que se adaptar rapidamente às mudanças nos requisitos, iterar rapidamente e fazer alterações em toda a sua pilha de software — até o banco de dados de dados . Os bancos de dados NoSQL ofereceram essa flexibilidade.

A computação em nuvem também aumentou em popularidade, e os desenvolvedores começaram a usar nuvens públicas para hospedar seus aplicativos e dados. Eles queriam ter a capacidade de distribuir dados em vários servidores e regiões para tornar seus aplicativos resilientes, dimensionar horizontalmente em vez de dimensionar verticalmente e geolocalizar inteligentemente seus dados. Alguns bancos de dados NoSQL, como o MongoDB Atlas, forneça esses recursos.

Devido ao crescimento exponencial da digitalização, as empresas agora coletam o máximo possível de dados não estruturados. Para ser capaz de analisar e obter 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. As empresas precisam de uma plataforma que possa facilmente expandir, transformação, e visualize dados; crie painéis, relatórios e gráficos; e trabalhar com IA e ferramentas de business intelligence para acelerar a produtividade dos negócios. Devido à sua natureza flexível e distribuída, os bancos de dados NoSQL (por exemplo, MongoDB) se destacam nessas tarefas.

Recursos do banco de dados NoSQL

Os bancos de banco de dados NoSQL são flexíveis, dimensionáveis e distribuídos. Diferentes tipos de bancos de dados NoSQL têm seus próprios recursos exclusivos.

Ilustração de recursos do NoSQL.

Em um nível mais alto, os bancos de dados NoSQL normalmente têm os seguintes recursos:

Conformidade com BASE

Os bancos de dados NoSQL são compatíveis com BASE, ou seja, basic availability soft state econsistência eventual. A disponibilidade básica refere-se à capacidade do sistema de tolerar uma falha parcial (como a perda de um nó). Estado suave significa que o sistema permite inconsistências temporárias antes de alcançar a consistência automaticamente com o tempo. A conformidade com a BASE garante alta disponibilidade, processamento de dados mais rápido, escalabilidade e flexibilidade. No entanto, o MongoDB também pode ser configurado para fornecer conformidade com ACID multidocumento.

Saiba mais sobre as vantagens dos bancos de dados NoSQL.

Exemplo de banco de dados relacional vs. banco de dados NoSQL

Vamos considerar 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 passatempos de um usuário.

Em um sistema de gerenciamento de banco de dados de dados relacional (RDBMS), provavelmente criaremos duas tabelas: uma para Usuários e uma para Houbies.

Para recuperar todas as informações sobre um usuário e seus hobbies, será necessário unir as informações da tabela Users e da tabela Hobbies.

O modelo de dados que projetamos para um banco de dados NoSQL dependerá do tipo de banco de dados NoSQL que escolhermos. Vamos considerar como armazenar as mesmas informações sobre um usuário e seus passatempos em um banco de banco de dados de documento como o MongoDB.

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

RDBMS x NoSQL (documento)

Para ver uma versão mais detalhada desse exemplo de modelagem de dados, leia Mapping Terms and Concepts From SQL to MongoDB.

Diferenças entre bancos de dados RDBMS e NoSQL

Há uma variedade de diferenças entre sistemas de gerenciamento de banco de dados 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. Algumas das principais diferenças de cada recurso estão listadas abaixo:

Modelagem de dados

NoSQL: Os modelos de dados variam de acordo com o tipo de banco de dados NoSQL usado - por exemplo, valor-chave, documento, gráfico e coluna ampla - tornando o modelo adequado para dados semiestruturados e não estruturados.

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

Esquema

NoSQL: Ele fornece um esquema flexível em que cada conjunto de documentos/pares de linha-coluna/valor-chave pode conter diferentes tipos de dados. É mais fácil alterar o esquema, se necessário, devido à flexibilidade.

RDBMS: Esse é um esquema fixo em que cada linha deve conter os mesmos tipos de coluna predefinidos. É difícil alterar o esquema depois que os dados são armazenados.

Linguagem de consulta

NoSQL: Varia de acordo com o tipo de banco de dados NoSQL usado. Por exemplo, o MongoDB tem MQL, e o Neo4J usa o Cypher.

RDBMS: usa linguagem de consulta estruturada (SQL).

Escalabilidade

NoSQL: O NoSQL é projetado para dimensionamento vertical e horizontal.

RDBMS: o RDBMS é projetado para dimensionamento vertical. No entanto, ela pode ampliar recursos limitados para dimensionamento horizontal.

Relacionamentos de dados

NoSQL: Os relacionamentos podem ser aninhados, explícitos ou implícitos.

RDBMS: Os relacionamentos são definidos por meio de chaves externas e acessados usando joins.

Tipo de transação

NoSQL: As transações são ACID- ou compatíveis com 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 de leitura intensiva e transações.

Consistência dos dados

NoSQL: Oferece alta consistência dos dados.

RDBMS: na maioria dos casos, oferece consistência eventual.

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 de dados distribuídos, ao dimensionamento vertical e horizontal por meio de sharding, replicação e clustering.

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

Tolerância a falhas

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

RDBMS: o RDBMS usa mecanismos de replicação, backup e recuperação. No entanto, como são projetados para isso, pode ser necessário implementar medidas adicionais, como mecanismos de recuperação de desastres, durante o desenvolvimento do aplicativo.

Particionamento de dados

NoSQL: É feito por meio de sharding e replicação.

RDBMS: oferece suporte a particionamento baseado em tabelas e remoção de partição.

Saiba mais sobre particionamento de dados aqui.

Mapeamento de dados para objeto

NoSQL: O NoSQL armazena os dados de várias maneiras — por exemplo, como documentos JSON, armazenamentos de colunas largas ou pares de valores-chave. Ele fornece abstração por meio das estruturas ODM (Object-Data Mapping, mapeamento de dados de objetos) para trabalhar com dados NoSQL de maneira orientada a objetos.

RDBMS: O RDBMS se baseia mais no mapeamento de dados para objetos para que haja uma integração perfeita entre as colunas do banco de dados e o código do aplicativo orientado a objetos.

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

Casos de uso NoSQL

Os sistemas de banco de banco de dados NoSQL são usados em quase todos os setores, para análise em tempo real, gerenciamento de conteúdo, aplicativos IoT, sistemas de recomendação, detecção de fraudes, gerenciamento de catálogo de produtos, e muito mais. Os casos de uso variam de altamente críticos (por exemplo, armazenar dados financeiros e registros de saúde) até os mais divertidos e frívolos (por exemplo, armazenamento de leituras de IoT de uma caixa de areia inteligente para gatos).

Quando o NoSQL deve ser usado?

Ao decidir qual banco de dados usar, os tomadores de decisão normalmente encontram um ou mais dos seguintes fatores que os levam a selecionar um banco de dados NoSQL:

  • Desenvolvimento ágil em ritmo acelerado
  • Armazenamento de dados estruturados e semiestruturados
  • Grandes volumes de dados
  • Requisitos para arquitetura scale-out
  • Paradigmas de aplicativos modernos, como microsserviços e streaming em tempo real

Consulte When to Use NoSQL Databases e Exploring NoSQL Database Examples para obter informações mais detalhadas sobre os motivos listados acima.

Conceitos errôneos sobre bancos de dados NoSQL

Ao longo dos anos, muitos conceitos errôneos sobre bancos de dados NoSQL se espalharam pela comunidade de desenvolvedores. Nesta seção, discutiremos dois dos equívocos mais comuns.

Equívoco: os dados de relacionamento são mais adequados para bancos de dados relacionais

Um equívoco comum é que os bancos de dados NoSQL ou não relacionais não armazenam bem os dados de relacionamento. Os bancos de dados NoSQL podem armazenar dados de relacionamento — eles apenas armazenam de forma diferente dos bancos de dados relacionais.

Na verdade, quando comparado com bancos de dados relacionais, Muitos acham que a modelagem de dados de relacionamento em bancos de dados NoSQL é mais fácil do que em bancos de dados relacionais porque 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.

Equidade: bancos de dados NoSQL não suportam transações ACID

Outro equivocado comum é que bancos de dados NoSQL não suportam transações ACID . Alguns bancos de dados NoSQL, como o MongoDB, de fato, suportam transações ACID .

Observe que a forma como os dados são modelados nos bancos de dados NoSQL pode eliminar a necessidade de transações com vários registros em muitos casos de uso. Considere o exemplo anterior em que armazenamos informações sobre um usuário e seus hobbies em um modelo relacional e em um armazenamento de documentos. Para garantir que as informações sobre um usuário e seus hobbies sejam atualizados juntos em um banco de dados relacional, precisaríamos usar uma transação para atualizar os registros em duas tabelas. Para fazer o mesmo em um armazenamento de documentos, poderíamos atualizar um único documento, sem a necessidade de uma transação com vários registros.

Para saber mais sobre equivocados comuns, leia tudo o que você sabe sobre o MongoDB está errado.

Tutorial de consulta NoSQL

Você pode começar com o MongoDB, o banco de banco de dados NoSQL mais popular do mundo , de acordo com o DB-Engines. A maneira mais fácil de começar a usar o MongoDB é MongoDB Atlas. O Atlas é o banco de dados totalmente gerenciado como serviço do MongoDB. O Atlas tem uma camada grátis, que você pode usar para aproveitar. Confira o tutorial do MongoDB Atlas Para começar.

Você pode continuar a interagir com seus dados usando o Atlas Data Explorer para inserir novos documentos, processar documentos existentes e excluir documentos.

Quando você estiver pronto para experimentar consultas mais avançadas que agregam seus dados, crie um pipeline de agregação . A estrutura de agregação é uma ferramenta incrivelmente poderosa para analisar seus dados. Para saber mais, faça o gratuito Curso MongoDB University MongoDB Aggregation.

Quando você quiser visualizar seus dados, consulte MongoDB Charts. Charts permitem que você crie painéis preenchidos com visualizações 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 os desenvolvedores. Os bancos de dados NoSQL são de vários tipos, incluindo armazenamentos de documentos, bancos de dados de valores-chave, armazenamentos de colunas amplas, bancos de dados de gráficos e bancos de dados de vários modelos.

O MongoDB é o banco de banco de dados NoSQL mais popular do mundo . Saiba mais sobre o MongoDB Atlas e experimente o nível gratuito.

Quer saber mais agora que tem sua própria conta do Atlas ? Acesse MongoDB University onde você pode obter treinamento on-line gratuito dos engenheiros do MongoDB e obter uma certificação do MongoDB . Os Inícios rápidos são outro ótimo lugar para começar; eles colocarão você em operação rapidamente com sua linguagem de programação favorita.

Perguntas frequentes

Quais são as vantagens do NoSQL?

Muitos bancos de dados NoSQL têm as seguintes vantagens:

O que é consistência eventual?
Coerência eventual é uma propriedade de bancos de dados distribuídos. A consistência eventual garante que, quando uma atualização for feita no banco de banco de dados, eventualmente, todos os nós no banco de banco de dados distribuído refletirão essa atualização.
O que é o teorema CAP?
O teorema CAP afirma que um sistema de computação distribuída pode fornecer no máximo duas das três propriedades a seguir: consistência, adisponibilidade e ptolerância de partição.
Para que é usado o NoSQL?

Os bancos de dados NoSQL são usados em quase todos os setores para uma variedade de casos de uso.

O tipo de banco de dados NoSQL determina o caso de uso típico. Por exemplo, bancos de dados de documentos como o MongoDB são bancos de dados de uso geral. Os bancos de dados de valores-chave são ideais para grandes volumes de dados com consultas de pesquisa simples. Armazenamentos com colunas largas funcionam bem em casos de uso com grandes quantidades de dados e padrões de consulta previsíveis. Os bancos de dados gráficos se destacam na análise e na travessia de relações entre dados. Consulte Compreendendo os diferentes tipos de bancos de dados NoSQL para obter mais informações.

O que é um banco de dados NoSQL?
Um banco de dados NoSQL é um banco de dados que armazena dados em um formato diferente das tabelas relacionais.
Como escrevo uma consulta NoSQL?
Cada banco de banco de dados NoSQL terá sua própria abordagem para gravar consultas. Acesse a documentação interativa do MongoDB para saber mais sobre como consultar um banco de banco de dados do MongoDB .
O NoSQL é difícil de aprender?

Não, os bancos de dados NoSQL não são difíceis de aprender. De fato, muitos desenvolvedores consideram a modelagem de dados em bancos de dados NoSQL incrivelmente intuitiva. Por exemplo, os documentos no MongoDB são mapeados para estruturas de dados nas linguagens de programação mais populares, tornando a programação mais rápida e fácil.

Observe que aqueles com treinamento e experiência em relational databases provavelmente enfrentarão uma curva de aprendizagem à medida que se ajustam a novas formas de modelar dados em bancos de dados NoSQL.

O JSON é um NoSQL?
Um banco de banco de dados de documento é um tipo de banco de banco de dados NoSQL que armazena dados em documentos JSON ou BSON.
Qual linguagem é usada para consultar o NoSQL?
Os bancos de dados NoSQL abrangem uma variedade de tipos e implementações. Como resultado, os bancos de dados NoSQL podem ser consultados usando muitas linguagens de consulta e APIs. O MongoDB, o banco de banco de dados NoSQL mais popular do mundo , pode ser consultado usando a Linguagem de Consulta do MongoDB (MQL).
O NoSQL tem esquema?
Os bancos de dados NoSQL normalmente têm esquemas flexíveis. Observe que alguns bancos de dados NoSQL, como o MongoDB, também têm suporte para validação de esquema, de modo que os desenvolvedores podem bloqueio seus esquemas tanto quanto quiserem quando estiverem prontos.

Este artigo foi escrito por LAURN Schaefer, uma advogada de desenvolvimento do MongoDB.

Saiba mais sobre as principais diferenças entre Bancos de dados com e sem SQL

Recursos relacionados ao NoSQL
Saiba mais

Siga este tutorial com o MongoDB Atlas

Experimente os benefícios de usar o MongoDB, o principal banco de dados NoSQL, na cloud.
Comece gratuitamente!