Primeiramente utilizado em 1998 o termo noSQL surgiu 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”(segundo wiki).
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. O nome — uma tentativa de descrever o surgimento de um número crescente de banco de dados não relacionais.
Arquitetura noSQL
Modernas base de dados relacionais parecem ter uma limitação a transações com grandes volumes de dados e cargas de trabalhos, incluindo o dimensionamento do conjuntos destes dados.
NoSQL provén interfaces muito simples, como arrays associativos ou pares chave-valor (Key-Value pairs).
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 e suas operações são restritas a itens individuais.
Tomando como exemplo uma operação no MongoDB, o equivalente aos registros são os documentos, que utilizam a sintaxe JSON. No item abaixo vamos criar um “documento” chamado Ederson com 3 atributos(nome, sobreNome e cidade), criado de forma muito simples.
Ederson = {
nome: “Ederson”,
sobreNome: “Melo”,
cidade: “Canoas/RS”
}
Para armazena-lo em banco, bastaria executar: db.nomeDoMeuBanco.save(Ederson)
Neste mesmo banco poderíamos armazenar documento abaixo. Que é completamente diferente do documento anteriormente criado. E que será da mesma forma aceito.
Pedro = {
nome: “Pedro”,
sobreNome: “Haack”,
cidade: “Canoas/RS”,
caes:[{nome:”Lilica”, raça:”vira-lata”}, {nome:”Scott”, raça:”Labrador”}]}
}
Para salvar: db.nomeDoMeuBanco.save(Pedro)
Temos diversas formas de utilização para o noSQL:
- Gerenciamento de grandes streams de dados não-transicionais: logs Apache, logs de aplicativos, logs MySQL, clickstreams etc.
- Sincronização de dados online e offline. Este é um nicho que CouchDB segmentou.
- Rápido tempo de reposta em todos os carregamentos.
- Evite joins pesados quando o carregamento da query se tornar
- muito grande para RDBMS.
- Sistemas simples de tempo real no quais a baixa latência é crítica.
Mesmo parecendo muito simples e interessante é importante entender que o noSQL não elimina o bancos de dados relacionais, mas coexiste como uma alternativa.
Veja também a entrevista brilhante com o criador do SQL, Michael “Monty” Widenius.
Conduzido por Dmitry Sotnikov, COO da Jelastic.:http://blog.websolute.com.br/entenda-melhor-o-nosql-e-o-big-data/
Fonte(s):
http://pt.wikipedia.org/wiki/NoSQL
http://highscalability.com/blog/2010/12/6/what-the-heck-are-you-actually-using-nosql-for.html