NoSQL
NoSQL (originalmente se referindo a "no SQL" - "não SQL" - ou "non relational" - não relacional, posteriormente estendido para Not Only SQL - Não Somente SQL) é um termo genérico para uma classe definida de banco de dados que fornecem um mecanismo para armazenamento e recuperação de dados que são modelados de formas diferentes das relações tabulares usadas nos bancos de dados relacionais. Tais bancos de dados existem desde o final da década de 1960, mas não obtiveram o apelido de "NoSQL" até atingirem sua onda de popularidade no início do século vinte e um, desencadeada pelas necessidades das empresas de Web 2.0 como Facebook, Google e Amazon.com. Bancos de dados NoSQL são cada vez mais usados em big data e aplicações web de tempo real. Sistemas NoSQL, às vezes, também são chamados de "Not only SQL" ("Não apenas SQL") para enfatizar que eles podem suportar linguagens de consulta semelhantes à SQL.
Outros termos equivalentes para esta categoria de bancos é NF², N1NF (non first normal form), nested relational, dimensional, multivalue, free-form, schemaless, document database e MRNN (Modelo Relacional Não Normalizado).
Motivações para esta abordagem incluem: simplicidade de projeto, escalonamento "horizonal" mais simples para clusters de máquinas (o que é um problema para bancos de dados relacionais) e controle mais refinado sobre a disponibilidade. As estruturas de dados usadas pelos bancos de dados NoSQL (e.g., chave-valor, coluna larga, grafo ou documento) são diferentes daquelas usadas por padrão em bancos de dados relacionais, tornando algumas operações mais rápidas em NoSQL. A adequação particular de um determinado banco de dados NoSQL depende do problema que ele deve resolver. Algumas vezes as estruturas de dados usadas por bancos de dados NoSQL também são vistas como "mais flexíveis" que tabelas de bancos de dados relacionais.
Os bancos de dados que estão sob estes rótulos não podem exigir esquemas de tabela fixa e, geralmente, não suportam instruções e operações de junção SQL.
Tendências em arquiteturas de computadores, como a computação na nuvem e a necessidade crescente de prover serviços escaláveis, estão pressionando bancos de dados numa direção onde eles necessitam oferecer escalabilidade horizontal. Bancos de dados NoSQL armazenam os dados com técnicas que visam atender a esse requisito. Há alguns exemplos proeminentes de softwares de código fechado que atendem estes requisitos, sendo alguns deles o BigTable, do Google, IBM Cloudant e o DynamoDB, da Amazon. E alguns exemplos de software open-source como Apache Cassandra (originalmente desenvolvido para o Facebook), Apache HBase, LinkedIn's e vários outros.
É importante entender que o intuito não é eliminar bancos de dados relacionais, mas oferecer uma alternativa. Pois, durante muito tempo o modelo relacional foi usado como "bala de prata" para todos os problemas de persistência[parcial].
História do termo
O termo NoSQL foi primeiramente utilizado em 1998 como o nome de um banco de dados relacional de código aberto que não possuía uma interface SQL. Seu autor, Carlo Strozzi, alega que o movimento NoSQL "é completamente distinto do modelo relacional e portanto deveria ser mais apropriadamente chamado "NoREL" ou algo que produzisse o mesmo efeito".[1]
O termo NoSQL foi re-introduzido no início de 2009 por um funcionário do Rackspace, Eric Evans, quando Johan Oskarsson da Last.fm queria organizar um evento para discutir bancos de dados open source distribuídos.[2] O nome — uma tentativa de descrever o surgimento de um número crescente de banco de dados não relacionais, que não tinham a preocupação de fornecer garantias ACID — faz referência ao esquema de atribuição de nomes dos bancos de dados relacionais mais populares do mercado: MySQL, MS SQL, PostgreSQL etc.
Arquitetura
Modernas bases de dados relacionais parecem ter uma limitação a transações com grandes volumes de dados e cargas de trabalhos típicas de operações modernas de grande carga, incluindo o dimensionamento de conjuntos de dados. Sistemas NoSQL frequentemente fornecem garantias de consistência fraca, como consistência eventual e operações restritas a itens individuais de dados, apesar de que uma faixa possa impor garantias ACID, adicionando uma camada de middleware complementares.[3].
Alguns defensores do NoSQL promovem interfaces muito simples, como arrays associativos ou pares chave-valor (Key-Value pairs). Outros sistemas como bancos de dados XML nativos provem o apoio ao padrão XQuery.[4]
Referências
- ↑ «NoSQL Relational Database Management System: Home Page». Strozzi.it. 2 de outubro de 2007. Consultado em 29 de março de 2010
- ↑ «NOSQL 2009». Blog.sym-link.com. 12 de maio de 2009. Consultado em 29 de março de 2010
- ↑ Zhou Wei, Guillaume Pierre and Chi-Hung Chi. Scalable Transactions for Web Applications in the Cloud. In proc. of the Euro-Par Conference, January 2009.
- ↑ «Open Source NoSQL Databases - DZone Java». dzone.com. Consultado em 8 de junho de 2016