MySQL – Dúvida dos Alunos!

Avatar


31 de março3 min. de leitura

Olá,  pessoal, tudo bem? Hoje vamos entender um pouco sobre um conceito bem legal que é o de Banco de Dados MySQL, você conhece?

O MySQL é um sistema de gerenciamento de banco de dados (SGBD), que utiliza a linguagem SQL (Linguagem de Consulta Estruturada, do inglês Structured Query Language) como interface.

É atualmente um dos SGBD mais populares da Oracle Corporation. Você pode estar se perguntando… da Oracle? Pois é isso mesmo, a Oracle em 2008 a MySQLAB, desenvolvedora do MySQL foi adquirida pela Sun Microsystems e em 2009 a Oracle acabou por adquirir a Sun e todos seus produtos, como a linguagem Java e o MySQL.

Mas veja, o MySQL não era distribuído sobre a licença GNU (Genereal Public Licence)… a resposta é sim… então como ficou o licenciamento após essa aquisição.

  • o MySQL não pode ser comercializado junto ao sistema desenvolvido.
  • caso se deseje desenvolver um novo produto a partir do código fonte do mysql e distribuí-lo como de sua propriedade, deve-se adquirir uma licença.

Então por isso que existe o MariaDB [2] que foi a continuação do projeto do MySQL em código-aberto como software livre e gratuito. É importante que o aluno saiba essa diferença, pois normalmente as bancas cobram MySQL de fato e não MariaDB, e se no seu edital estiver escrito MariaDB é importante verificar algumas diferenças que surgiram com a evolução dos dois SGBD no passar dos anos.

Vamos a uma dessas diferenças…

O MySQL na sua versão 8 implementa o tipo nativo JSON, o exemplo a seguir demonstra a criação de uma tabela com um campo desse tipo:

mysql> CREATE TABLE t1 (jdoc JSON);

Query OK, 0 rows affected (0.20 sec)

mysql> INSERT INTO t1 VALUES(‘{“key1”: “value1”, “key2”: “value2”}’); Query OK, 1 row affected (0.01 sec)

Então rodando na sua console, será criado uma tabela chama t1 com um campo chamado jdoc do tipo JSON e na próxima linha um comando INSERT para persistir um arquivo JSON nessa tabela.

Já no MariaDB isso também poderia ser feito, mas a diferença é que não existe um tipo JSON nesse banco, ao utilizar o mesmo comando CREATE TABLE em uma instância do MariaDB seria criada a tabela, mas nesse caso o tipo JSON é apenas um alias para o tipo LONGTEXT.

Vamos ver uma questão no qual a banca mesmo se enrolou na utilização dos dois SGBD’s.

Ano: 2020 Banca: COMPERVE Órgão: TJ-RN Prova: COMPERVE – 2020 – TJ-RN – Administrador de Sites

O banco de dados MySQL é gratuito e muito popular ao redor do mundo. Nesse contexto, analise o código a seguir:

CREATE TABLE tabelax (jdoc JSON);

Após a execução desse código, na versão 8 do MySQL,

constata-se que

Alternativas

 

a) será exibido um erro e não será criada a tabela.

b) será criado um campo do tipo JSON na tabelax.

c) será exibido um erro e será criada uma tabela vazia.

d) será criado um campo do tipo longtext na tabelax.

 

Essa questão tem como gabarito oficial a letra D, mas o correto seria a letra B, vejamos a explicação retirada dos manuais dos dois bancos.

O MySQL suporta um tipo de dados JSON nativo definido pela RFC 7159 que permite acesso eficiente a dados em documentos JSON (JavaScript Object Notation). O tipo de dados JSON oferece estas vantagens em relação ao armazenamento de strings. O espaço necessário para armazenar um documento JSON é aproximadamente o mesmo que para LONGBLOB ou LONGTEXT; consulte a Seção 11.7, “Requisitos de armazenamento de tipo de dados”

Fonte: https://dev.mysql.com/doc/refman/8.0/en/json.html

Já o MariaDB, JSON é um alias para LONGTEXT introduzido por motivos de compatibilidade com o tipo de dados JSON do MySQL. O MariaDB implementa isso como um LONGTEXT, pois o tipo de dados JSON contradiz o padrão SQL e os benchmarks do MariaDB indicam que o desempenho é pelo menos equivalente.

Fonte: https://mariadb.com/kb/en/json-data-type/

 

Então, veja que até mesmo as bancas acabam por se enrolar, e nesse caso a questão deveria ter seu gabarito alterado, pois ela é explícita em dizer que se trata do MySQL na sua versão 8. Consultando a base de dados de questões não identifiquei a anulação da questão ou alteração do seu gabarito, infelizmente isso ocorre, mas o importante é que o aluno poderia até perder essa questão, mas acabaria acertando outras e obtendo no final a sua aprovação.

Dessa forma encerro esse artigo com essa breve introdução sobre o assunto! Até mais!

 

GABARITO

  1. O gabarito oficial considerou letra D, mas conforme demonstramos o correto seria a letra B.

 

Referências

 

[1] https://dev.mysql.com/doc/  [2] https://mariadb.org/documentation/

 

Professor MSc, Washington Almeida

 

Doutorando e Mestre em Engenharia de Software pelo Centro de Estudos e Sistemas Avançados do Recife – C.E.S.A.R. Atualmente é Analista Judiciário na Justiça Federal (TRF1), Professor de vários cursos no Mercado e no Gran Cursos Online. É certificado ISF 27002.

 

Avatar


31 de março3 min. de leitura