Recentemente me perguntaram:
Por que o NoSQL é mais rápido que o SQL?
Eu não concordo com a premissa da pergunta ... é apenas um absurdo para mim pessoalmente. Não vejo nenhum aumento de desempenho usando o NoSQL em vez de SQL. Talvez SQL sobre NoSQL, sim, mas não dessa maneira.
Estou perdendo algo sobre o NoSQL?
performance
nosql
cnd
fonte
fonte
Respostas:
Existem muitas soluções NoSQL por aí, cada uma com suas próprias forças e fraquezas, portanto, o seguinte deve ser tomado com um pouco de sal.
Mas essencialmente, o que muitos bancos de dados NoSQL fazem é confiar na desnormalização e tentar otimizar o caso desnormalizado. Por exemplo, digamos que você esteja lendo uma postagem de blog junto com seus comentários em um banco de dados orientado a documentos. Frequentemente, os comentários serão salvos junto com a própria postagem. Isso significa que será mais rápido recuperar todos eles juntos, pois eles são armazenados no mesmo local e você não precisa realizar uma associação.
Obviamente, você pode fazer o mesmo no SQL, e a desnormalização é uma prática comum quando se precisa de desempenho. Acontece que muitas soluções NoSQL são projetadas desde o início para serem sempre usadas dessa maneira. Você obtém as vantagens e desvantagens usuais: por exemplo, adicionar um comentário no exemplo acima será mais lento porque você precisará salvar o documento inteiro. E depois de desnormalizar, você deve preservar a integridade dos dados em seu aplicativo.
Além disso, em muitas soluções NoSQL, é impossível fazer junções arbitrárias, portanto, consultas arbitrárias. Alguns bancos de dados, como o CouchDB, exigem que você pense antes das consultas necessárias e as prepare dentro do banco de dados.
Em suma, tudo se resume a esperar um esquema desnormalizado e otimizar leituras para essa situação, e isso funciona bem para dados que não são altamente relacionais e exigem muito mais leituras do que gravações.
fonte
O que está faltando no NoSQL é que o NoSQl não pode ser comparado ao SQL de nenhuma maneira. NoSQL é o nome de todas as tecnologias de persistência que não são SQL. DBs de documentos, DBs de valor-chave e DBs de eventos são todos NoSQL. Eles são todos diferentes em quase todos os aspectos, seja a estrutura de dados salvos, consultas, desempenho e ferramentas disponíveis.
Portanto, se alguém lhe fizer essa pergunta na entrevista, essa deve ser a resposta.
fonte
Os bancos de dados 'NoSQL' (ou mais precisamente: não relacionais) renunciam a alguns recursos dos bancos de dados tradicionais por velocidade, mas mais importante por escalabilidade horizontal.
Os recursos ausentes dependem do produto concreto, em geral, as propriedades completas do ACID ou mesmo as operações de junção não são suportadas. Esse é o preço para o aumento do desempenho.
fonte
Você está certo, seria um absurdo afirmar isso em uma declaração geral. Qual é provavelmente o ponto todo; em vez de uma única resposta, o entrevistador provavelmente espera que você responda com perguntas para ajudá-lo a descobrir qual é o contexto do problema (que tipo de dados, quanto deles, em que ambiente operacional etc.), a solução NoSQL específica . Eles tentarão descobrir como você analisa os problemas e, ao longo do caminho, terão uma idéia do quanto você sabe sobre as diferentes soluções existentes.
fonte
Os bancos de dados NoSQL normalmente só fazem sentido se você projetar seus dados em torno deles.
Se você pretende simplesmente usá-los como um substituto do RDBMS, poderá obter menos desempenho em vez de mais, especialmente se não tiver orçamento suficiente para pagar por servidores com grandes quantidades de RAM.
Veja este artigo que compara o uso do espaço em disco do MySQL com o do MongoDB: http://blog.trackerbird.com/content/mysql-vs-mongodb-disk-space-usage
fonte
Qual banco de dados NoSQL? Qual banco de dados SQL? Se alguém lhe disser que o NoSQL é mais rápido que o SQL, você deve ir embora. Ou melhor ainda, assista a este vídeo:
http://www.youtube.com/watch?v=b2F-DItXtZs
Não direi que metade das coisas reivindicadas sobre o NoSQL estão erradas, mas direi que há muito fanboyismo no NoSQL por aí de pessoas que realmente não o entendem muito bem.
O SQL tem seus limites (é claro), mas também é uma tecnologia muito madura, que é bem entendida e tem um grande conjunto de desenvolvedores que sabem como usá-la bem. Não posso dizer o mesmo para todas as formas de NoSQL.
fonte
NoSql suportado por bancos de dados orientados a colunas onde RDBMS é um banco de dados orientado a linhas ... E digamos, por exemplo, que temos uma tabela Employee com Nome, Idade, Salery, Address, EmployeeId etc ... colocamos a mesma tabela no MySql (suporte a RDBMS) e HBase (Suporte NoSQL). Se um cliente escreve uma consulta para obter os detalhes médios de Idade ou Salário dos registros de funcionários da 1Lakh ... o que acontece?
No RDBMS, ele percorre cada linha e coleta o valor e soma e divisão para o resultado. Quando se trata de banco de dados Columnar, não é necessário se preocupar com todas as iterações de uma linha. Mas lide com apenas uma linha que é mais rápida de calcular. Assim, às vezes, o NoSQL é mais rápido que o SQL. Nesse caso, o NoSQL não se importa com reclamações de ACIDs!
fonte
Esqueça a teoria dos bancos de dados .... o ponto em que você entender suas consultas, poderá salvar os dados nos bancos de dados nosql da maneira exata em que eles são realmente usados em seu aplicativo ....
Por exemplo, considere este exemplo: você tem um modelo de cliente com muitos pedidos e muitos itens associados a cada pedido; eles também têm muitos itens salvos para compras posteriores ... se você é uma grande loja de comércio eletrônico, digamos 10 milhões de clientes e 50 milhões de pedidos. E esse cliente efetua login no painel que exibe esses dados exatos, quanto trabalho um banco de dados sql precisará fazer para encontrar o cliente, juntar os pedidos e cada item de linha e itens salvos. Em um banco de dados sql, todos esses dados provavelmente precisarão se juntar de alguma forma ... ou você pode criar uma coleção em seu banco de dados chamada usercache e salvar esses dados exatamente como você os usa na vida real. Portanto, pode ser realmente uma única consulta em um único campo [id] para recuperar todos esses dados. Além disso, o banco de dados nosql não
Então, um sql db pode consultar um único campo de ID tão rápido quanto não mais rápido que o nosql? Sim, mas um banco de dados sql pode retornar todos os dados necessários consultando uma tabela e um campo? Não, a menos que você faça algo como salvar os dados no Json dentro de um grande campo de texto. Mas agora esses dados não podem ser consultados para uso futuro em potencial.
fonte