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?
- Tipos de banco de dados NoSQL
- Breve histórico dos bancos de dados NoSQL
- Recursos do banco de dados NoSQL
- Exemplo de banco de dados relacional versus banco de dados NoSQL
- Diferenças entre bancos de dados RDBMS e NoSQL
- Casos de uso NoSQL
- Quando o NoSQL deve ser usado?
- Equívocos sobre banco de dados NoSQL
- Tutorial de consulta NoSQL
- Resumo
- Perguntas frequentes
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:
name | id | dob | city | ||
---|---|---|---|---|---|
Foo bar | 12345 | foo@bar.com | Some city | ||
Carn Yale | 34521 | bar@foo.com | 12-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: