O que é?
NoSQL refere-se a um banco de dados que não é baseado em SQL (Structured Query Language), que é a língua mais comumente associado com bancos de dados relacionais. Essencialmente, o banco de dados NoSQL promove soluções de armazenamento de dados não relacionais, ou seja é um banco não-relacional, não exigem esquemas de tabela fixa e por isso tem modelos de consistência mais flexível do que os bancos de dados relacionais tradicionais (esses contem esquemas rígidos e exigem que todos os campos sejam definidos previamente com base nos dados armazenados).
Outra diferença entre o SQL e NoSQL é que o SQL tem a scalability vertical e permite gerenciar o aumento da carga se, por exemplo a CPU, RAM ou SSD, em um único servidor forem aumentados. O NoSQL a scalability é horizontal e, dessa forma, é possível simplesmente adicionar mais alguns servidores em sua infraestrutura para lidar com o grande tráfego.
NoSQL é composto por diversas ferramentas que, de forma particular e específica, resolvem problemas como tratamento de grandes volumes de dados, execução de consultas com baixa latência e modelos flexíveis de armazenamento de dados, como documentos XML ou JSON. As tecnologias NoSQL não têm como objetivo substituir nem eliminar os bancos de dados relacionais, mas apenas propor algumas soluções e oferecer alternativas que, em determinados cenários, são mais adequadas.
NoSQL abrange uma grande variedade de diferentes tecnologias de banco de dados que foram desenvolvidas em resposta a um aumento do volume de dados armazenados sobre usuários, objetos e produtos, a frequência em que esses dados são acessados , e desempenho de processamento e necessidades.
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 scalability 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.
Em outras palavras, pode-se dizer que o NoSQL é um sistema de gerenciamento de banco de dados sem limites arbitrários, exceto pela memória e velocidade do processador em que está sendo executado.
No quesito de data storage model, No SQL os registros individuais (por exemplo , "empregados" ) são armazenadas como linhas e colunas em tabelas , (por exemplo , "manager ", " data contratado ", etc.) , bem como uma folha de cálculo. Tipos de dados separados são armazenados em tabelas separadas, e depois se juntaram quando as consultas mais complexas são executadas. Por exemplo, "escritórios" pode ser armazenado em uma tabela, e "empregados" em outra. Quando um usuário quer encontrar o endereço de trabalho de um empregado é possível unir as tabelas empregados e escritório para obter todas as informações necessárias .
Ao passo que no NoSQL essa forma de armazenamento muda dependendo do tipo de banco de dados . Por exemplo, o campo chave primária funciona de forma semelhante aos bancos de dados SQL , mas tem apenas duas colunas ( "key" e "valor"), com informações mais complexas , por vezes, armazenados dentro da coluna "valor" . Essa nova disposição de informações acaba com o modelo de tabela - e - linha por completo, pois consegue armazenar todos os dados relevantes juntos em um único espaço, em JSON , XML, ou outro formato .
Quando usar?
O NoSQL é usado, por exemplo na replicação de dados, que se refere ao armazenamento de dados e a estratégia de backups entre computadores em locais distintos.
Além disso, ele é aplicável em cenários onde sistemas de banco de dados tradicionais não são suficientes ou adequados às necessidades específicas, tais como:
baixa latência, grandes volumes de dados, escalabilidade ou estruturas em que as conexões entre os dados são tão importantes quanto o próprio dado.