Usos do banco de dados NoSQL na ciência de dados

16

Como os bancos de dados NoSQL como o MongoDB podem ser usados ​​para análise de dados? Quais são os recursos neles que podem tornar a análise de dados mais rápida e poderosa?

jithinjustin
fonte
2
O principal uso é armazenar e recuperar dados. De fato, esse é o único uso para um banco de dados NOSQL ou qualquer banco de dados. Deseja melhorar sua pergunta?
Spacedman
Sim, o banco de dados é usado principalmente para armazenar e recuperar dados. Como eles podem ser usados ​​para análise de dados? Quais são as ferramentas incorporadas aos bancos de dados NOSQL, como o mongodb, que tornam a análise de dados fácil e poderosa?
22614 jithinjustin
1
Melhore sua pergunta editando-a, não adicionando aos comentários.
Spacedman

Respostas:

23

Para ser perfeitamente honesto, a maioria dos bancos de dados NoSQL não é muito adequada para aplicativos em big data. Para a grande maioria de todos os aplicativos de big data, o desempenho do MongoDB em comparação com um banco de dados relacional como o MySQL é significativamente ruim o suficiente para garantir que você fique longe de algo como o MongoDB.

Dito isso, existem algumas propriedades realmente úteis dos bancos de dados NoSQL que certamente funcionam a seu favor quando você trabalha com grandes conjuntos de dados, embora a chance desses benefícios superem o desempenho geralmente ruim do NoSQL em comparação ao SQL para leitura. operações intensivas (mais semelhantes aos casos de uso típicos de big data) são baixas.

  • Sem esquema - se você estiver trabalhando com muitos dados não estruturados, pode ser difícil decidir e aplicar rigidamente um esquema. Os bancos de dados NoSQL, em geral, apoiam muito isso e permitem inserir documentos sem esquema em tempo real, o que certamente não é algo que um banco de dados SQL suportará.
  • JSON - Se você estiver trabalhando com documentos no estilo JSON em vez de comarquivos CSV , verá muitas vantagens em usar algo como MongoDB para uma camada de banco de dados. Geralmente, a economia do fluxo de trabalho não supera o aumento do tempo de consulta.
  • Facilidade de uso - não estou dizendo que os bancos de dados SQL sejam sempre difíceis de usar ou que o Cassandra é a coisa mais fácil de configurar no mundo, mas, em geral, os bancos de dados NoSQL são mais fáceis de configurar e usar do que os bancos de dados SQL. O MongoDB é um exemplo particularmente forte disso, conhecido por ser uma das camadas de banco de dados mais fáceis de usar (fora do SQLite ). O SQL também lida com muita normalização e há um grande legado de práticas recomendadas para SQL que geralmente atrapalha o processo de desenvolvimento.

Pessoalmente, sugiro que você também verifique bancos de dados de gráficos , como o Neo4j, que mostram um desempenho realmente bom para certos tipos de consultas, se você quiser escolher um back-end para seus aplicativos de ciência de dados.

indico
fonte
Você está certo. Os bancos de dados NOSQL são usados ​​principalmente para armazenar dados não estruturados ou semiestruturados, como o json. Você pode explicar alguns dos tipos de análise de dados que podemos fazer com eles. Quais são as ferramentas incorporadas no mongodb que podem ser usadas para análise de dados?
jithinjustin
1
@jithinjustin não existem ferramentas de análise de dados incorporadas ao mongo ou a qualquer banco de dados. Além disso, jsonsão dados totalmente estruturados. Tecnicamente, você pode fazer qualquer tipo de análise de dados, usando um banco de dados NOSQL na verdade não está relacionado. Existem ferramentas construídas sobre o mongo, como o analytica.
indico
1
Eu não sei sobre tudo isso. O MongoDB pode ter um desempenho melhor que o MySQL. Você teria um argumento melhor se dissesse o PostgreSQL (que, a propósito, pode aceitar JSON). De qualquer maneira, eu não consideraria algum "desempenho" arbitrário (não sabemos qual é o caso de uso) como um motivo para não usar o NoSQL. Também não faça descontos usando vários bancos de dados. Lembre-se, o MongoDB possui incríveis recursos de agregação que o SQL não possui.
Tom
1
@ No desempenho, você verá que a única tarefa que o mongo realmente supera o mysql é as inserções ( moredevs.ro/mysql-vs-mongodb-performance-benchmark ), que é uma parte comparativamente pequena da análise de dados. Os recursos de agregação do SQL são MUITO mais maduros que os do Mongo. No que diz respeito ao MYSQL e ao Postgres, os números são muito distorcidos temporariamente e ambos tendem a oferecer desempenho semelhante. O MYSQL é mais comum, e foi por isso que mencionei isso, mas os dois são bem parecidos.
Indico
Eu sempre vi melhor desempenho no MongoDB quando as coisas se encaixam na memória. Eu tomo benchmarks com um ganho de sal, porque se você pesquisar um pouco no Google, encontrará vários benchmarks mostrando o MongoDB o mais rápido. Isso realmente depende de suas necessidades. Dito isso, para ajudar a responder à pergunta original - acho que há muitos usos para o NoSQL na ciência e na análise de big data.
26414 Tom
4

Um benefício da abordagem NoSQL sem esquema é que você não confirma prematuramente e pode aplicar o esquema correto no momento da consulta usando uma ferramenta apropriada como o Apache Drill . Veja esta apresentação para detalhes. O MySQL não seria minha primeira escolha em um ambiente de big data.

Emre
fonte
Aqui está uma pergunta relacionada a NoSQL, JSON e Drill: datascience.stackexchange.com/questions/9568/…
sheldonkreger
4

Considere, tente e talvez até use vários bancos de dados. Não é apenas uma questão de "desempenho" em jogo aqui. Isso realmente vai se resumir às suas necessidades. De quantos dados você está falando? que tipo de dados? quão rápido você precisa? Você é mais ler pesado ou escrever pesado?

Aqui está uma coisa que você não pode fazer em um banco de dados SQL: Calcular sentimentos. http://www.slideshare.net/shift8/mongodb-machine-learning

É claro que a velocidade nesse caso pode não ser rápida o suficiente para suas necessidades, mas é algo possível. Com algum armazenamento em cache de valores agregados específicos, era bastante aceitável. Por que você faria isso? Conveniência.

Conveniência é realmente algo pelo qual você será persuadido. É exatamente por isso que (na minha opinião) os bancos de dados NoSQL foram criados. É claro que desempenho também, mas estou tentando descontar benchmarks e focar mais em outras preocupações.

Os bancos de dados do MongoDB (e alguns outros NoSQL) possuem alguns recursos muito poderosos, como mapear / reduzir embutido. Isso pode resultar em economia de custo e tempo ao usar algo como o Hadoop. Ou poderia fornecer um protótipo ou MVP para iniciar um negócio maior.

E quanto aos bancos de dados gráficos? Eles são "NoSQL" também. Veja bancos de dados como o OrientDB. Se você quer argumentar sobre desempenho ... acho que você não me mostrará um banco de dados SQL mais rápido lá =) ... e os bancos de dados de gráficos têm um aplicativo realmente incrível baseado no que você precisa fazer.

A regra da tecnologia (e a Internet) não fica muito confortável com uma coisa. Você será limitado e se preparará para o fracasso.

Tom
fonte
1
Não vejo nada nesse link ou aqui que prove que você não pode fazer análises de sentimentos em um banco de dados SQL. os exemplos do mongoDB se beneficiam do Javascript no banco de dados, para que você possa usar qualquer linguagem incorporada em um banco de dados SQL. Por exemplo, Postgres + R.
Spacedman
Gostaria de ver onde você pode executar o código e mapear / reduzir nesses bancos de dados. Com toda a seriedade (especialmente Postgres). ... e mesmo que você pudesse, isso ainda não torna a resposta menos válida, a propósito. Um simplesmente pode querer usar o NoSQL. Isso funciona.
Tom
1
O Postgres + C, Python, Perl, R, alimenta seu banco de dados do Postgres nos mais recentes algoritmos de aprendizado de máquina. Fácil: postgresql.org/docs/9.0/static/xplang.html
Spacedman
Agradável. Vou ter que tentar isso algum dia. E o MySQL?
25414 Tom