mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-04-25 16:36:21 +02:00
Native CLI i18n: The TrustGraph CLI has built-in translation support that dynamically loads language strings. You can test and use different languages by simply passing the --lang flag (e.g., --lang es for Spanish, --lang ru for Russian) or by configuring your environment's LANG variable. Automated Docs Translations: This PR introduces autonomously translated Markdown documentation into several target languages, including Spanish, Swahili, Portuguese, Turkish, Hindi, Hebrew, Arabic, Simplified Chinese, and Russian.
501 lines
22 KiB
Markdown
501 lines
22 KiB
Markdown
---
|
|
layout: default
|
|
title: "Especificação Técnica da Consulta GraphQL"
|
|
parent: "Portuguese (Beta)"
|
|
---
|
|
|
|
# Especificação Técnica da Consulta GraphQL
|
|
|
|
> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
|
|
|
|
## Visão Geral
|
|
|
|
Esta especificação descreve a implementação de uma interface de consulta GraphQL para o armazenamento de dados estruturados do TrustGraph no Apache Cassandra. Baseando-se nas capacidades de dados estruturados descritas na especificação structured-data.md, este documento detalha como as consultas GraphQL serão executadas contra tabelas do Cassandra contendo objetos estruturados extraídos e ingeridos.
|
|
|
|
O serviço de consulta GraphQL fornecerá uma interface flexível e segura para consultar dados estruturados armazenados no Cassandra. Ele se adaptará dinamicamente às alterações de esquema, suportará consultas complexas, incluindo relacionamentos entre objetos, e se integrará perfeitamente à arquitetura existente baseada em mensagens do TrustGraph.
|
|
|
|
## Objetivos
|
|
|
|
**Suporte Dinâmico de Esquema**: Adaptar-se automaticamente às alterações de esquema na configuração sem reinicializações do serviço.
|
|
**Conformidade com os Padrões GraphQL**: Fornecer uma interface GraphQL padrão compatível com as ferramentas e clientes GraphQL existentes.
|
|
**Consultas Eficientes do Cassandra**: Traduzir consultas GraphQL em consultas CQL eficientes do Cassandra, respeitando as chaves de partição e os índices.
|
|
**Resolução de Relacionamentos**: Suportar resolvedores de campos GraphQL para relacionamentos entre diferentes tipos de objetos.
|
|
**Segurança de Tipo**: Garantir a execução de consultas e a geração de respostas com segurança de tipo, com base nas definições do esquema.
|
|
**Desempenho Escalável**: Lidar com consultas concorrentes de forma eficiente, com um pool de conexões adequado e otimização de consultas.
|
|
<<<<<<< HEAD
|
|
**Integração de Solicitação/Resposta**: Manter a compatibilidade com o padrão de solicitação/resposta baseado no Pulsar do TrustGraph.
|
|
=======
|
|
**Integração de Solicitação/Resposta**: Manter a compatibilidade com o padrão de solicitação/resposta baseado em Pulsar do TrustGraph.
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|
**Tratamento de Erros**: Fornecer relatórios de erros abrangentes para incompatibilidades de esquema, erros de consulta e problemas de validação de dados.
|
|
|
|
## Contexto
|
|
|
|
<<<<<<< HEAD
|
|
A implementação do armazenamento de dados estruturados (trustgraph-flow/trustgraph/storage/objects/cassandra/) grava objetos em tabelas do Cassandra com base em definições de esquema armazenadas no sistema de configuração do TrustGraph. Essas tabelas usam uma estrutura de chave de partição composta com chaves primárias definidas por coleção e esquema, permitindo consultas eficientes dentro das coleções.
|
|
=======
|
|
A implementação de armazenamento de dados estruturados (trustgraph-flow/trustgraph/storage/objects/cassandra/) grava objetos em tabelas do Cassandra com base em definições de esquema armazenadas no sistema de configuração do TrustGraph. Essas tabelas usam uma estrutura de chave de partição composta com chaves primárias definidas por coleção, permitindo consultas eficientes dentro de coleções.
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|
|
|
Limitações atuais que esta especificação aborda:
|
|
Não há interface de consulta para os dados estruturados armazenados no Cassandra.
|
|
Impossibilidade de aproveitar os poderosos recursos de consulta do GraphQL para dados estruturados.
|
|
Falta de suporte para a travessia de relacionamentos entre objetos relacionados.
|
|
Falta de uma linguagem de consulta padronizada para acesso a dados estruturados.
|
|
|
|
O serviço de consulta GraphQL preencherá essas lacunas fornecendo:
|
|
Uma interface GraphQL padrão para consultar tabelas do Cassandra.
|
|
Geração dinâmica de esquemas GraphQL a partir da configuração do TrustGraph.
|
|
Tradução eficiente de consultas GraphQL para CQL do Cassandra.
|
|
Suporte para resolução de relacionamentos por meio de resolvedores de campos.
|
|
|
|
## Design Técnico
|
|
|
|
### Arquitetura
|
|
|
|
O serviço de consulta GraphQL será implementado como um novo processador de fluxo do TrustGraph, seguindo padrões estabelecidos:
|
|
|
|
**Localização do Módulo**: `trustgraph-flow/trustgraph/query/objects/cassandra/`
|
|
|
|
**Componentes Principais**:
|
|
|
|
<<<<<<< HEAD
|
|
1. **Processador do Serviço de Consulta GraphQL**
|
|
Estende a classe base FlowProcessor.
|
|
Implementa um padrão de solicitação/resposta semelhante aos serviços de consulta existentes.
|
|
=======
|
|
1. **Processador de Serviço de Consulta GraphQL**
|
|
Estende a classe base FlowProcessor.
|
|
Implementa um padrão de solicitação/resposta semelhante a outros serviços de consulta existentes.
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|
Monitora a configuração para atualizações de esquema.
|
|
Mantém o esquema GraphQL sincronizado com a configuração.
|
|
|
|
2. **Gerador de Esquema Dinâmico**
|
|
Converte definições de RowSchema do TrustGraph em tipos GraphQL.
|
|
<<<<<<< HEAD
|
|
Cria tipos de objetos GraphQL com definições de campo adequadas.
|
|
=======
|
|
Cria tipos de objetos GraphQL com definições de campo apropriadas.
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|
Gera o tipo de consulta raiz com resolvedores baseados em coleções.
|
|
Atualiza o esquema GraphQL quando a configuração é alterada.
|
|
|
|
3. **Executor de Consulta**
|
|
Analisa consultas GraphQL recebidas usando a biblioteca Strawberry.
|
|
Valida as consultas em relação ao esquema atual.
|
|
Executa as consultas e retorna respostas estruturadas.
|
|
Lida com erros de forma elegante com mensagens de erro detalhadas.
|
|
|
|
4. **Tradutor de Consulta do Cassandra**
|
|
Converte seleções GraphQL em consultas CQL.
|
|
Otimiza as consultas com base nos índices e chaves de partição disponíveis.
|
|
Lida com filtragem, paginação e classificação.
|
|
Gerencia o pool de conexões e o ciclo de vida da sessão.
|
|
|
|
5. **Resolvedor de Relacionamentos**
|
|
Implementa resolvedores de campos para relacionamentos entre objetos.
|
|
Realiza carregamento em lote eficiente para evitar consultas N+1.
|
|
Armazena em cache os relacionamentos resolvidos dentro do contexto da solicitação.
|
|
Suporta a travessia de relacionamentos tanto para frente quanto para trás.
|
|
|
|
### Monitoramento do Esquema de Configuração
|
|
|
|
O serviço registrará um manipulador de configuração para receber atualizações de esquema:
|
|
|
|
```python
|
|
self.register_config_handler(self.on_schema_config)
|
|
```
|
|
|
|
Quando os esquemas mudam:
|
|
1. Analisar as novas definições de esquema a partir da configuração
|
|
2. Regenerar os tipos e resolvedores GraphQL
|
|
3. Atualizar o esquema executável
|
|
4. Limpar quaisquer caches dependentes do esquema
|
|
|
|
### Geração de Esquema GraphQL
|
|
|
|
Para cada RowSchema na configuração, gerar:
|
|
|
|
1. **Tipo de Objeto GraphQL**:
|
|
Mapear tipos de campo (string → String, integer → Int, float → Float, boolean → Boolean)
|
|
Marcar campos obrigatórios como não nulos no GraphQL
|
|
Adicionar descrições de campo do esquema
|
|
|
|
2. **Campos de Consulta Raiz**:
|
|
Consulta de coleção (por exemplo, `customers`, `transactions`)
|
|
Argumentos de filtragem com base em campos indexados
|
|
Suporte de paginação (limite, deslocamento)
|
|
Opções de ordenação para campos classificáveis
|
|
|
|
3. **Campos de Relacionamento**:
|
|
Identificar relacionamentos de chave estrangeira do esquema
|
|
Criar resolvedores de campo para objetos relacionados
|
|
Suportar relacionamentos de objeto único e de lista
|
|
|
|
### Fluxo de Execução da Consulta
|
|
|
|
1. **Recepção da Requisição**:
|
|
Receber ObjectsQueryRequest do Pulsar
|
|
Extrair a string de consulta GraphQL e as variáveis
|
|
Identificar o contexto de usuário e coleção
|
|
|
|
2. **Validação da Consulta**:
|
|
Analisar a consulta GraphQL usando Strawberry
|
|
Validar em relação ao esquema atual
|
|
Verificar as seleções de campo e os tipos de argumento
|
|
|
|
3. **Geração de CQL**:
|
|
Analisar as seleções GraphQL
|
|
Construir a consulta CQL com as cláusulas WHERE apropriadas
|
|
Incluir a coleção na chave de partição
|
|
Aplicar filtros com base nos argumentos GraphQL
|
|
|
|
4. **Execução da Consulta**:
|
|
Executar a consulta CQL contra o Cassandra
|
|
Mapear os resultados para a estrutura de resposta GraphQL
|
|
Resolver quaisquer campos de relacionamento
|
|
Formatar a resposta de acordo com a especificação GraphQL
|
|
|
|
5. **Entrega da Resposta**:
|
|
Criar uma ObjectsQueryResponse com os resultados
|
|
Incluir quaisquer erros de execução
|
|
Enviar a resposta via Pulsar com o ID de correlação
|
|
|
|
### Modelos de Dados
|
|
|
|
<<<<<<< HEAD
|
|
> **Nota**: Um esquema StructuredQueryRequest/Response existente existe em `trustgraph-base/trustgraph/schema/services/structured_query.py`. No entanto, ele carece de campos críticos (usuário, coleção) e usa tipos subótimos. Os esquemas abaixo representam a evolução recomendada, que deve substituir os esquemas existentes ou ser criada como novos tipos ObjectsQueryRequest/Response.
|
|
=======
|
|
> **Observação**: Um esquema StructuredQueryRequest/Response existente existe em `trustgraph-base/trustgraph/schema/services/structured_query.py`. No entanto, ele carece de campos críticos (usuário, coleção) e usa tipos subótimos. Os esquemas abaixo representam a evolução recomendada, que deve substituir os esquemas existentes ou ser criada como novos tipos ObjectsQueryRequest/Response.
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|
|
|
#### Esquema de Requisição (ObjectsQueryRequest)
|
|
|
|
```python
|
|
from pulsar.schema import Record, String, Map, Array
|
|
|
|
class ObjectsQueryRequest(Record):
|
|
user = String() # Cassandra keyspace (follows pattern from TriplesQueryRequest)
|
|
collection = String() # Data collection identifier (required for partition key)
|
|
query = String() # GraphQL query string
|
|
variables = Map(String()) # GraphQL variables (consider enhancing to support all JSON types)
|
|
operation_name = String() # Operation to execute for multi-operation documents
|
|
```
|
|
|
|
**Justificativa para as alterações em relação ao StructuredQueryRequest existente:**
|
|
Adicionados os campos `user` e `collection` para corresponder ao padrão de outros serviços de consulta.
|
|
Esses campos são essenciais para identificar o keyspace e a coleção do Cassandra.
|
|
As variáveis permanecem como Map(String()) por enquanto, mas idealmente deveriam suportar todos os tipos JSON.
|
|
|
|
#### Esquema de Resposta (ObjectsQueryResponse)
|
|
|
|
```python
|
|
from pulsar.schema import Record, String, Array
|
|
from ..core.primitives import Error
|
|
|
|
class GraphQLError(Record):
|
|
message = String()
|
|
path = Array(String()) # Path to the field that caused the error
|
|
extensions = Map(String()) # Additional error metadata
|
|
|
|
class ObjectsQueryResponse(Record):
|
|
error = Error() # System-level error (connection, timeout, etc.)
|
|
data = String() # JSON-encoded GraphQL response data
|
|
errors = Array(GraphQLError) # GraphQL field-level errors
|
|
extensions = Map(String()) # Query metadata (execution time, etc.)
|
|
```
|
|
|
|
**Justificativa para as alterações em relação à StructuredQueryResponse existente:**
|
|
Distingue entre erros do sistema (`error`) e erros do GraphQL (`errors`)
|
|
Utiliza objetos GraphQLError estruturados em vez de um array de strings
|
|
Adiciona o campo `extensions` para conformidade com a especificação do GraphQL
|
|
Mantém os dados como uma string JSON para compatibilidade, embora os tipos nativos seriam preferíveis
|
|
|
|
### Otimização de Consultas Cassandra
|
|
|
|
O serviço otimizará as consultas do Cassandra, através de:
|
|
|
|
1. **Respeitando as Chaves de Partição:**
|
|
Inclua sempre a coleção nas consultas
|
|
Utilize as chaves primárias definidas no esquema de forma eficiente
|
|
Evite varreduras completas da tabela
|
|
|
|
2. **Aproveitando os Índices:**
|
|
Utilize índices secundários para filtragem
|
|
Combine vários filtros sempre que possível
|
|
Avise quando as consultas podem ser ineficientes
|
|
|
|
3. **Carregamento em Lote:**
|
|
Colete consultas de relacionamento
|
|
Execute em lotes para reduzir o número de viagens de ida e volta
|
|
Armazene em cache os resultados dentro do contexto da requisição
|
|
|
|
4. **Gerenciamento de Conexões:**
|
|
Mantenha sessões persistentes do Cassandra
|
|
Utilize um pool de conexões
|
|
Lide com a reconexão em caso de falhas
|
|
|
|
### Exemplos de Consultas GraphQL
|
|
|
|
#### Consulta Simples de Coleção
|
|
```graphql
|
|
{
|
|
customers(status: "active") {
|
|
customer_id
|
|
name
|
|
email
|
|
registration_date
|
|
}
|
|
}
|
|
```
|
|
|
|
#### Consulta com Relacionamentos
|
|
```graphql
|
|
{
|
|
orders(order_date_gt: "2024-01-01") {
|
|
order_id
|
|
total_amount
|
|
customer {
|
|
name
|
|
email
|
|
}
|
|
items {
|
|
product_name
|
|
quantity
|
|
price
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
#### Consulta Paginação
|
|
```graphql
|
|
{
|
|
products(limit: 20, offset: 40) {
|
|
product_id
|
|
name
|
|
price
|
|
category
|
|
}
|
|
}
|
|
```
|
|
|
|
### Dependências de Implementação
|
|
|
|
**Strawberry GraphQL**: Para definição de esquema GraphQL e execução de consultas.
|
|
**Cassandra Driver**: Para conectividade com o banco de dados (já utilizado no módulo de armazenamento).
|
|
**TrustGraph Base**: Para FlowProcessor e definições de esquema.
|
|
<<<<<<< HEAD
|
|
**Configuration System**: Para monitoramento e atualizações de esquema.
|
|
|
|
### Interface de Linha de Comando
|
|
|
|
O serviço fornecerá um comando de CLI: `kg-query-objects-graphql-cassandra`
|
|
=======
|
|
**Sistema de Configuração**: Para monitoramento e atualizações de esquema.
|
|
|
|
### Interface de Linha de Comando
|
|
|
|
O serviço fornecerá um comando de interface de linha de comando: `kg-query-objects-graphql-cassandra`
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|
|
|
Argumentos:
|
|
`--cassandra-host`: Ponto de contato do cluster Cassandra.
|
|
`--cassandra-username`: Nome de usuário de autenticação.
|
|
`--cassandra-password`: Senha de autenticação.
|
|
`--config-type`: Tipo de configuração para esquemas (padrão: "schema").
|
|
Argumentos padrão do FlowProcessor (configuração do Pulsar, etc.).
|
|
|
|
## Integração de API
|
|
|
|
### Tópicos Pulsar
|
|
|
|
**Tópico de Entrada**: `objects-graphql-query-request`
|
|
Esquema: ObjectsQueryRequest
|
|
Recebe consultas GraphQL de serviços de gateway.
|
|
|
|
**Tópico de Saída**: `objects-graphql-query-response`
|
|
Esquema: ObjectsQueryResponse
|
|
Retorna resultados de consulta e erros.
|
|
|
|
### Integração de Gateway
|
|
|
|
<<<<<<< HEAD
|
|
O gateway e o gateway reverso precisarão de endpoints para:
|
|
=======
|
|
O gateway e o reverse-gateway precisarão de endpoints para:
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|
1. Aceitar consultas GraphQL de clientes.
|
|
2. Encaminhar para o serviço de consulta via Pulsar.
|
|
3. Retornar respostas aos clientes.
|
|
4. Suportar consultas de introspecção GraphQL.
|
|
|
|
### Integração da Ferramenta de Agente
|
|
|
|
Uma nova classe de ferramenta de agente permitirá:
|
|
Geração de consultas GraphQL a partir de linguagem natural.
|
|
Execução direta de consultas GraphQL.
|
|
Interpretação e formatação de resultados.
|
|
Integração com fluxos de decisão do agente.
|
|
|
|
## Considerações de Segurança
|
|
|
|
<<<<<<< HEAD
|
|
**Limitação de Profundidade da Consulta**: Prevenir consultas profundamente aninhadas que possam causar problemas de desempenho.
|
|
**Análise de Complexidade da Consulta**: Limitar a complexidade da consulta para evitar o esgotamento de recursos.
|
|
**Permissões de Nível de Campo**: Suporte futuro para controle de acesso baseado em funções de usuário.
|
|
**Sanitização de Entrada**: Validar e sanitizar todas as entradas de consulta para prevenir ataques de injeção.
|
|
**Limitação de Taxa**: Implementar a limitação de taxa de consulta por usuário/coleção.
|
|
=======
|
|
**Limitação da Profundidade da Consulta**: Prevenir consultas profundamente aninhadas que possam causar problemas de desempenho.
|
|
**Análise de Complexidade da Consulta**: Limitar a complexidade da consulta para evitar o esgotamento de recursos.
|
|
**Permissões em Nível de Campo**: Suporte futuro para controle de acesso baseado em funções de usuário.
|
|
**Sanitização de Entrada**: Validar e sanitizar todas as entradas de consulta para prevenir ataques de injeção.
|
|
**Limitação de Taxa**: Implementar a limitação de taxa de consultas por usuário/coleção.
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|
|
|
## Considerações de Desempenho
|
|
|
|
**Planejamento de Consulta**: Analisar consultas antes da execução para otimizar a geração de CQL.
|
|
**Cache de Resultados**: Considerar o cache de dados acessados com frequência no nível do resolvedor de campo.
|
|
<<<<<<< HEAD
|
|
**Pool de Conexões**: Manter pools de conexão eficientes para o Cassandra.
|
|
**Operações em Lote**: Combinar várias consultas sempre que possível para reduzir a latência.
|
|
**Monitoramento**: Rastrear métricas de desempenho da consulta para otimização.
|
|
=======
|
|
**Pool de Conexões**: Manter pools de conexões eficientes para o Cassandra.
|
|
**Operações em Lote**: Combinar várias consultas sempre que possível para reduzir a latência.
|
|
**Monitoramento**: Acompanhar métricas de desempenho de consultas para otimização.
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|
|
|
## Estratégia de Teste
|
|
|
|
### Testes Unitários
|
|
<<<<<<< HEAD
|
|
Geração de esquema a partir de definições de RowSchema.
|
|
Análise e validação de consultas GraphQL.
|
|
Lógica de geração de consultas CQL.
|
|
Implementações de resolvedores de campo.
|
|
|
|
### Testes de Contrato
|
|
Conformidade do contrato de mensagem Pulsar.
|
|
Validade do esquema GraphQL.
|
|
Verificação do formato da resposta.
|
|
Validação da estrutura de erro.
|
|
|
|
### Testes de Integração
|
|
Execução de consulta de ponta a ponta contra uma instância de teste do Cassandra.
|
|
Tratamento de atualização de esquema.
|
|
Resolução de relacionamento.
|
|
Paginação e filtragem.
|
|
Cenários de erro.
|
|
|
|
### Testes de Desempenho
|
|
Taxa de transferência de consultas sob carga.
|
|
Tempo de resposta para várias complexidades de consulta.
|
|
Uso de memória com grandes conjuntos de resultados.
|
|
Eficiência do pool de conexões.
|
|
=======
|
|
Geração de esquema a partir de definições RowSchema
|
|
Análise e validação de consultas GraphQL
|
|
Lógica de geração de consultas CQL
|
|
Implementações de resolvedores de campos
|
|
|
|
### Testes de Contrato
|
|
Conformidade com o contrato de mensagens Pulsar
|
|
Validade do esquema GraphQL
|
|
Verificação do formato da resposta
|
|
Validação da estrutura de erros
|
|
|
|
### Testes de Integração
|
|
Execução de consulta ponta a ponta contra uma instância de teste do Cassandra
|
|
Tratamento de atualizações de esquema
|
|
Resolução de relacionamentos
|
|
Paginação e filtragem
|
|
Cenários de erro
|
|
|
|
### Testes de Desempenho
|
|
Taxa de transferência de consultas sob carga
|
|
Tempo de resposta para diferentes complexidades de consulta
|
|
Uso de memória com grandes conjuntos de resultados
|
|
Eficiência do pool de conexões
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|
|
|
## Plano de Migração
|
|
|
|
Não é necessária migração, pois esta é uma nova funcionalidade. O serviço irá:
|
|
<<<<<<< HEAD
|
|
1. Ler esquemas existentes da configuração.
|
|
2. Conectar-se às tabelas Cassandra existentes criadas pelo módulo de armazenamento.
|
|
3. Começar a aceitar consultas imediatamente após a implantação.
|
|
=======
|
|
1. Ler esquemas existentes da configuração
|
|
2. Conectar-se às tabelas Cassandra existentes criadas pelo módulo de armazenamento
|
|
3. Começar a aceitar consultas imediatamente após a implantação
|
|
|
|
## Cronograma
|
|
|
|
Semana 1-2: Implementação do serviço principal e geração de esquema
|
|
Semana 3: Execução de consultas e tradução CQL
|
|
Semana 4: Resolução de relacionamentos e otimização
|
|
Semana 5: Testes e ajuste de desempenho
|
|
Semana 6: Integração com o gateway e documentação
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|
|
|
## Perguntas Abertas
|
|
|
|
1. **Evolução do Esquema**: Como o serviço deve lidar com consultas durante as transições de esquema?
|
|
<<<<<<< HEAD
|
|
Opção: Enfileirar consultas durante as atualizações de esquema.
|
|
Opção: Suportar várias versões de esquema simultaneamente.
|
|
|
|
2. **Estratégia de Cache**: Os resultados da consulta devem ser armazenados em cache?
|
|
Considerar: Expiração baseada em tempo.
|
|
Considerar: Invalidação baseada em eventos.
|
|
|
|
3. **Suporte à Federação**: O serviço deve suportar a federação GraphQL para combinar com outras fontes de dados?
|
|
Permitiria consultas unificadas em dados estruturados e de grafo.
|
|
|
|
4. **Suporte a Assinaturas**: O serviço deve suportar assinaturas GraphQL para atualizações em tempo real?
|
|
Requereria suporte WebSocket no gateway.
|
|
|
|
5. **Escalares Personalizados**: O serviço deve suportar tipos escalares personalizados para tipos de dados específicos do domínio?
|
|
Exemplos: DateTime, UUID, campos JSON.
|
|
|
|
## Referências
|
|
|
|
Especificação de Dados Estruturados: ⟦CODE_0⟧
|
|
Documentação do Strawberry GraphQL: ⟦URL_0⟧
|
|
Especificação GraphQL: ⟦URL_0⟧
|
|
Referência CQL do Apache Cassandra: ⟦URL_0⟧
|
|
Documentação do Flow Processor TrustGraph: Documentação interna.
|
|
=======
|
|
Opção: Enfileirar consultas durante as atualizações de esquema
|
|
Opção: Suportar múltiplas versões de esquema simultaneamente
|
|
|
|
2. **Estratégia de Cache**: Os resultados das consultas devem ser armazenados em cache?
|
|
Considerar: Expiração baseada em tempo
|
|
Considerar: Invalidação baseada em eventos
|
|
|
|
3. **Suporte à Federação**: O serviço deve suportar a federação GraphQL para combinar com outras fontes de dados?
|
|
Permitiria consultas unificadas em dados estruturados e de grafo
|
|
|
|
4. **Suporte a Assinaturas**: O serviço deve suportar assinaturas GraphQL para atualizações em tempo real?
|
|
Requereria suporte WebSocket no gateway
|
|
|
|
5. **Escalares Personalizados**: O serviço deve suportar tipos escalares personalizados para tipos de dados específicos do domínio?
|
|
Exemplos: DateTime, UUID, campos JSON
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|
|
|
## Referências
|
|
|
|
Especificação Técnica de Dados Estruturados: `docs/tech-specs/structured-data.md`
|
|
<<<<<<< HEAD
|
|
Documentação do Strawberry GraphQL: https://strawberry.rocks/
|
|
=======
|
|
Documentação do GraphQL Strawberry: https://strawberry.rocks/
|
|
>>>>>>> 82edf2d (New md files from RunPod)
|
|
Especificação do GraphQL: https://spec.graphql.org/
|
|
Referência CQL do Apache Cassandra: https://cassandra.apache.org/doc/stable/cassandra/cql/
|
|
Documentação do Processador de Fluxo TrustGraph: Documentação interna
|