NoSQL: guia rápido
Notícias sobre migrações e adoções de NoSQL (especialmente quanto ao Cassandra, que parece ser um queridinho dos serviços on-line populares ultimamente) têm surgido por aqui, mas a idéia por trás do movimento NoSQL ainda não é clara para muitos – em especial, o equívoco de pensar que ele é algo especificamente contra a linguagem de consulta SQL continua comum.
Por isso, recomendo este artigo em duas páginas do The H, apresentando uma visão histórica, descrevendo o posicionamento como uma alternativa ou complemento ao modelo relacional tradicional, diferenciando em relação ao mais recente movimento “contra” o modelo relacional (que foi o dos bancos orientados a objetos), e apresentando softwares como o CouchDB, Neo4J, Redis e Cassandra. (via h-online.com)
Eu uso o Db4o (banco de dados orientado a objetos em Java, com versões em .NET e Mono, mas eu só uso a versão Java) em alguns dos softwares que eu desenvolvo e a produtividade vai lá em cima, é só tuchar os objetos no banco e acabou! E, para recuperar os objetos, basta usar uma das três maneiras disponíveis, a minha preferida é o uso de Native Queries, que são escritas em Java mesmo.
E o Db4o, segundo o site dos desenvolvedores, é utilizado até num sistema de missão crítica, numa companhia de trens da Espanha, se não me falha a memória.
Obrigado Augusto Campos e Allan Taborda.
Eu tinha anotado aqui em algum papel perdido que queria estudar “NoSQL”; perdi o papel rsrs
Abraço
@Allan Taborda dos Santos
Eu estava trabalhando com o NeoDatis ODB também muito bom e rápido, entretanto parei de usar ODBs por causa do retorno dos objetos, é meio preocupando retornar um objeto que vem com uma lista de milhares de outros objetos, queria muito que isso nem funcionasse dessa forma.
Eu já usei db4o pra testes pessoais, achei muito interessante, as vezes demora pra cair a ficha, pois o banco elimina a necessidade de fazer o mapeamento objeto-relacional, é simplesmente vc dar um store em um objeto e já, pimba! Eu não sei muito emrelação ao desempenho e por isso não cheguei a usa-lo em sistemas em produção. Esta já é bem antiga, mas parece que só agora vem ganhando força.
nosql significa “não tenho dinheiro para Oracle”
@Allan Taborda dos Santos isso deve ser uma maravilha! :)
Consideraram meu comentário anterior ofensivo. Mas é sério. Nunca vi um sistema Java + Oracle pedir água.
Ao contrário, os “serviços online populares”, principalmente Facebook (PHP + MySQL) defendiam com unhas e dentes esse modelo. Depois tiveram que partir para PHP com compilação para C, e agora o Cassandra.
Eu imagino que a idéia seja ter custo mínimo… mas dado o tanto que isso tem custado de horas de desenvolvimento, não seria mais fácil ter usado direto soluções que sabidamente são escaláveis?
@Paul, acredito que um sistema PHP + MySQL seja rápido, mas é claro existem gargalos e existem coisas a serem feitas para se melhorar. Mas o dinheiro a ser investido pode ficar proibitivo, servidores mais parrudos, mais memória, mais disco… Não dá para ficar investindo só em hardware, o lado do software também deve melhorar.
Que tal vc citar um exemplo de sistema que use Oracle e seja acessado por muita gente tal como o Facebook ou Twitter.
Tabela2, não estou falando de rapidez, sim de escalabilidade.
O Oracle tem desempenho inferior ao MySQL e a vários outros SGBDs. O Oracle foi concebido e otimizado para aguentar uma quantidade de dados maior do que os concorrentes e ser mais estável.
Com relação a retornar um objeto com milhares de outros objetos, no Db4o, há como configurar a quantidade de níveis de objetos na cadeia de objetos, o padrão é 5 níveis. Isso consta no manual do Db4o.
Alguns testes feitos pelos desenvolvedores do Db4o indicam que o este seria mais rápido que os bancos relacionais, inclusive o MySQL (eu acho, não tenho certeza de que o MySQL tava incluído nos testes). Entretanto, eu nunca testei aqui se ele é mais rápido que o MySQL.
O que o pessoal ta esquecendo é que um banco de dados orientado a objetos, a documentos, …, em alguns casos é mais rapido que qualquer banco relacional, mas em outros casos o relacional da um banho neles, cada tipo de aplicacao e volume de dados exige um ou outro tipo, não existe o melhor banco de dados para tudo. No caso do facebook, do twitter, entre outras aplicacoes o melhor custo/beneficio foi adotar o Cassandra, para o Allan Taborda foi melhor utilizar o Db4o, para outros é melhor um relacional e por ai vai.
é Paul, facebook não tem grana pra contratar serviços Oracle.
Não mesmo. Nem Twitter. Eles fornecem serviços de graça, e a meta deles é ter custo mínimo.
Talvez o Oracle seria usado se este fosse livre. Vai saber se o fato de ser software livre não é um fator determinante na escolha do sistema derenciador de banco de dados.
Paul, ah sim. Perto do maquinário (hardware) que o twitter precisa, o preço de um sgbd não deve ser a coisa mais relevante. O principal para eles deve mesmo ser o desempenho. Se vc tem um software que, por mais caro que seja, tenha um excelente desempenho a ponto de economizar com hardware, tenha certeza de que é melhor comprar o software.
Como e quanto funcionam as licenças da Oracle?
Hmm, estava mesmo querendo estudar NoSQL, parece uma boa deixa :)
Talvez seja uma solução, não consigo mais engolir os bancos atuais e as milhares de frameworkds para lidar com eles… =/