NoSQL significa “não apenas SQL” e é uma alternativa aos bancos de dados relacionais tradicionais. Nos bancos de dados relacionais tradicionais, os dados são colocados em tabelas e o esquema de dados é projetado antes da criação do banco de dados. Já os bancos de dados NoSQL são especialmente úteis para trabalhar com grandes conjuntos de dados distribuídos. Pois NoSQL é uma arquitetura de bancos de dados que permite usar grande variedade de modelos de dados, incluindo formatos de valor-chave, documentos, colunas e gráficos.
NoSQL vs. RDBMS
O termo NoSQL pode ser aplicado a alguns bancos de dados anteriores ao sistema de gerenciamento de banco de dados relacional (RDBMS), mas refere-se mais aos bancos de dados criados no início dos anos 2000 com o propósito de clusterizar bancos de dados em larga escala em nuvem e aplicativos da web. Nessas aplicações, os requisitos de desempenho e escalabilidade superavam a necessidade da consistência de dados imediata e rígida que o RDBMS fornecia aos aplicativos empresariais transacionais.
Os sistemas NoSQL não foram obrigados a seguir um esquema relacional estabelecido. Empresas de internet com aplicações em larga escala, como Google e Amazon, usaram bancos de dados NoSQL para se concentrar em metas operacionais restritas e empregar bancos de dados relacionais como complementos, onde a consistência de dados de alta qualidade é necessária.
Os primeiros bancos de dados NoSQL para aplicações da web e na nuvem costumavam se concentrar em características muito específicas de gerenciamento de dados. A capacidade de processar grandes volumes de dados e distribuir rapidamente esses dados pelos clusters de computação era uma característica importante no design da web e da nuvem. Os desenvolvedores que implementaram sistemas na nuvem e na web também procuraram criar esquemas de dados flexíveis – ou até mesmo nenhum esquema – para permitir alterações rápidas em aplicativos que eram continuamente atualizados.
Valor-chave
Armazenamentos de valores-chave ou bancos de dados de valor-chave implementam um modelo de dados simples que emparelha uma chave exclusiva com um valor associado. Como esse modelo é simples, ele pode levar ao desenvolvimento de bancos de dados de valor-chave, que são extremamente eficientes e altamente escaláveis para o gerenciamento de sessões e o armazenamento em cache de aplicativos da web. As implementações diferem na maneira como são orientadas para trabalhar com RAM, unidades de estado sólido ou unidades de disco. Exemplos incluem Aerospike, Berkeley DB, MemcacheDB, Redis e Riak.
Documentos
Bancos de dados de documentos, também chamados de armazenamentos de documentos, armazenam dados semi-estruturados e descrições desses dados em formato de documento. Eles permitem que os desenvolvedores criem e atualizem programas sem precisar referenciar o esquema mestre. O uso de bancos de dados de documentos aumentou com o uso do JavaScript e do JavaScript Object Notation (JSON), um formato de troca de dados que ganhou grande aceitação entre os desenvolvedores de aplicativos da web, embora o XML e outros formatos de dados também possam ser usados. Bancos de dados de documentos são usados para gerenciamento de conteúdo e manipulação de dados de aplicativos móveis. Couchbase Server, CouchDB, Azure Cosmos DB, MarkLogic e MongoDB são exemplos de bancos de dados de documentos.
Colunas
Os armazenamentos de colunas organizam as tabelas de dados como colunas, em vez de como linhas. Os armazenamentos de colunas podem ser encontrados em bancos de dados SQL e NoSQL. Os armazenamentos de coluna podem consultar grandes volumes de dados mais rapidamente do que os bancos de dados relacionais convencionais. Um armazenamento de dados de coluna pode ser usado para mecanismos de recomendação, catálogos, detecção de fraudes e outros tipos de processamento de dados. Google BigTable, Cassandra e HBase são exemplos desse tipo de banco de dados.
Grafos
Os grafos organizam os dados como nós, que são como registros em um banco de dados relacional, e as bordas, que representam conexões entre os nós. Como o sistema de grafos armazena o relacionamento entre os nós, ele pode suportar representações mais ricas de relacionamentos de dados. Além disso, ao contrário de modelos relacionais dependentes de esquemas estritos, o modelo de dados baseado em grafos pode evoluir com o tempo e o uso. Os bancos de dados baseados em de grafos são aplicados em sistemas que devem mapear relacionamentos, como sistemas de reservas ou gerenciamento de relacionamento com o cliente. Exemplos de bancos de dados de gráficos incluem AllegroGraph, IBM Compose for JanusGraph, Neo4j e Titan.
Evolução do NoSQL
O Berkeley DB foi um sistema que influenciou a evolução do uso de bancos de dados NoSQL. Desenvolvido na Universidade da Califórnia, em Berkeley, a partir da década de 1990, o Berkeley DB foi descrito como um banco de dados embutido que atendia as necessidades de armazenar aplicativos muito específicos. Era um software de código aberto e forneceu um armazenamento simples de valor-chave. O Berkeley DB foi lançado comercialmente pela Sleepycat Software em 1999. A empresa foi posteriormente adquirida pela Oracle em 2006. A Oracle continuou a oferecer suporte ao software de código aberto Berkeley DB.
Outros bancos de dados NoSQL que ganharam destaque incluem bancos de dados NoSQL hospedados em nuvem como o Amazon DynamoDB, o Google BigTable, Apache Cassandra e o MongoDB.
As classificações básicas do banco de dados NoSQL são apenas guias. Com o tempo, os fornecedores misturaram e combinaram elementos de diferentes árvores genealógicas do banco de dados NoSQL para obter sistemas mais úteis em geral. Essa evolução é vista, por exemplo, no MarkLogic, que incluiu um armazenamento gráfico e outros elementos em seus bancos de dados de documentos originais. O Couchbase Server suporta abordagens de valor-chave e documento. O Cassandra combinou elementos de valor-chave com um armazenamento de coluna ampla e um banco de dados gráfico. Às vezes, elementos NoSQL são misturados com elementos SQL, criando uma variedade de bancos de dados que são chamados de bancos de dados multimodais.
Veja também:
- MongoDB
- Guia de acesso rápido – Python para Data Science – Matplotlib
- Conciliação de cartões de crédito