Os dados em nosso DBMS relacional estão aumentando, é hora de mudar para o NoSQL?

17

Criamos um aplicativo de rede social para fins de eLearning. É um projeto experimental que estamos pesquisando em nosso laboratório. Ele tem sido usado em alguns estudos de caso há algum tempo e os dados em nosso DBMS relacional (SQL Server 2008) estão ficando grandes. São alguns gigabytes agora e as tabelas estão altamente conectadas uma à outra. O desempenho ainda está bom, mas quando devemos considerar outras opções? É a questão do desempenho?

ePezhman
fonte
3
Para qualquer coisa de rede social, eu altamente recomendo um banco de dados gráfico como Neo4j ou OrientDB
Apollo

Respostas:

14

Alguns gigabytes não são muito " grandes ". É mais como o tamanho normal de um banco de dados corporativo. Contanto que você repasse o PK ao ingressar em tabelas, deve funcionar muito bem, mesmo no futuro (desde que você não obtenha TB de dados por dia).

A maioria dos profissionais que trabalham em um ambiente de big data considera ~ 5 TB como o início do termo big data. Mas, mesmo assim, nem sempre é a melhor maneira de instalar o próximo melhor banco de dados nosql. Você deve sempre pensar na tarefa que deseja arquivar com os dados (agregado, lido, pesquisado, minado, etc.) para encontrar as melhores ferramentas para o seu problema.

ou seja, se você fizer muitas pesquisas em seu banco de dados, provavelmente seria melhor executar uma instância / cluster de solr e desnormalizar seus dados de um DBMS como o Postgres ou o SQL Server de tempos em tempos e colocá-lo em solr em vez de apenas mover os dados do sql ao nosql em termos de persistência e desempenho.

Johnny000
fonte
10

Para responder a essa pergunta, você precisa responder que tipo de compromisso você pode pagar. RDBMs implementa o ACID . Isso é caro em termos de recursos. Não há soluções NoSQL que são ACID. Veja o teorema da CAP para mergulhar fundo nessas idéias.

Portanto, você precisa entender cada compromisso concedido por cada solução e escolher o que for mais apropriado para o seu problema.

rapaio
fonte
8

Big Data, na verdade, não é tão sobre o "quão grande é".

Primeiro, poucos gigabytes não são grandes, é quase nada. Portanto, não se preocupe, seu sistema continuará funcionando com eficiência por algum tempo, eu acho.

Então você tem que pensar em como você usa seus dados.

  • Abordagem SQL: todos os dados são preciosos, bem coletados e selecionados, e o foco é no armazenamento de dados altamente valiosos e bem estruturados. Isso pode ser caro, tudo está interligado e é bom para dados funcionais e bem estruturados do sistema.
  • Abordagem de big data: no big data, você basicamente armazena quase tudo, independentemente do valor que possui, e depois faz um processo de análise ativo. As coisas não estão ligadas, são copiadas. Por exemplo, digamos que eu tenho uma entrada de blog. No Big Data, não haverá um link para o autor, mas o autor será incorporado na entrada do blog. Muito mais escalável, mas exige uma abordagem diferente e mais complexa.

Se seus dados "funcionais" de armazenamento forem usados ​​pelo seu aplicativo, sugerirei que você permaneça no SQL. Se você estiver armazenando dados para pesquisá-los mais tarde ou para gerar relatórios, e se essa quantidade de dados puder aumentar rapidamente, sugerirei big data. Na minha opinião, o big data é útil quando você lida com dados reais que precisam ser coletados e analisados ​​continuamente.

tanou
fonte
8

Postei uma resposta bastante detalhada no stackoverflow sobre quando é apropriado usar o banco de dados relacional vs documento (ou NoSQL), aqui:

Motivações para usar o banco de dados relacional / ORM ou banco de dados de documentos / ODM

Resumo:

  • para coisas pequenas, use as ferramentas que você já conhece

  • alguns gigabytes são definitivamente coisas pequenas: não ficam grandes até que fiquem grandes demais para caber em um único cluster do MySQL com um número razoável de nós (16-32), o que significa talvez 8-16 TB de dados e alguns milhões de transações por segundo (ou um banco de dados mais convencional, baseado em disco rígido, com até 100 dados de TB e alguns milhares de transações por segundo).

  • se você estiver preso a outro banco de dados (não ao MySQL Cluster), obtenha mais vantagens usando o hardware FusionIO.

  • depois que você tiver dados maiores que alguns TB e mais rápido que milhares de transações por segundo, é um bom momento para analisar a migração para sharding lógico no código do aplicativo primeiro e depois no NoSQL.

  • Cassandra :)

Alex I
fonte
6

É a hora de mudar para o NoSQL will depende de duas coisas:

  1. A natureza / estrutura dos seus dados
  2. Seu desempenho atual

Os bancos de dados SQL são excelentes quando os dados estão bem estruturados (por exemplo, quando podem ser modelados como uma tabela, uma planilha do Excel ou um conjunto de linhas com um número fixo de colunas). Também é bom quando você precisa fazer muitas junções na tabela (o que parece ser o seu caso).

Os bancos de dados NoSQL são excelentes quando os dados são desestruturados além dos pares de valores-chave.

Em termos de desempenho, você deve se fazer uma pergunta: sua solução SQL atual é lenta ?

Caso contrário, siga o princípio " IIABDFI ".

DVK
fonte