O banco de dados SQL (Structured Query Language) foi um mecanismo primário de armazenamento de dados criado há mais de quatro décadas. O uso explodiu no final da década de 1990 com o aumento de aplicativos da web e opções de código aberto, como MySQL, PostgreSQL e SQLite.
Os bancos de dados NoSQL existiram desde a década de 1960, mas recentemente ganharam força com opções populares como MongoDB, CouchDB, Redis e Apache Cassandra.
Você encontrará muitos tutoriais que explicam como usar um sabor particular de SQL ou NoSQL, mas poucos discutem por que você deve escolher um de preferência para o outro. Espero preencher essa lacuna. Neste artigo, abordaremos as diferenças fundamentais.
A maioria dos exemplos aplica-se aos populares sistemas de banco de dados MySQL SQL e MongoDB NoSQL. Outros bancos de dados SQL / NoSQL são semelhantes, mas haverá pequenas diferenças nos recursos e na sintaxe.
A Guerra Sagrada SQL vs NoSQL
Antes de avançarmos, vamos dissipar uma série de mitos ...
MITO: NoSQL substitui o SQL
Isso seria como dizer que os barcos foram substituídos por carros porque são uma tecnologia mais nova. SQL e NoSQL fazem o mesmo: armazenar dados. Eles tomam abordagens diferentes, o que pode ajudar ou dificultar seu projeto. Apesar de sentir-se mais novo e agarrando manchetes recentes, o NoSQL não é um substituto para o SQL - é uma alternativa.
MITO: NoSQL é melhor / pior do que o SQL
Alguns projetos são mais adequados para usar um banco de dados SQL. Alguns são mais adequados para o NoSQL. Alguns poderiam usar qualquer coisa de forma intercambiável. Nós não podemos aplicar os mesmos pressupostos gerais em todos os lugares.
MITO: SQL vs NoSQL é uma distinção clara
Isto não é necessariamente verdade. Alguns bancos de dados SQL estão adotando recursos NoSQL e vice-versa. As opções provavelmente se tornarão cada vez mais desfocadas, e os bancos de dados híbridos do NewSQL podem fornecer algumas opções interessantes no futuro.
MITO: o idioma / quadro determina o banco de dados
Nós nos acostumamos a pilhas de tecnologia, como -
LAMP: Linux, Apache, MySQL (SQL), PHP
MEAN: MongoDB (NoSQL), Express, Angular, Node.js
.NET, IIS e SQL Server
Java, Apache e Oracle.
Existem razões práticas, históricas e comerciais pelas quais essas pilhas evoluíram - mas não presuma que sejam regras. Você pode usar um banco de dados MongoDB NoSQL em seu projeto PHP ou .NET. Você pode se conectar ao MySQL ou ao SQL Server no Node.js. Você pode não encontrar tantos tutoriais e recursos, mas seus requisitos devem determinar o tipo de banco de dados - e não o idioma.
(Dito isto, não faça a vida propositadamente difícil para você! Escolher uma combinação de tecnologia incomum ou uma combinação de SQL e NoSQL é possível, mas você achará mais difícil encontrar suporte e empregar desenvolvedores experientes.)
Desempenho SQL vs NoSQL
Talvez a comparação mais controversa, o NoSQL seja regularmente citado como sendo mais rápido que o SQL. Isso não é surpreendente; NoSQL permite que você recupere todas as informações sobre um item específico em uma única solicitação. Não há necessidade de JOINs relacionados ou consultas SQL complexas.
Dito isto, o design do projeto e os requisitos de dados terão maior impacto. Um banco de dados SQL bem projetado quase certamente funcionará melhor do que um equivalente NoSQL mal projetado e vice-versa.
SQL vs NoSQL Scaling
À medida que seus dados crescem, você pode achar necessário distribuir a carga entre vários servidores. Isso pode ser complicado para sistemas baseados em SQL. Como você aloca dados relacionados? Clustering é possivelmente a opção mais simples; Vários servidores acessam a mesma loja central - mas mesmo isso tem desafios.
Os modelos de dados mais simples do NoSQL podem tornar o processo mais fácil, e muitos foram construídos com funcionalidades de escala desde o início. Isso é uma generalização, então procure conselhos de especialistas se você encontrar esta situação.
Praticas SQL vs NoSQL
Finalmente, consideremos problemas de segurança e sistema. Os bancos de dados NoSQL mais populares foram em torno de alguns anos; Eles são mais propensos a exibir problemas do que produtos SQL mais maduros.
Desenvolvedores e administradores de sistemas têm menos experiência com os sistemas de banco de dados mais novos, então os erros são feitos. Optar por NoSQL porque se sente mais fresco, ou porque você deseja evitar o projeto do esquema inevitavelmente, leva a problemas mais tarde.
Sumário SQL vs NoSQL
Os bancos de dados SQL e NoSQL fazem o mesmo de maneiras diferentes. É possível escolher uma opção e mudar para outra mais tarde, mas um pequeno planejamento pode economizar tempo e dinheiro.
Projetos em que o SQL é ideal:
Requisitos de dados discretos relacionados lógicos que podem ser identificados em frente
A integridade dos dados é essencial
Tecnologia comprovada baseada em padrões com boa experiência e suporte para desenvolvedores.
Projetos onde NoSQL é ideal:
Requisitos de dados não relacionados, indeterminados ou em evolução.
Objetivos de projeto mais simples ou mais flexíveis, capazes de começar a codificar imediatamente
A velocidade e a escalabilidade são imperativas.
No caso da nossa livraria, um banco de dados SQL parece ser a opção mais prática - especialmente quando introduzimos instalações de comércio eletrônico que exigem suporte robusto para transações.
https://www.sitepoint.com/sql-vs-nosql-differences/