Prévia do material em texto
Resumo Como realizar visualização gráfica de dados utilizando JSON Jackson Tavares Veiga - site: https://jacksonveiga.netlify.app/ 07 de março de 2023 https://jacksonveiga.netlify.app/ Jackson Tavares Veiga - site: https://jacksonveiga.netlify.app/ 07 de março de 2023 1 https://jacksonveiga.netlify.app/ Jackson Tavares Veiga - site: https://jacksonveiga.netlify.app/ 07 de março de 2023 Introdução 1. O que é um gráfico JSON 2. Como construir gráficos de relacionamento a partir de um JSON 3. Conclusões 4. Contatos 5. Referências 2 https://jacksonveiga.netlify.app/ Jackson Tavares Veiga - site: https://jacksonveiga.netlify.app/ 07 de março de 2023 O que é um gráfico JSON {JSON gráfico} é um conceito ou convecção estabelecida para modelar informações em forma de Grafos, a partir de um objeto JSON. O JSON Graph introduz novos tipos primitivos ao JSON para permitir que o JSON seja usado para representar informações do gráfico de maneira simples e consistente [1] JSON é um formato para troca de dados de maneira simples [2], geralmente as aplicações Web (Serviços Web) utilizam deste artifício por ser uma maneira simples e intercambiável entre as diferentes tecnologias. A vantagem de utilizar essa linguagem é a facilidade de manipulação dos dados em Javascript [1]. Apesar das vantagens já mencionadas, um ponto que gera muito desgaste é a busca dos atributos pois sua estrutura é concebida em árvore, garantindo maior flexibilidade nas aplicações. Ao meu ver, essa notação deve ser muito bem observada para desenvolvedores que desejam maior autonomia na concepção dos modelos de dados que irão transitar entre aplicações, além disto as principais linguagens (Javascript, C++, Python) possuem bibliotecas que suportam sua manipulação. Possivelmente, os programadores devem preferir manipular dados e realizar tratamento (DataScience) a partir de tabelas relacionais, então a tarefa de serializar um conteúdo JSON torna-se um pouco trabalhosa exigindo a expertise de desenvolvimento de métodos. 3 https://jacksonveiga.netlify.app/ Jackson Tavares Veiga - site: https://jacksonveiga.netlify.app/ 07 de março de 2023 Novamente, as referências deste conteúdo concentram-se na visualização gráfica, mas devido a difusão dos recursos JSON a literatura possui muitas informações boas para buscas e parser, vale a pena observar os experimentos e projetos copiados no GitHub - JTVEIGA [3]. Então, qual a vantagem de utilizar (Gráficos JSON), essa funcionalidade permite que um gráfico seja modelado como JSON eliminando as duplicidades de relacionamento entre as entidades do modelo. Pode-se entender uma forma de atribuir uma identificação única para cada elemento, onde uma entidade é armazenada é chamado de Caminho de Identidade da entidade. Essa combinação geralmente é suficiente para garantir que o caminho de identidade de uma entidade seja globalmente exclusivo [1]. 4 https://jacksonveiga.netlify.app/ Jackson Tavares Veiga - site: https://jacksonveiga.netlify.app/ 07 de março de 2023 Como construir gráficos de relacionamento a partir de um JSON Após realizarmos uma breve introdução sobre os conceitos apresentados, outro assunto bastante recorrente é a construção de gráficos de relacionamento a partir de atributos ou entrada de um objeto JSON. Atualmente minha pesquisa acerca destes métodos estão em desenvolvimento, portanto, espero que tenham bom senso ao utilizar as referências aqui destacadas como material de apoio para estudo. Um grande desafio em minhas atribuições dentro do laboratório de desenvolvimento para simulação e análise de modelos de dados, sendo estes disponibilizados de diferentes formas, para "nossa felicidade", optamos por utilizar essa informação de forma mais flexível, inserindo diretamente o conteúdo armazenado no padrão de linguagem, objetos ou dicionários JSON. Porém, como mencionado anteriormente, analisar uma estrutura a partir de diferentes tabelas com milhares de relações em que o conteúdo destas tabelas são estruturas de dados em árvores não será uma tarefa simples. Atualmente estudo ferramentas que tratem de forma gráfica a relação entre essas estruturas, assim como fazíamos no passado com as estruturas SQL relacionais. Então, utilizo aqui a referência [4] como ponto de partida para nossa "análise exploratória" da 5 https://jacksonveiga.netlify.app/ Jackson Tavares Veiga - site: https://jacksonveiga.netlify.app/ 07 de março de 2023 literatura baseada em experimentos práticos, ou seja, observar os resultados obtidos por outros desenvolvedores e escolha das melhores opções para tratar um determinado problema "já mencionado". A referência [4], apresentou problema semelhante - obter uma compreensão profunda da estrutura, a partir de uma ferramenta que possibilite aplicar vários filtros "nomes de tabelas e colunas, contagens de linhas, número de conexões" e então visualizar essa estrutura de relações de uma forma gráfica. Para isso, foi construído um script em Python que a partir dos dados de entrada extraídos de um banco " relacional", realizam métodos de exportação e transformação do conteúdo para JSON, em seguida estes dados são transformados em "data-frames". Após concepção da tabela inicial, são realizados tratamentos de dados em Python, buscando apenas o conteúdo de interesse para visualização. Para construção dos grafos, o autor utiliza da biblioteca "Networkx" - NetworkX é uma biblioteca da linguagem de programação Python para estudar grafos e redes [5]. A biblioteca utiliza a Teoria dos Grafos - sendo uma estrutura matemática que consiste em um conjunto de objetos (nós) e um conjunto de conexões entre estes objetos (arestas). A exploração dos modelos de dados gerados anteriormente é feita a partir dos dados das tabelas (nós) e as referências entre as tabelas, serão as (arestas). 6 https://jacksonveiga.netlify.app/ Jackson Tavares Veiga - site: https://jacksonveiga.netlify.app/ 07 de março de 2023 O resultado de [4] é uma aplicação capaz de analisar o conteúdo de dados e visualizar utilizando "Dash". A aplicação realiza uma pesquisa por todas as tabelas, executa o tratamento e conversão para objetos JSON e dicionários, então conecta os resultados de pesquisa de interesse das tabelas selecionadas. Essa aplicação pode ser útil para descoberta de relações de forma instantânea a partir de serviços web. Além dessa referência, podemos estudar o conteúdo apresentado em [6], trata-se de uma aplicação mais robusta utilizando conceitos de bancos de dados gráficos, para isso utiliza-se "MengraphDB" - um banco de dados gráfico na memória totalmente distribuído nativo criado para lidar com casos de uso em tempo real e "Flask" - é um pequeno framework web escrito em Python, responsável por interface com usuário para armazenamento das informações. Além destes frameworks, foi utilizado outras dependências para estruturação do ambiente de desenvolvimento. 7 https://jacksonveiga.netlify.app/ Jackson Tavares Veiga - site: https://jacksonveiga.netlify.app/ 07 de março de 2023 Conclusões do Autor Iniciamos o documento a partir de um exemplo de problema real para tratar a visualização de grande quantidade de relacionamento dos dados, em seguida são apresentados conceitos orientados a manipulação e troca de dados com objetos JSON. Uma análise exploratória rápida é feita em exemplos de estudo de caso e aplicações. As aplicações demonstram grandes desafios quanto ao uso dos conceitos de banco de dados baseado em grafos, assim ainda persiste a necessidade de utilizar diferentes técnicas e manejos para adaptar tanto dados relacionais quanto uso de estruturas e dicionários não relacionais, no entanto neste conteúdo procura-se apresentar de uma forma introdutória e prática as oportunidades e tecnologias envolvidas nos ambientes de desenvolvimento. Para próximas pesquisas, podem-se realizar experimentos práticos dos conceitos estudados e testes simples que tragam resultadosreais. Os autores também apresentam opiniões semelhantes às experiências vivenciadas até aqui - Bancos de dados relacionais modelam os dados com um conjunto de estruturas predeterminadas, então torna-se complexo as junções destes conjuntos de tabelas para análise de conteúdo, assim, são válidos esforços para apresentar técnicas mais eficientes de análise e visualização das informações. 8 https://jacksonveiga.netlify.app/ Jackson Tavares Veiga - site: https://jacksonveiga.netlify.app/ 07 de março de 2023 Sugiro, agora que você adquiriu os conhecimentos preliminares, tenha vontade de estudar as referências apresentadas e realizar seus experimentos pessoais, e não deixe de compartilhar com a comunidade os resultados alcançados, espero que tenham gostado e até uma próxima.... Agradecimentos e Contato Agradeço a todos que empenharam um tempinho para ler este resumo sobre como realizar visualização gráfica utilizando JSON, me coloco a disposição para esclarecimentos e deixo abaixo algumas referências para que continuem os estudos. Não esqueçam de dar aquela força em minha pesquisa. Grande abraço! Espero que possam compartilhar o meu trabalho. Agende uma consulta para eu te guiar nessa jornada: https://jacksonveiga.netlify.app/ https://github.com/JTVeiga https://www.linkedin.com/in/jackson-tavares-veiga-37b3a36a/ Referências [1]https://netflix.github.io/falcor/documentation/jsongraph.html#:~:text=JSON%20Graph%20allows %20a%20graph,in%20the%20JSON%20Graph%20object. 9 https://jacksonveiga.netlify.app/ https://jacksonveiga.netlify.app/ Jackson Tavares Veiga - site: https://jacksonveiga.netlify.app/ 07 de março de 2023 [2] https://www.json.org/json-en.html [3] https://github.com/JTVeiga [4]https://towardsdatascience.com/how-to-visualize-databases-as-network-graphs-in-python-2ce3 851f8458 [5] https://networkx.org/documentation/stable/reference/readwrite/json_graph.html [6]https://towardsdatascience.com/how-to-visualize-a-social-network-in-python-with-a-graph-data base-flask-docker-d3-js-af451db57330 [7] https://flask.palletsprojects.com/en/2.2.x/ [7] https://stackoverflow.com/questions/69606819/how-to-visualize-graph-like-json [8] https://www.sqlshack.com/learn-sql-the-information_schema-database/ [9] https://stackoverflow.com/questions/40118113/how-to-convert-json-data-into-a-tree-image [10] https://treelib.readthedocs.io/en/latest/#examples [11] https://www.grotto-networking.com/NetworkGraphVisualization.html [12] https://www.pythonfixing.com/2022/05/fixed-how-to-convert-json-to-tree-in.html [13] https://github.com/ThibaultReuille/semanticnet 10 https://jacksonveiga.netlify.app/