Diferença entre mysql e nosql

SQL é um padrão que governa como os clientes podem executar consultas e manipular dados em um sistema de gerenciamento de banco de dados relacional (RDMS) em conformidade com o modelo relacional descrito por

Edgar F. Codd

e

Christopher J. Date

.

SQL é praticamente sinônimo de um modelo de banco de dados cliente / servidor no qual os dados são consolidados e o acesso é coordenado por um único servidor ... ou por um cluster de servidores fortemente acoplado. Isso envolve um conjunto de requisitos relacionados à atomicidade, consistência, isolamento e durabilidade (ACID) dos dados nas transações (potencialmente com muitos deles ocorrendo simultaneamente).

O SQL também implica a capacidade do servidor de impor regras de "integridade referencial" nos dados que gerencia. A estrutura desses dados (conceitualmente em linhas armazenadas em tabelas ... que se referem umas às outras por meio de relações (portanto, o "modelo relacional"), juntamente com as regras de integridade referencial, são chamadas de "esquema".

Este último detalhe revela outra faceta do SQL que é discutida com freqüência, especialmente em comparação com o NoSQL (ao qual abordaremos oportunamente). O acesso a dados em que vários campos de dados relacionados (colunas) são armazenados em tabelas diferentes envolve "JOINs" ... um dos principais conceitos do SQL.

As restrições impostas aos seus dados por esse esquema ... aquelas que evitam duplicação e várias formas de anomalia de dados ... são chamadas de

normalização

. Em geral, as formas normais mais avançadas envolvem mais JOINs. É possível "desnormalizar" o seu esquema e compensar o desempenho pela integridade referencial mantida pelo servidor (o que aumenta a responsabilidade do conjunto de aplicativos acessando e, principalmente, a manutenção do conteúdo do banco de dados).

Além disso, trabalhar com um esquema altamente normalizado a partir de linguagens de programação orientadas a objetos para implementar projetos orientados a objetos costuma ser visto como "

Incompatibilidade de impedância objeto-relacional

"Problema. Muitos desenvolvedores basicamente nunca se tornaram particularmente proficientes em JOINs de várias maneiras e no uso de tabelas de junção e relacionamentos M: N (multi-multi). Também é tradicionalmente difícil implementar modelos de dados hierárquicos (em forma de árvore) e de gráfico / rede e manter em estruturas de tabela SQL normalizadas.

Com tudo isso dito, podemos simplesmente explicar que

MySQL

é uma implementação específica de um sistema de software SQL RDBMS. É um software gratuito (e de código aberto) e é o RDBMS baseado em servidor mais popular para start-ups da Internet e para uso com estruturas da Web de código aberto e muitos outros sistemas de software. (

PostgreSQL

é a principal alternativa de código aberto e gratuita ao MySQL).

Isso nos leva a

NoSQL

... que não é um padrão nem um produto. É um termo usado para categorizar vários produtos e projetos de gerenciamento de dados com base em como eles contrastam com o SQL / RDBMS. A maioria das ofertas disponíveis do NoSQL oferece suporte a cluster, replicação, alta disponibilidade e processamento distribuído de baixo acoplamento.

Eles geralmente são construídos levando em consideração o

Teorema da PAC

trade-offs e são baseados em

Consistência eventual

(às vezes chamado de "BASE" ... Basicamente disponível com estado suave e consistência eventual) versus a semântica do ACID mencionada acima.

Muitos sistemas NoSQL são "sem esquema" e têm pouca ou nenhuma capacidade de impor integridade referencial. Assim como o uso do esquema "desnormalizado" em um RDBMS, isso empurra a responsabilidade para os clientes (em aplicativos da Web em camadas que seriam o middleware entre o servidor da Web e os back-ends de gerenciamento de dados).

A maior parte do que você ouvirá sobre as supostas vantagens do NoSQL sobre o modelo de cliente / servidor SQL / RDBMS está mal informada e a maior parte não é aplicável à grande maioria dos aplicativos e projetos. As limitações da escalabilidade do SQL não são tão onerosas quanto os especialistas e os entusiastas do NoSQL tendem a retratá-las.

A maioria dos NoSQL, ao evitar a normalização, é percebida por muitos desenvolvedores que apresentam menos dessa "incompatibilidade de impedância" a que me referi anteriormente.

Claro que tudo isso é apenas uma visão geral. Como você pode ver, a compreensão desses termos envolve uma ampla gama de tópicos no cenário moderno de gerenciamento de dados. Mergulhe nos vários links (principalmente para a Wikipedia) para obter mais detalhes.