Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hargon

Qual o melhor banco de dados NoSQL?

Recommended Posts

Para quem trabalha com banco de dados relacional, saber que Access é inferior a MySQL, e MySQL inferior a Oracle e SQL Server é mais tranquilo para encontrar essas informações.

 

Mas na opinião de vocês que já trabalham com NoSQL, qual seria o melhor banco de dados atualmente? Quais as principais diferenças entre eles? Ou todos comportam da mesma forma, mudando apenas algumas sintaxes?

 

Estou vendo alguns posts aqui sobre MongoDB (parece que é o que tem mais facilidade de integração com PHP), mas já li alguns bons comentários sobre Cassandra, e principalmente sobre o CouchDB, por isso surgiu a dúvida.

 

Desde já agradeço pessoal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A minha necessidade agora é estudar um para aprender NoSQL. Por isso queria conhecer mais sobre eles. O primeiro que ouvi falar foi Cassandra, mas nunca estudei a fundo. Agora com a criação desta área aqui, me interessei mais.

 

Só que vejo posts somente do MongoDB. Pesquisei sobre ele e ao que parece é o que possui mais referências na Internet.

 

Neste link existe uma explicação interessante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A minha necessidade agora é estudar um para aprender NoSQL. Por isso queria conhecer mais sobre eles. O primeiro que ouvi falar foi Cassandra, mas nunca estudei a fundo. Agora com a criação desta área aqui, me interessei mais.

 

Só que vejo posts somente do MongoDB. Pesquisei sobre ele e ao que parece é o que possui mais referências na Internet.

 

Neste link existe uma explicação interessante.

 

Em uma grande síntese do movimento NoSQL no blog Heroku, Adam Wiggins nos dá os seguintes exemplos de uso do NoSQL:

 

Dados estatísticos, frequentemente escritos mas raramente lidos (por exemplo, um contador de hits na web), devem usar um modelo chave/valor como o Redis, ou um modelo de documento como o MongoDB.

 

Big Data (como estatísticas meteorológicas ou analytics de negócios, Business intelligence) funcionam melhor de uma forma livre, em sistemas distribuídos utilizando Hadoop.

 

Binários (como MP3s e PDFs) são melhores acomodados em um armazenamento de dados que pode servir diretamente para o navegador do usuário, como a Amazon S3.

 

Dados transientes (como sessões web, bloqueios, ou estatísticas de curto prazo) devem ser mantidos em um armazenamento de dados transitórios como Memcache.

 

Se você precisa reproduzir o conjunto de dados em vários locais (como a sincronização de um banco de dados de música entre um aplicativo web e um dispositivo móvel), você vai querer os recursos de replicação do CouchDB.

 

Aplicativos de alta disponibilidade, onde a minimização da inatividade é fundamental, você encontra uma grande utilidade nos datastores de configuração redundante e clusters automáticos como o Cassandra e o Riak.

 

Então broder para estudar te aconselho a pegar 1 de cada tipo, mas ja te aviso que a maioria é feito em Java. Se quiser podes começar pelos mais conhecidos: MongoDb, CouchDB, Cassandra e Memcache

 

No nosqlbr.com.br tem alguns exemplo de Mongo+PHP

 

aqui Cassandra+PHP: http://nivaldomjunior.blogspot.com/2010/07/cassandra-php.html

 

CouchDB+PHP: http://thecosmotron.com/2008/08/11/basic-couchdb-w-php/

 

Memcache+PHP: http://php.net/manual/en/book.memcache.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom Suissa. Agora ficou claro, o melhor é conhecer todos, pois cada um serve para um tipo de aplicação.

 

Obrigado pela resposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe algum adequado para data mining?

 

Acredito, giesta, que MongoDB pode ser bastante adequado para data miming.

 

Se combinar, dentro do banco de dados, o modelo de documentos com MapReduce, e os padrões Iterator e Visitor, conseguimos fazer análises complexas, com vários algorítimos diferentes, em grandes volumes de dados, separar possíveis ruídos e recuperar a informação desejada.

 

Talvez, se você puder expor uma situação "real" com algum volume de dados e o possível algorítimo, conseguimos ilustrar um caso de uso, dentro do MongoDB.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dentre o que o Suissa demonstrou, não estou certo se conseguiria enquadrar minha aplicação em uma das categorias.

 

O sistema, apesar de complexo, é simples (hein? Que antagônico, não? :lol: ).

 

Assim, é um sistema "comum", nada de tão especial, mas quando em produção, pode gerar fluxo de acesso enorme e, por isso, precisaria de velocidade "extrema".

 

Seria o caso do Cassandra ou Riak?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dentre o que o Suissa demonstrou, não estou certo se conseguiria enquadrar minha aplicação em uma das categorias.

 

O sistema, apesar de complexo, é simples (hein? Que antagônico, não? :lol: ).

 

Assim, é um sistema "comum", nada de tão especial, mas quando em produção, pode gerar fluxo de acesso enorme e, por isso, precisaria de velocidade "extrema".

 

Seria o caso do Cassandra ou Riak?

 

Se você tem somente a necessidade da velocidade sim, agora se você mais alguma necessidade pode colocar em um ambiente de desenvolvimento e ver qual tem uma melhor per-forma para a sua necessidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for por velocidade usa soh um mysql +memcache pode ser q resolva.

 

Para data mining não sei mas acho q os Graphs Bds devem ser mais fáceis p/ fazer essas ligaçoes entre os dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se a ideia do NoSql é justamente esquecer o BD faz sentido perguntar qual o melhor BD ?

 

Seria como perguntar qual a melhor carne numa dieta vegetariana, não ?

 

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahhuahuhuahahahua não é bem assim seria como perguntar se era melhor comer tofu ou bife de soja. Todos com o mesmo conceito mas sabores diferentes!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A menos que provem o contrário, você NUNCA deve armazenzar imagens num banco de dados, seja ele qual for.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Minha situação é a seguinte: Estou em um projeto que utiliza aeronaves, não tripuladas, com sensores acoplados e produz uma enorme quantidade de imagens em alta resolução por sensoriamento remoto. Por voo são produzidas 1000 imagens que ocupam até 2 GB, sendo que em 1 ano estima-se a produção de 262.800.000 imagens com requisitos de armazenamento de ate 525 TB. Este volume de dados não pode ser gerenciado eficientemente em ambientes de bancos de dados tradicionais, talvez em nuvem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é indiferente. Se você precisa de maior velocidade, acessá-las diretamente a partir do disco é N vezes mais rápido do que pelo banco de dados.

 

Eu acho que para ficar ainda mais veloz, a mudança seria ou deveria ser mais quanto ao hardware do que quanto ao software.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode falar um pouco mais sobre a sua aplicação?

Vocês farão uso de geolocalização neste armazenamento?

Como pretendem realizar as buscas?

 

Numa avaliação superficial, me parece que as melhores opções para o seu cenário são MongoDB e Apache CouchDB.

 

Você deve estudar quais estratégias de indexação, replicação e escalabilidade deseja utilizar a sua aplicação, isto pode vir a ser um impedimento técnico mais adiante e (um clichê de leve) tempo é dinheiro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mongodb

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua aplicação para fotos é simples.

Crie uma grande tabela com as coordenadas,dimensões da imagem e caminho para elas.Exemplo:

 

ID;LATITUDE;LONGITUDE;ALTITUDE;LARGURA_IMAGEM;ALTURA_IMAGEM;DATA;HORA;IMAGEM

001;234342;78837578583;1222;200;200;12/12/2013;12:00;[file://c:/pasta/001.bmp]

 

Uma aplicação embarcada usa o comando @adicionar para adicionar os dados da imagem na tabela:

{
  Tabela_imagem;@adicionar;
(
  ID;
  LATITUDE;
  LONGITUDE;
  ALTITUDE;
  LARGURA_IMAGEM;
  ALTURA_IMAGEM;
  DATA;
  HORA;
  IMAGEM;
);
0;0;0;
query=0;
destino=0
}

Depois,quando quiser pesquisar uma imagem,poderá fazer uma pesquisa por ID,altitude,data,etc...
com parametro ou sem parametro usando o comando @algo (fulltext) ou @pesquisar,@pesquisar>=,@pesquisar<=,@key
.

Com os resultados da query,você pode criar instantaneamente um html usando @html_resposta com (css,etc) e usar duas opções:

A)Comando @link para criar um link para o arquivo da imagem.

B)Comando @imagem para exibir a imagem no html (desktop ou web).

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.