Nos últimos anos, a necessidade de uma linguagem de consulta unificada para bancos de dados de grafos tem crescido significativamente. Esse movimento culminou com o surgimento do GQL (Graph Query Language), que recentemente se tornou um padrão ISO, conforme noticiado pela Neo4j. Com esse marco, acredito que algumas coisas vão mudar, principalmente na forma em que construímos aplicações orientadas à Grafos
Tá, mas o que é um Padrão ISO?
Primeiro, é importante entender o que é um padrão ISO. A ISO (International Organization for Standardization) é uma organização internacional independente que desenvolve e publica padrões internacionais. Esses padrões são acordos documentados que contêm especificações técnicas ou outros critérios precisos para garantir que materiais, produtos, processos e serviços sejam adequados ao seu propósito. Os padrões ISO são amplamente reconhecidos e adotados globalmente, garantindo qualidade, segurança e eficiência. No Brasil, a organização é representada pela Associação Brasileira de Normas Técnicas, ABNT NBR.
E recentemente, a GQL agora se tornou um padrão ISO (ISO/IEC 39075:2024), o que não acontecia com uma linguagem de bancos de dados desde 1987, que foi quando a SQL foi lançada. Ou seja, assim como a SQL, agora a GQL também é reconhecida mundialmente com um conjunto de regras e padrões.
Ainda quer saber mais sobre o é o GQL?
O GQL, agora um padrão ISO/IEC 39075, é uma linguagem de consulta destinada a interagir com bancos de dados baseados em grafos. Assim como o SQL é a linguagem padrão para bancos de dados relacionais, o GQL promete ser a linguagem padrão para bancos de dados de grafos, oferecendo uma sintaxe e semântica unificadas para operações em grafos.
Os sistemas de gerenciamento de banco de dados (SGBDs) que funcionam com seus dados como um grafo são chamados de bancos de dados orientados à grafos. Ter um padrão internacional para bancos de dados gráficos agrega imenso valor a um cenário onde os dados são cada vez mais dinâmicos e interconectados.
Porque a padronização do GQL é Importante?
Até recentemente, a ausência de uma linguagem padrão para consultas a grafos resultou em um ecossistema fragmentado, onde cada sistema de banco de dados de grafos tinha sua própria linguagem proprietária. Isso dificultava a interoperabilidade e a curva de aprendizado para desenvolvedores que precisavam trabalhar com diferentes sistemas. É como se cada banco de dados, como Neo4j, Microsoft Azure Cosmos DB, Aerospike, Virtuoso, ArangoDB, Amazon Neptune e outros líderes de mercado falassem linguas diferentes.
Aqui estão as linguagens de busca usadas pelos bancos de dados mencionados:
- Neo4j:
- Cypher: Uma linguagem de consulta declarativa projetada especificamente para trabalhar com grafos.
- Microsoft Azure Cosmos DB:
- SQL: Usado para consultas em documentos no modo SQL API.
- Gremlin: Usado para consultas em grafos no modo Gremlin API.
- Aerospike:
- Aerospike Query Language (AQL): Usado para consultas e operações de gerenciamento.
- UDFs (User Defined Functions): Usadas para operações mais complexas e agregações.
- Virtuoso:
- SPARQL: Uma linguagem de consulta e atualização usada para trabalhar com dados RDF.
- ArangoDB:
- AQL (ArangoDB Query Language): Uma linguagem de consulta projetada para interagir com documentos, grafos e valores-chave armazenados no ArangoDB.
- Amazon Neptune:
- Gremlin: Usado para consultas em grafos no modo de grafo de propriedade.
- SPARQL: Usado para consultas em grafos RDF.
Cada um desses bancos de dados foi projetado para diferentes tipos de armazenamento e processamento de dados, e suas linguagens de consulta refletem essas especializações.
Por exemplo, vamos imaginar uma consulta para buscar um funcionário com salário acima de 3000 reais em Cypher e Gremlin.
MATCH (f:Funcionario)
WHERE f.salario > 3000
RETURN f
g.V().hasLabel('Funcionario').has('salario', gt(3000)).valueMap()
Viu, só, como fica difícil? Seria necessário aprender todos esses tipos de linguagens para fazer consultas em banco de dados do mesmo tipo.
A padronização com a ISO/IEC 39075 promete resolver essas questões, proporcionando um conjunto de regras e sintaxe que podem ser universalmente aplicadas. Isso facilita a vida dos desenvolvedores, melhora a interoperabilidade entre sistemas diferentes e acelera a adoção de tecnologias de grafos.
Veja só um pedacinho das instruções da ISO do GQL
Com ela, você pode ter acesso a uma série de padrões e nomenclaturas que todos os bancos terão que usar daqui para frente. Assim um “Select” sempre será um “Select” independente do banco de dados utilizado.
Principais Características do GQL
- Interoperabilidade: O GQL foi desenvolvido para ser utilizado em diversos sistemas de bancos de dados de grafos, promovendo uma maior interoperabilidade.
- Expressividade: A linguagem foi projetada para ser altamente expressiva, permitindo consultas complexas e poderosas com uma sintaxe simplificada.
- Facilidade de Uso: O GQL adota uma abordagem intuitiva para a manipulação de grafos, tornando mais fácil para desenvolvedores familiarizados com SQL adaptarem-se à nova linguagem.
A sintaxe central para a GQL e o Cypher é praticamente idêntica
Muitos aspectos da GQL são idênticos ao Cypher. O mais importante é que a estrutura da consulta é a mesma. A GQL suporta as familiares instruções MATCH… RETURN e usa arte ASCII para descrever padrões de grafos. Da mesma forma, a GQL usa as mesmas expressões básicas, composição linear e muito mais. Obivamente que algumas instruções são diferentes na GQL e no Cypher. Por exemplo, a GQL usa a palavra-chave INSERT para adicionar um nó ou relação ao grafo, enquanto o Cypher usa CREATE. Da mesma forma, uma nova instrução FOR na GQL é equivalente a UNWIND. O que deve acontecer muito provavelmente é que a Cypher ( e imagino que as outras linguagens também ) vão adotar um suporte duplo para esses comandos, ou seja, ambos irão funcionar, garantindo assim a retrocompatibilidade e também a adequação do novo formato ISO.
Impacto no Mercado: Exemplos Práticos
A padronização do GQL como um padrão ISO traz inúmeros benefícios práticos que impactam diretamente o mercado e a comunidade de desenvolvimento de tecnologia. Vamos ver alguns exemplos concretos de como essa padronização afeta positivamente diferentes setores:
1. Desenvolvimento de Aplicações Empresariais
Empresas que utilizam bancos de dados de grafos para gerenciar grandes volumes de dados conectados, como redes sociais, e-commerce e bancos, agora podem contar com uma linguagem de consulta unificada. Isso significa que desenvolvedores podem criar aplicações que são mais facilmente portáveis entre diferentes sistemas de bancos de dados de grafos.
Exemplo: Uma empresa de e-commerce que usa grafos para recomendações de produtos pode facilmente migrar seu sistema de um banco de dados proprietário para outro mais escalável sem reescrever todas as suas consultas, graças ao GQL padronizado.
2. Análise de Redes Sociais
Plataformas de redes sociais utilizam intensamente grafos para mapear conexões entre usuários, identificar influenciadores e detectar comunidades. A padronização do GQL permite a criação de ferramentas de análise mais robustas e interoperáveis.
Exemplo: Uma nova startup de análise de redes sociais pode desenvolver suas soluções com GQL e integrá-las facilmente com diferentes bancos de dados de grafos utilizados por plataformas maiores como Facebook e Twitter, permitindo uma análise mais eficiente e econômica.
3. Detecção de Fraudes em Instituições Financeiras
Instituições financeiras utilizam grafos para identificar padrões complexos de fraudes, analisando conexões entre transações, contas e entidades. Com o GQL padronizado, essas instituições podem implementar soluções mais eficazes e interoperáveis.
Exemplo: Um banco pode usar GQL para criar uma rede de transações suspeitas e, posteriormente, migrar seu sistema de detecção de fraudes para uma nova plataforma de banco de dados de grafos que ofereça melhor performance, sem a necessidade de retrabalhar suas consultas e algoritmos de detecção.
4. Desenvolvimento de Soluções de Inteligência Artificial
Soluções de IA que utilizam aprendizado de máquina baseado em grafos (Graph Machine Learning) se beneficiam diretamente da padronização do GQL, permitindo a criação de modelos mais robustos e generalizáveis.
Exemplo: Uma empresa de tecnologia pode desenvolver modelos de IA para recomendação de conteúdo usando GQL. Com a padronização, esses modelos podem ser treinados e implementados em diferentes plataformas de banco de dados de grafos, facilitando a expansão e a adoção da tecnologia.
Conclusão
A padronização do GQL como ISO/IEC 39075 traz uma série de benefícios práticos que vão desde a facilidade de migração entre plataformas até a melhoria da colaboração entre diferentes organizações. Isso não apenas impulsiona a inovação, mas também torna a tecnologia de grafos mais acessível e eficiente para uma ampla gama de aplicações no mercado. A adoção do GQL promete transformar a maneira como empresas e desenvolvedores trabalham com dados conectados, trazendo novas oportunidades e soluções avançadas para desafios complexos.
Para mais detalhes sobre a especificação, a ISO/IEC 39075 pode ser consultada diretamente no site da ISO.