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?
nosql
relational-dbms
ePezhman
fonte
fonte
Respostas:
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.
fonte
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.
fonte
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.
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.
fonte
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 :)
fonte
É a hora de mudar para o NoSQL will depende de duas coisas:
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 ".
fonte