Definição – O que significa o NoSQL?
NoSQL é uma classe de sistemas de gerenciamento de banco de dados (DBMS) que não segue todas as regras de um DBMS relacional e não pode usar o SQL tradicional para consultar dados. O termo é um tanto enganoso quando interpretado como “Sem SQL”, e a maioria o traduz como “Não apenas SQL”, já que esse tipo de banco de dados geralmente não é uma substituição, mas sim uma adição complementar aos RDBMSs e SQL.
Os sistemas baseados em NoSQL são normalmente usados em bancos de dados muito grandes, que são particularmente propensos a problemas de desempenho causados pelas limitações do SQL e do modelo relacional de bancos de dados. Muitos pensam no NoSQL como o banco de dados moderno preferido que se adapta aos requisitos da web. Algumas implementações notáveis de NoSQL são o banco de dados Cassandra do Facebook, o BigTable do Google e o SimpleDB e Dynamo da Amazon.
Definirtec explica NoSQL
Um banco de dados NoSQL não segue necessariamente as regras estritas que governam as transações em bancos de dados relacionais. Essas regras violadas são conhecidas pela sigla ACID (Atomicity, Consistency, Integrity, Durability). Por exemplo, os bancos de dados NoSQL não usam estruturas de esquema fixas e junções SQL.
Em um RDBMS tradicional, as operações básicas são leituras e gravações. As leituras podem ser escaladas replicando dados para várias máquinas, assim, balanceamento de carga das solicitações de leitura. No entanto, isso afeta as gravações porque a consistência dos dados deve ser mantida. As gravações só podem ser dimensionadas particionando os dados. Isso afeta as leituras, já que as junções distribuídas geralmente são lentas e difíceis de implementar. Além disso, para manter as propriedades ACID, os bancos de dados devem bloquear os dados. Isso significa que quando um usuário abre um item de dados, nenhum outro usuário deve ser capaz de fazer alterações no mesmo item. Essa restrição tem sérias implicações no desempenho.
Essas limitações não foram um grande problema no passado. No entanto, com o advento das redes sociais e do big data, vários bancos de dados massivos que surgiram foram forçados a servir dezenas, ou mesmo centenas, de milhões de clientes em todo o mundo com vários milhares de leituras e gravações a cada minuto. Os RDBMSs tradicionais simplesmente não atendem a essa necessidade porque eles podem apenas “escalar verticalmente” ou aumentar os recursos em um servidor central. Uma implementação NoSQL, por outro lado, pode “escalar horizontalmente” ou distribuir a carga do banco de dados em mais servidores.
Os bancos de dados NoSQL são focados em classes específicas de problemas – desde serem mais flexíveis sobre os dados armazenados (armazenamentos de documentos), até atingir casos de uso, como relacionamentos (bancos de dados gráficos) e dados agregados (bancos de dados de colunas) ou simplesmente simplificar a ideia de um banco de dados algo que armazena um valor (armazenamentos de chave / valor).
Os bancos de dados NoSQL oferecem as vantagens de escalabilidade rápida, desempenho muito melhor e uma estrutura mais simples em comparação com RDBMSs. No entanto, eles também sofrem por serem uma tecnologia relativamente nova e não comprovada e não podem fornecer relatórios ricos e funcionalidade analítica do RDBMS.
Esta definição foi escrita no contexto do Banco de Dados