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
- 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.