Primeiras aulas do curso SQL Server: Persistindo e recuperando documentos JSON

SQL Server: Persistindo e recuperando documentos JSON

Entendendo o JSON - Apresentação

Meu nome é Victorino Vila e eu vou ser o instrutor desse treinamento de SQL Server com JSON.

O que temos observado no mercado de uns 10, 15 anos atrás, foi o crescimento dos bancos de dados que nós chamamos de NoSQL. São bancos de dados que não seguem aquela modelagem original de bancos de dados relacional. Inclusive, aqui na Alura nós temos um curso de modelagem relacional onde explicamos bastante como funciona esse modelo.

E todos os bancos de dados hoje do mercado como o Oracle, SQL Server, MySQL, Postgre e assim por diante, principalmente os que utilizam a linguagem SQL, são baseados num modelo relacional.

Mas com o advento das redes sociais, o surgimento da internet, com aplicações de big data com múltiplos volumes, os bancos de dados tradicionais, os relacionais, não começaram mais a suportar o grande volume e a necessidade de modelagem que essas novas aplicações exigiam e começaram a surgir os bancos de dados NoSQL.

E eles são baseados num objeto chamado JSON, que é um objeto de comunicação de dados onde você transforma classes de objetos em representação texto, através de uma notação baseada em JavaScript.

E o JSON hoje se tornou um padrão não só para armazenar dados em bancos de dados NoSQL, porque eu consigo modelar uma classe complexa simplesmente numa única sentença de texto e salvar isso no banco de dados, e poder parsear esse cara, buscar dados de dentro dele, é assim a engrenagem dos bancos de dados NoSQL, porque esses caras não têm uma estrutura rígida, eles são flexíveis.

Então esses bancos NoSQL começaram a trabalhar com os documentos JSON, e o que acontece? Os bancos de dados relacionais de mercado começaram a ver, “Se não fizermos alguma coisa, vamos perder mercado”.

Então de uns 10 anos para cá, mais ou menos – eu não estou sendo muito preciso nas datas – os bancos de dados relacionais passaram a comportar também os objetos no formato JSON.

O objetivo desse treinamento é ver como o SQL Server manipula objetos JSON, como se eles simulassem, digamos assim, dentro do banco de dados relacional, um comportamento de um banco de dados NoSQL.

E nesse treinamento nós começamos, claro, a ver o que é um JSON, definir o que é um JSON, como um JSON é montado, as vantagens do uso do JSON na serialização, na transformação de classe em objeto, na integração.

E depois nós vamos falar um pouco dos bancos de dados NoSQL e do comparativo entre eles e os bancos tradicionais. Isso vai ser a aula número 1. Depois vamos começar a ver como o JSON funciona dentro do SQL Server, em mais três capítulos.

No primeiro capítulo vamos ver como eu consigo manipular o JSON. No outro capítulo nós vamos extrair elementos do JSON e no capítulo final nós vamos modificar os elementos de um JSON. Esse curso vai cumprir essa parte didática mostrando então como manipulamos JSONs dentro do SQL Server.

Esse curso faz parte da carreira de SQL Server e ele exige, claro, um requisito que você já tenha certo conhecimento no uso desse banco de dados. Então é isso. Obrigado, vamos em frente, espero que vocês gostem do curso, até o próximo vídeo.

Entendendo o JSON - Conhecendo o JSON

Vamos começar então? Vamos falar sobre o JSON ou, pela sigla, JavaScript Object Notation. Ele é um formato usado para intercâmbio de dados, independente da linguagem onde aquele dado está sendo controlado ou armazenado.

O JSON é baseado em texto e é usado muito na parte de serialização de dados. E tem esse nome JavaScript Notation porque a sua sintaxe deriva dos literais da linguagem JavaScript.

Eu expliquei um pouco sobre a serialização de dados, na verdade eu vou até explicar um pouco mais à frente sobre isso, mas basicamente é o processo de você transformar uma classe orientada a objeto em um JSON e vice-versa. A serialização você transforma classe em JSON e você tem o que nós chamamos de desserialização, que você transforma JSON e classe.

A gramática do JSON é muito simples, ela é composta do que nós chamamos de seis caracteres estruturais, é o abre e fecha colchetes, o abre e fecha chaves, os dois pontos e a vírgula.

O abre e fecha chaves limita o início e o fim de um JSON, então toda a representação do JSON vai ser limitada por esses dois caracteres. Já os colchetes são usados para limitar o início e o fim de uma estrutura array. Quando eu estou falando aqui array, eu estou falando um conjunto de valores.

Os dois pontos vai ser usado para separarmos o nome da propriedade do JSON com o seu valor. Veremos que o JSON é composto basicamente de propriedades e valores, e esses valores podem ser número simples, textos, arrays ou outros JSONs. Então os dois pontos vão separar realmente o nome da propriedade com o seu valor.

E claro, tanto as múltiplas propriedades, ou seja, o conjunto propriedade e valor, bem como os elementos de dentro de um array, são separados pela vírgula. Então aqui temos um pouco do conceito dos seis caracteres estruturais que formam o JSON.

No que diz respeito aos valores das propriedades, nós temos strings, que são textos, temos números e aqui, no caso, nós estamos incluindo números inteiros ou decimais, sendo que quando representar valores decimais dentro de um JSON, eu tenho que usar o separador de decimal como um ponto e se eu tiver um número acima de 999, ou seja, na casa de milhar, eu não preciso nem devo usar o caractere separador de milhar.

E o outro tipo de dado que eu posso ter dentro de um JSON são dados representados por três literais, que são as palavras false, true e null. O false e o true representam valores lógicos, de verdadeiro ou falso, e o valor null representa uma propriedade que não tem valor.

No caso dos textos, você deve usar as aspas duplas para limitar o valor do texto. E também as aspas duplas devem ser usadas para limitar o nome das propriedades.

Podem ser usadas também aspas simples para fazer essa limitação tanto da variável que é texto com o nome da propriedade. Quando se trata de números eu não tenho essas aspas limitando os valores, nem mesmo quando eu uso os valores false, true ou null, ou seja, os valores literais.

Falando uma coisa que eu já expliquei nesse vídeo, o JSON possui um conjunto de propriedades e valor, essa propriedade tem um nome e o valor pode ser um string, um número ou um valor lógico, outro JSON ou então esse valor da propriedade pode ser um array, sendo que os elementos do array são separados por vírgulas.

E claro, quando é string, aspas duplas limitando o valor e o nome da propriedade também com aspas duplas, mas também podemos usar aspas simples.

Já o array eu posso ter elementos que são os mesmos tipos de valores representados pelas propriedades, ou seja, eu posso ter um array de strings, um array de números, um array de valores lógicos.

O array pode ter dentro dele um array de outros JSONs, e esses JSONs vão ser limitados pelo abre e fecha chaves e a estrutura interna, igual um JSON normal. Ou eu posso ter dentro de um array um conjunto de outros arrays.

Normalmente esses arrays representam atributos que nós chamamos de atributos multivalorados, atributos que possuem múltiplos valores. Por exemplo, vamos supor que eu tenha um JSON que representa um cadastro de clientes e eu tenho uma propriedade chamada hobby, são os hobbies que aquele cliente possui.

Então, por exemplo, um cliente pode ter como hobby praia, futebol e vôlei, então o valor da propriedade hobby do JSON que representa esse cliente vai ser um array com três valores ou eu posso ter outro cliente que tenha, por exemplo, praia, futebol e cinema como hobby. Esses valores vão estar separados por vírgula e entre colchetes, sendo limitados pelos colchetes.

Entendendo o JSON - Exemplo de um JSON

Vamos ver um exemplo de JSON. Vamos supor que eu tenha aqui a representação de um cadastro de clientes. Eu tenho aqui as propriedades, o nome do cliente, a idade dele, o salário que esse cliente ganha, os telefones de contato e os países que esse cliente já conheceu.

Note que eu tenho nome, é um string, um texto. Idade é um valor numérico, salário também é um valor numérico, só que idade é um valor numérico inteiro e salário é um valor numérico decimal, porque representa um valor moeda. E telefone, eu tenho dois telefones e países eu tenho três. A representação mais natural do JSON seria essa de baixo.

Então eu teria aqui a propriedade “Nome”, os dois pontos e o valor da propriedade. O nome da propriedade limitado em aspas duplas e como o nome é um string, também limitado em aspas duplas.

E eu tenho uma vírgula para separar essa propriedade da próxima propriedade, que também tem o nome aqui, “Idade”, com aspas duplas, os dois pontos para separar valor do nome da propriedade e aqui eu tenho o 35, um valor inteiro, e eu não represento com as aspas duplas porque é um número.

Depois eu venho aqui à representação de salário, a propriedade já aprendemos que tem que estar com aspas duplas e o valor, 10650.34, é um número sem o separador de milhar e o separador de decimal sendo um ponto. Novamente a vírgula, tanto aqui em salário quanto aqui em cima, na idade, para a próxima propriedade.

A próxima propriedade é um array, por quê? Porque o cara pode ter mais de um telefone. Temos o nome da propriedade, “Telefone”, os dois pontos e temos aqui o abre colchetes e lá no final o fecha colchetes, e nós temos os dois telefones separados por vírgula.

Aqui eu estou considerando o telefone como um texto e não como um número, principalmente porque eu tenho o símbolo de separador lá para mostrar melhor a representação do telefone.

E embaixo eu tenho “Países”, que também é outro array, onde eu tenho aqui o abre e fecha chaves, e tem os nomes dos países limitados por aspas duplas e cada país separado por vírgula. Nós temos aí uma representação de um JSON simples.

Nós podemos ter uma representação de um JSON mais complexo. Vamos supor que eu esse meu cliente possui, por exemplo, três filhos e cada filho eu preciso guardar a informação sobre o nome dele, a idade e a escola que ele estuda.

[Aula1_video3_imagem2]

Esse cliente tem três filhos, o Marcelo, a Lucia e o Lucas, e eu tenho aqui embaixo um JSON para cada representação de cada filho, com a propriedade nome, idade e o nome da escola, usando a separação de aspas duplas quando é um valor texto. Nós temos aqui a representação desses três filhos.

Então além dos dados cadastrais eu teria aqui uma propriedade chamada “Filhos”, que teria um array, então aqui teria o abre colchetes do array e ele fecha aqui no final, e eu teria um elemento, que seria um JSON, começa no abre chaves e termina no fecha chaves.

Eu tenho uma vírgula para o segundo JSON, já que é um array de JSONs, que seria o que engloba essa parte aqui da Lucia, eu não consigo no zoom selecionar tudo, mas ela vai estar até o final. E eu teria outro filho representado como um terceiro elemento do array. Então aqui nós temos uma representação mais complexa de um JSON.

Para não nos perdermos na hora de construir um JSON manualmente, porque você precisa realmente tomar cuidado, onde você abre chaves tem que fechar chaves, onde você abre colchetes tem que fechar colchetes, os elementos do JSON têm que estar separados por vírgula.

Nós normalmente usamos um editor de JSON e na internet está cheio de editor online que você pode testar para ver se o seu JSON está ou não de acordo com as regras do JavaScript Notation.

Eu vou parar a minha apresentação, eu vou abrir o meu browser e eu vou procurar aqui no Google por JSON online. Eu peguei esse site, que é o “jsoneditoronline.org” e vindo aqui eu tenho essa área. E eu vou pegar aquele JSON que representa o nosso cliente e vou colar aqui.

Eu tenho aqui a representação, note que o JSON Editor já muda de cor um pouco cada informação, as propriedades, os textos, que estão em verde, os nomes das propriedades estão na cor preta e os números estão na cor vermelha.

E eu posso indentar o JSON clicando nesse terceiro botão, à esquerda, eu vejo o JSON de uma maneira mais organizada. Note que se por acaso eu vier aqui e apagar essa vírgula ele já me mostra um “x” mostrando que tem erro ali, esse JSON não está legal. E eu posso pegar esse JSON e copiar para o outro lado e olhá-lo, por exemplo, num formato que chamamos de árvore, é esse botão à esquerda, “tree”.

E nós conseguimos ver o JSON com as suas propriedades, olha lá, eu tenho países, três, salário, telefone e filhos, por exemplo, eu tenho um filho, dois filhos e três filhos. As propriedades idade e nome estão perdidas aqui no meio.

Eu consigo organizar o JSON e se eu quiser construir um JSON manualmente, deixa eu limpar aqui, eu posso, ao clicar o abre chaves, por exemplo, {“Nome”:””, note que ao colocar aspas duplas ele já coloca duas aspas e o cursor fica no meio das aspas, está me facilitando a edição. Na verdade, aqui no caso, eu tenho que botar o cursor para fora das aspas duplas.

E, por exemplo, ”Idade”: 40 e como isso é um JSON eu tenho que fechar chaves. Note que ao fechar chaves ele já me mostrou o JSON sem erros. Basta eu copiar para o lado de cá e eu olho aqui o valor do JSON na forma de árvore.

Isso é um exemplo de como nós representamos, criamos e editamos JSONs de forma manual. Até o próximo vídeo.

Sobre o curso SQL Server: Persistindo e recuperando documentos JSON

O curso SQL Server: Persistindo e recuperando documentos JSON possui 194 minutos de vídeos, em um total de 59 atividades. Gostou? Conheça nossos outros cursos de SQL e Banco de Dados em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda SQL e Banco de Dados acessando integralmente esse e outros cursos, comece hoje!

Plus

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$85
à vista R$1.020
Matricule-se

Pro

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas