Chamada de trabalhos para o NOSQL-BA

[quote=asaudate][quote=alias][quote=francislon]
Estamos falando de bancos escaláveis, distribuídos, para grande volume de dados.
[/quote]

Não sei se o tópico seria o local adequado para essa discussão (afinal o assunto é o evento de NoSQL), mas achei a discussão interessante. Pelo que li da teoria dos bancos NoSQL eu concordo com o colega acima sobre o cenario onde esse tipo de armazenamento seria útil. Porém, o que voces acham do uso do NoSQL em aplicações de menor porte?[/quote]

Para porte pequeno, pode ser uma roubada, por vários pontos de vista. Do ponto de vista econômico, por exemplo: uma pessoa que conheça Cassandra custa muito, muito, muito mais caro do que uma que conheça MySQL ou Oracle. Do ponto de vista técnico, também, já que a manutenção de um NoSQL também é mais complexa do que um RDBMS comum. Além disso, alguns bancos NoSQL exigem que se tenha um cluster, ainda que pequeno, para fazer a manutenção. Isso é mais evidente para aqueles que usam estruturas complexas de gerenciamento de nós, como o próprio Cassandra e qualquer um que se baseie em Hadoop/HDFS. Sem contar que, por ser NoSQL, o relacionamento entre as possíveis entidades, se existir e for absolutamente necessário, deve ser atualizado manualmente.

[]'s[/quote]

Obrigado prezado asaudate. Minha pergunta foi motivada por ter visto diversas vagas de emprego, de empresas de pequeno porte, pedindo conhecimentos em NoSQL. Imagino que tais empresas tenham o perfil de startup, e não é porque a empresa é pequena que os projetos serão pequenos, mas me perguntando o que estariam desenvolvendo que seja necessário uso de NoSQL…vocês não acham que há um perigo de, assim como outras coisas em TI, empresas adotarem o NoSQL apenas por “moda” e começarem a usar o Cassandra/MongoDB/CouchDB/Neo4J/BigTable para simples “cadastros de clientes”?

[quote=alias][quote=asaudate][quote=alias][quote=francislon]
Estamos falando de bancos escaláveis, distribuídos, para grande volume de dados.
[/quote]

Não sei se o tópico seria o local adequado para essa discussão (afinal o assunto é o evento de NoSQL), mas achei a discussão interessante. Pelo que li da teoria dos bancos NoSQL eu concordo com o colega acima sobre o cenario onde esse tipo de armazenamento seria útil. Porém, o que voces acham do uso do NoSQL em aplicações de menor porte?[/quote]

Para porte pequeno, pode ser uma roubada, por vários pontos de vista. Do ponto de vista econômico, por exemplo: uma pessoa que conheça Cassandra custa muito, muito, muito mais caro do que uma que conheça MySQL ou Oracle. Do ponto de vista técnico, também, já que a manutenção de um NoSQL também é mais complexa do que um RDBMS comum. Além disso, alguns bancos NoSQL exigem que se tenha um cluster, ainda que pequeno, para fazer a manutenção. Isso é mais evidente para aqueles que usam estruturas complexas de gerenciamento de nós, como o próprio Cassandra e qualquer um que se baseie em Hadoop/HDFS. Sem contar que, por ser NoSQL, o relacionamento entre as possíveis entidades, se existir e for absolutamente necessário, deve ser atualizado manualmente.

[]'s[/quote]

Obrigado prezado asaudate. Minha pergunta foi motivada por ter visto diversas vagas de emprego, de empresas de pequeno porte, pedindo conhecimentos em NoSQL. Imagino que tais empresas tenham o perfil de startup, e não é porque a empresa é pequena que os projetos serão pequenos, mas me perguntando o que estariam desenvolvendo que seja necessário uso de NoSQL…vocês não acham que há um perigo de, assim como outras coisas em TI, empresas adotarem o NoSQL apenas por “moda” e começarem a usar o Cassandra/MongoDB/CouchDB/Neo4J/BigTable para simples “cadastros de clientes”?[/quote]

O risco existe, com certeza. A esperança é que a própria complexidade extra desse tipo de banco dê uma freada nesse processo, pois normalmente projetos pequenos têm budgets pequenos, e não dá pra arcar com o custo desse tipo de banco e a ‘imprevisibilidade’ (já que eles não têm tanta documentação - contando a oficial e a não-oficial - de bancos SQL).

[]'s

[quote=alias]
vocês não acham que há um perigo de, assim como outras coisas em TI, empresas adotarem o NoSQL apenas por “moda” e começarem a usar o Cassandra/MongoDB/CouchDB/Neo4J/BigTable para simples “cadastros de clientes”?[/quote]

Sim, com certeza isso acontecerá.

Tem até um vídeo rolando na net que ironiza essa onda:

Acredito que na nossa área muita gente gosta de novidade.
Acaba sendo na tural que quando você ouve falar sobre uma tendência, você quer “brincar” com aquilo também.

O problema é que, inevitavelmente, muita gente vai querer brincar com projeto em produção, que não precisava disso.

Isso vai criar uma base de “fatos” para os que não acreditam em NoSQL afirmar que não presta, que os bancos relacionais são muitos melhores, etc.

Mas acredito que podemos convergir para um ambiente moderado, onde se aproveite o melhor dos mundos.
Isso é o que estão chamado de persistência poliglota.

Na minha opinião esse conceito de ‘persistência poliglota’ descreve exatamente como será o armazenamento daqui a alguns anos :slight_smile:

Incrível esse artigo sobre Persistência Poliglota. Achei muito interessante como até a figura dos casos de uso cai como uma luva no melhor caso para cada banco. (tirando o caso do reporting. Acho que ele foi meio infeliz nesse =) )

[quote=AbelBueno][quote=alias]
vocês não acham que há um perigo de, assim como outras coisas em TI, empresas adotarem o NoSQL apenas por “moda” e começarem a usar o Cassandra/MongoDB/CouchDB/Neo4J/BigTable para simples “cadastros de clientes”?[/quote]

Sim, com certeza isso acontecerá.

Tem até um vídeo rolando na net que ironiza essa onda:

Acredito que na nossa área muita gente gosta de novidade.
Acaba sendo na tural que quando você ouve falar sobre uma tendência, você quer “brincar” com aquilo também.

O problema é que, inevitavelmente, muita gente vai querer brincar com projeto em produção, que não precisava disso.

Isso vai criar uma base de “fatos” para os que não acreditam em NoSQL afirmar que não presta, que os bancos relacionais são muitos melhores, etc.

Mas acredito que podemos convergir para um ambiente moderado, onde se aproveite o melhor dos mundos.
Isso é o que estão chamado de persistência poliglota.[/quote]

Acho que isto vai acontecer mesmo, e ja acontece, olha este site simples por exemplo: http://ideacolorschemes.com/ , detalhe: Powered by Lift, [B]MongoDB[/B], etc.

Porem não sei se ha realmente um grande mau nisto, olhando o quickstart no site do mongodb parece bem simples instalar e sair usando, mais facil inclusive que as opções RDBMS, e como o Lift ja tem opções nativas de persistencia para MongoDB e CouchDB, isto acaba influenciando usuarios do framework a [B]testar[/B] e brincar com estes bancos!

Outra rede que usa o MongoDB é o foursquare, inclusive tiveram um incidente por conta do crescimento muito alto e inesperado do BD: http://www.infoq.com/news/2010/10/4square_mongodb_outage

Hoje a persistência poliglota existe na teoria. Imagine vc ter uma entidade ‘Pessoa’ e vc ter ORMs que poderiam salvar ou recuperar dados de multiplos modelos de dados transparentemente para você. Este é o caminho das pedras. Em breve estaremos nesse nível.

[quote=fredferrao][quote=AbelBueno][quote=alias]
vocês não acham que há um perigo de, assim como outras coisas em TI, empresas adotarem o NoSQL apenas por “moda” e começarem a usar o Cassandra/MongoDB/CouchDB/Neo4J/BigTable para simples “cadastros de clientes”?[/quote]

Sim, com certeza isso acontecerá.

Tem até um vídeo rolando na net que ironiza essa onda:

Acredito que na nossa área muita gente gosta de novidade.
Acaba sendo na tural que quando você ouve falar sobre uma tendência, você quer “brincar” com aquilo também.

O problema é que, inevitavelmente, muita gente vai querer brincar com projeto em produção, que não precisava disso.

Isso vai criar uma base de “fatos” para os que não acreditam em NoSQL afirmar que não presta, que os bancos relacionais são muitos melhores, etc.

Mas acredito que podemos convergir para um ambiente moderado, onde se aproveite o melhor dos mundos.
Isso é o que estão chamado de persistência poliglota.[/quote]

Acho que isto vai acontecer mesmo, e ja acontece, olha este site simples por exemplo: http://ideacolorschemes.com/ , detalhe: Powered by Lift, [B]MongoDB[/B], etc.

Porem não sei se ha realmente um grande mau nisto, olhando o quickstart no site do mongodb parece bem simples instalar e sair usando, mais facil inclusive que as opções RDBMS, e como o Lift ja tem opções nativas de persistencia para MongoDB e CouchDB, isto acaba influenciando usuarios do framework a [B]testar[/B] e brincar com estes bancos!

Outra rede que usa o MongoDB é o foursquare, inclusive tiveram um incidente por conta do crescimento muito alto e inesperado do BD: http://www.infoq.com/news/2010/10/4square_mongodb_outage[/quote]

O MongoDB, no caso do foursquare, é absolutamente ideal, até por conter também opções de busca geo-espacial…

[]'s

O próprio Hibernate já está caminhando para recuperar dados de bancos NoSQL, não está? Se eles conseguirem implementar isso de fato, aliando esse tipo de funcionalidade ao Hibernate Shards, iria ficar perfeito!

Lembro de ano passado um projeto da JBoss relacionado a um Hibernate-OGM, não acompanhei o projeto e não sei que fim teve. Mas seria algo lindo!

Interessante, amigos…

Estou desenvolvendo um projeto no qual pretendo usar o Lucene. Ele tambem é considerado um NoSQL, correto? Vou entrar no hype tambem :lol:

JPA não é adequado para trabalhar com esse tipo de estrutura de banco, né? É por esse motivo que a persistencia na nuvem do Google, ao menos na ultima vez que tinha olhado, usa JDO? Me corrijam se estiver falando bobagem por falta de conhecimento.

Minhas opiniões nesse sentido costumam ser meio tendenciosas porque adoro SQL ( a linguagem em si).
Sei que sou minoria nesse quesito.

Tornar a persistência totalmente “transparente” seria realmente um feito incrível.

Mas se conseguissem manter uma linguagem padrão para consultar todas essas formas, seria ainda melhor.

O google construiu o Tenzing SQL que parece prover sql sobre bancos não relacionais.
Espero que soluções como essa se popularizem também.

[quote=alias]Interessante, amigos…

Estou desenvolvendo um projeto no qual pretendo usar o Lucene. Ele tambem é considerado um NoSQL, correto? Vou entrar no hype tambem :lol:

JPA não é adequado para trabalhar com esse tipo de estrutura de banco, né? É por esse motivo que a persistencia na nuvem do Google, ao menos na ultima vez que tinha olhado, usa JDO? Me corrijam se estiver falando bobagem por falta de conhecimento.[/quote]

Não. O Lucene é apenas um indexador de textos. Ele cuida do próprio gerenciamento de dados, você não precisa interferir na maneira como ele faz isso. Então, não esquente a cabeça com esse tipo de coisa, você não vai interferir nisso diretamente.

Você vai usar o Lucene diretamente ou conectado no banco? Caso conectado, você pode achar interessante dar uma olhada no Hibernate Search…

[]'s

[quote=AbelBueno]Minhas opiniões nesse sentido costumam ser meio tendenciosas porque adoro SQL ( a linguagem em si).
Sei que sou minoria nesse quesito.
[/quote]

Eu tambem curto, acho SQL uma coisa linda demais.

Poxa, eu ia colocar no topo do site em destaque “aqui nós usamos NoSQL” :lol: , mas tudo bem. Sim, vou usar ele conectado em conjunto com o Hibernate Search. Na verdade minha carga de dados não será muito pesada, ao menos de início, mas pra funcionalidade que quero desenvolver suponho que será melhor do que fazer um “like” no banco…

Tenho outra funcionalidade que cheguei a cogitar o MongoDB, seguindo a sugestao de um colega aqui do fórum, a respeito de geo-localizacao como voce mesmo comentou neste tópico. Estou usando MySQL, que não tem um suporte legal pra esse tipo de coisa (na verdade eu mesmo tive que fazer uma função de “geo-gambis-localizacao”). Alem do esforço que eu teria pra ajustar a aplicação pro novo banco, eu levei em conta o que eu disse antes sobre um uso talvez “inadequado” do MongoDB, refleti “porra, meu projeto ainda nem é realidade e já vou usar um NoSQL?” :lol: … acho que faltou coragem da minha parte, mas vamos ver até onde o meu MySQL vai aguentar

[quote=alias][quote=AbelBueno]Minhas opiniões nesse sentido costumam ser meio tendenciosas porque adoro SQL ( a linguagem em si).
Sei que sou minoria nesse quesito.
[/quote]

Eu tambem curto, acho SQL uma coisa linda demais.

Poxa, eu ia colocar no topo do site em destaque “aqui nós usamos NoSQL” :lol: , mas tudo bem. Sim, vou usar ele conectado em conjunto com o Hibernate Search. Na verdade minha carga de dados não será muito pesada, ao menos de início, mas pra funcionalidade que quero desenvolver suponho que será melhor do que fazer um “like” no banco…

Tenho outra funcionalidade que cheguei a cogitar o MongoDB, seguindo a sugestao de um colega aqui do fórum, a respeito de geo-localizacao como voce mesmo comentou neste tópico. Estou usando MySQL, que não tem um suporte legal pra esse tipo de coisa (na verdade eu mesmo tive que fazer uma função de “geo-gambis-localizacao”). Alem do esforço que eu teria pra ajustar a aplicação pro novo banco, eu levei em conta o que eu disse antes sobre um uso talvez “inadequado” do MongoDB, refleti “porra, meu projeto ainda nem é realidade e já vou usar um NoSQL?” :lol: … acho que faltou coragem da minha parte, mas vamos ver até onde o meu MySQL vai aguentar[/quote]

Ah, mas o caminho é esse mesmo… também acho que não faz muito sentido usar o MongoDB só por causa disso, porque o ganho que você teria em usar a geolocalização, você perderia na sincronia que você teria que fazer entre ele e o MySQL. Mas, como você mesmo disse, depende da carga, também.

[]'s

[quote=asaudate]
Ah, mas o caminho é esse mesmo… também acho que não faz muito sentido usar o MongoDB só por causa disso, porque o ganho que você teria em usar a geolocalização, você perderia na sincronia que você teria que fazer entre ele e o MySQL. Mas, como você mesmo disse, depende da carga, também.

[]'s[/quote]

Obrigado pelos toques, mano. :wink:

Um outro case de sucesso bem interessante que li estes dias foi este aqui:

http://www.infoq.com/br/news/2012/02/youporn-migra-redis

É o NoSQL fazendo a alegria da garotada mundo afora 8)