mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-07-09 05:12:12 +02:00
update more languages
Signed-off-by: Alex Jenkins <kjenkins60@gatech.edu>
This commit is contained in:
parent
835acaa70e
commit
16c2f12a54
249 changed files with 117186 additions and 186 deletions
|
|
@ -10,16 +10,28 @@
|
|||
|
||||
**Динамическая поддержка схемы**: Автоматическая адаптация к изменениям схемы в конфигурации без перезапуска сервиса.
|
||||
**Соответствие стандартам GraphQL**: Предоставление стандартного интерфейса GraphQL, совместимого с существующими инструментами и клиентами GraphQL.
|
||||
<<<<<<< HEAD
|
||||
**Эффективные запросы к Cassandra**: Преобразование запросов GraphQL в эффективные запросы CQL к Cassandra, учитывающие первичные ключи и индексы.
|
||||
**Разрешение отношений**: Поддержка решателей полей GraphQL для отношений между различными типами объектов.
|
||||
**Типобезопасность**: Обеспечение типобезопасного выполнения запросов и генерации ответов на основе определений схемы.
|
||||
**Масштабируемая производительность**: Эффективная обработка одновременных запросов с использованием правильного пула соединений и оптимизации запросов.
|
||||
**Интеграция запросов/ответов**: Поддержка существующей архитектуры TrustGraph, основанной на шаблоне запросов/ответов с использованием Pulsar.
|
||||
=======
|
||||
**Эффективные запросы к Cassandra**: Преобразование запросов GraphQL в эффективные запросы CQL для Cassandra, учитывающие первичные ключи и индексы.
|
||||
**Разрешение отношений**: Поддержка решателей полей GraphQL для отношений между различными типами объектов.
|
||||
**Типобезопасность**: Обеспечение типобезопасного выполнения запросов и генерации ответов на основе определений схемы.
|
||||
**Масштабируемая производительность**: Эффективная обработка одновременных запросов с использованием правильного пула соединений и оптимизации запросов.
|
||||
**Интеграция запросов/ответов**: Поддержка существующего шаблона запросов/ответов TrustGraph, основанного на Pulsar.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
**Обработка ошибок**: Предоставление подробной отчетности об ошибках для несоответствий схемы, ошибок запросов и проблем проверки данных.
|
||||
|
||||
## Предыстория
|
||||
|
||||
<<<<<<< HEAD
|
||||
Реализация хранения структурированных данных (trustgraph-flow/trustgraph/storage/objects/cassandra/) записывает объекты в таблицы Cassandra на основе определений схемы, хранящихся в системе конфигурации TrustGraph. Эти таблицы используют структуру составного первичного ключа с коллекциями и первичными ключами, определенными схемой, что обеспечивает эффективные запросы внутри коллекций.
|
||||
=======
|
||||
Реализация хранения структурированных данных (trustgraph-flow/trustgraph/storage/objects/cassandra/) записывает объекты в таблицы Cassandra на основе определений схемы, хранящихся в системе конфигурации TrustGraph. Эти таблицы используют структуру составного первичного ключа с коллекциями и первичными ключами, определенными схемой, что обеспечивает эффективные запросы в пределах коллекций.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
Текущие ограничения, которые эта спецификация решает:
|
||||
Отсутствие интерфейса запросов для структурированных данных, хранящихся в Cassandra.
|
||||
|
|
@ -39,7 +51,11 @@
|
|||
|
||||
Сервис запросов GraphQL будет реализован как новый обработчик потоков TrustGraph, следуя установленным шаблонам:
|
||||
|
||||
<<<<<<< HEAD
|
||||
**Местоположение модуля**: `trustgraph-flow/trustgraph/query/objects/cassandra/`
|
||||
=======
|
||||
**Расположение модуля**: `trustgraph-flow/trustgraph/query/objects/cassandra/`
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
**Основные компоненты**:
|
||||
|
||||
|
|
@ -50,6 +66,7 @@
|
|||
Поддерживает синхронизацию схемы GraphQL с конфигурацией.
|
||||
|
||||
2. **Генератор динамической схемы**
|
||||
<<<<<<< HEAD
|
||||
Преобразует определения RowSchema TrustGraph в типы GraphQL.
|
||||
Создает типы объектов GraphQL с соответствующими определениями полей.
|
||||
Генерирует корневой тип запроса с решателями на основе коллекций.
|
||||
|
|
@ -57,6 +74,15 @@
|
|||
|
||||
3. **Исполнитель запросов**
|
||||
Анализирует входящие запросы GraphQL с использованием библиотеки Strawberry.
|
||||
=======
|
||||
Преобразует определения схемы TrustGraph в типы GraphQL.
|
||||
Создает типы объектов GraphQL с правильными определениями полей.
|
||||
Генерирует корневой тип Query с решателями на основе коллекций.
|
||||
Обновляет схему GraphQL при изменении конфигурации.
|
||||
|
||||
3. **Исполнитель запросов**
|
||||
Разбирает входящие запросы GraphQL с использованием библиотеки Strawberry.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
Проверяет запросы на соответствие текущей схеме.
|
||||
Выполняет запросы и возвращает структурированные ответы.
|
||||
Обрабатывает ошибки с подробными сообщениями об ошибках.
|
||||
|
|
@ -121,7 +147,11 @@ self.register_config_handler(self.on_schema_config)
|
|||
|
||||
3. **Генерация CQL**:
|
||||
Анализ выбранных элементов GraphQL
|
||||
<<<<<<< HEAD
|
||||
Создание запроса CQL с правильными предложениями WHERE
|
||||
=======
|
||||
Построение запроса CQL с правильными предложениями WHERE
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
Включение коллекции в ключ партиции
|
||||
Применение фильтров на основе аргументов GraphQL
|
||||
|
||||
|
|
@ -251,7 +281,11 @@ class ObjectsQueryResponse(Record):
|
|||
}
|
||||
```
|
||||
|
||||
<<<<<<< HEAD
|
||||
### Зависимости реализации
|
||||
=======
|
||||
### Реализация и зависимости
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
**Strawberry GraphQL**: Для определения схемы GraphQL и выполнения запросов.
|
||||
**Cassandra Driver**: Для подключения к базе данных (уже используется в модуле хранения).
|
||||
|
|
@ -263,24 +297,37 @@ class ObjectsQueryResponse(Record):
|
|||
Сервис предоставит команду интерфейса командной строки: `kg-query-objects-graphql-cassandra`
|
||||
|
||||
Аргументы:
|
||||
<<<<<<< HEAD
|
||||
`--cassandra-host`: Точка контакта кластера Cassandra.
|
||||
=======
|
||||
`--cassandra-host`: Контактная точка кластера Cassandra.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
`--cassandra-username`: Имя пользователя для аутентификации.
|
||||
`--cassandra-password`: Пароль для аутентификации.
|
||||
`--config-type`: Тип конфигурации для схем (по умолчанию: "schema").
|
||||
Стандартные аргументы FlowProcessor (конфигурация Pulsar и т.д.).
|
||||
|
||||
<<<<<<< HEAD
|
||||
## Интеграция API
|
||||
=======
|
||||
## Интеграция с API
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
### Темы Pulsar
|
||||
|
||||
**Входная тема**: `objects-graphql-query-request`
|
||||
Схема: ObjectsQueryRequest
|
||||
<<<<<<< HEAD
|
||||
Получает GraphQL-запросы от шлюзовых сервисов.
|
||||
=======
|
||||
Получает запросы GraphQL от шлюзовых сервисов.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
**Выходная тема**: `objects-graphql-query-response`
|
||||
Схема: ObjectsQueryResponse
|
||||
Возвращает результаты запросов и ошибки.
|
||||
|
||||
<<<<<<< HEAD
|
||||
### Интеграция с шлюзом
|
||||
|
||||
Шлюз и обратный шлюз потребуют конечных точек для:
|
||||
|
|
@ -288,10 +335,20 @@ class ObjectsQueryResponse(Record):
|
|||
2. Передачи запросов сервису запросов через Pulsar.
|
||||
3. Возврата ответов клиентам.
|
||||
4. Поддержки GraphQL-запросов на интроспекцию.
|
||||
=======
|
||||
### Интеграция со шлюзом
|
||||
|
||||
Шлюз и обратный шлюз потребуют конечных точек для:
|
||||
1. Приема запросов GraphQL от клиентов.
|
||||
2. Передачи запросов сервису запросов через Pulsar.
|
||||
3. Возврата ответов клиентам.
|
||||
4. Поддержки запросов introspection GraphQL.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
### Интеграция с инструментом агента
|
||||
|
||||
Новый класс инструмента агента позволит:
|
||||
<<<<<<< HEAD
|
||||
Генерировать GraphQL-запросы из естественного языка.
|
||||
Выполнять GraphQL-запросы напрямую.
|
||||
Интерпретировать и форматировать результаты.
|
||||
|
|
@ -308,6 +365,24 @@ class ObjectsQueryResponse(Record):
|
|||
## Вопросы производительности
|
||||
|
||||
**Планирование запросов**: Анализирует запросы перед выполнением для оптимизации генерации CQL.
|
||||
=======
|
||||
Преобразование естественного языка в запросы GraphQL.
|
||||
Непосредственное выполнение запросов GraphQL.
|
||||
Интерпретацию и форматирование результатов.
|
||||
Интеграцию с потоками принятия решений агентом.
|
||||
|
||||
## Вопросы безопасности
|
||||
|
||||
**Ограничение глубины запросов**: Предотвращение глубоко вложенных запросов, которые могут вызвать проблемы с производительностью.
|
||||
**Анализ сложности запросов**: Ограничение сложности запросов для предотвращения исчерпания ресурсов.
|
||||
**Разрешения на уровне полей**: Будущая поддержка контроля доступа на уровне полей на основе ролей пользователей.
|
||||
**Санитарная обработка входных данных**: Проверка и санитарная обработка всех входных данных запросов для предотвращения атак внедрения.
|
||||
**Ограничение скорости**: Реализация ограничения скорости запросов на пользователя/коллекцию.
|
||||
|
||||
## Вопросы производительности
|
||||
|
||||
**Планирование запросов**: Анализ запросов перед выполнением для оптимизации генерации CQL.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
**Кэширование результатов**: Рассмотрите возможность кэширования часто используемых данных на уровне решателя полей.
|
||||
**Пул соединений**: Поддерживайте эффективные пулы соединений к Cassandra.
|
||||
**Пакетные операции**: Объединяйте несколько запросов, когда это возможно, для уменьшения задержки.
|
||||
|
|
@ -315,6 +390,7 @@ class ObjectsQueryResponse(Record):
|
|||
|
||||
## Стратегия тестирования
|
||||
|
||||
<<<<<<< HEAD
|
||||
### Unit Tests
|
||||
Генерация схемы на основе определений RowSchema
|
||||
Разбор и проверка запросов GraphQL
|
||||
|
|
@ -339,10 +415,37 @@ class ObjectsQueryResponse(Record):
|
|||
Время отклика для различных уровней сложности запросов
|
||||
Использование памяти при работе с большими наборами результатов
|
||||
Эффективность пула соединений
|
||||
=======
|
||||
### Юнит-тесты
|
||||
Генерация схем из определений RowSchema.
|
||||
Разбор и проверка запросов GraphQL.
|
||||
Логика генерации запросов CQL.
|
||||
Реализации решателей полей.
|
||||
|
||||
### Контрактные тесты
|
||||
Соответствие контракту сообщений Pulsar.
|
||||
Достоверность схемы GraphQL.
|
||||
Проверка формата ответа.
|
||||
Проверка структуры ошибок.
|
||||
|
||||
### Интеграционные тесты
|
||||
Комплексное выполнение запросов к тестовой инстанции Cassandra.
|
||||
Обработка обновления схем.
|
||||
Разрешение взаимосвязей.
|
||||
Пагинация и фильтрация.
|
||||
Сценарии ошибок.
|
||||
|
||||
### Тесты производительности
|
||||
Пропускная способность запросов при нагрузке.
|
||||
Время отклика для различных уровней сложности запросов.
|
||||
Использование памяти с большими наборами результатов.
|
||||
Эффективность пула соединений.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
## План миграции
|
||||
|
||||
Миграция не требуется, так как это новая функциональность. Сервис будет:
|
||||
<<<<<<< HEAD
|
||||
1. Считывать существующие схемы из конфигурации
|
||||
2. Подключаться к существующим таблицам Cassandra, созданным модулем хранения
|
||||
3. Начинать принимать запросы сразу после развертывания
|
||||
|
|
@ -373,6 +476,38 @@ class ObjectsQueryResponse(Record):
|
|||
|
||||
5. **Пользовательские скаляры**: Следует ли поддерживать пользовательские скалярные типы для специфических типов данных?
|
||||
Примеры: DateTime, UUID, JSON-поля
|
||||
=======
|
||||
1. Считывать существующие схемы из конфигурации.
|
||||
Подключаться к существующим таблицам Cassandra, созданным модулем хранения.
|
||||
3. Начинать принимать запросы сразу после развертывания.
|
||||
|
||||
## Открытые вопросы
|
||||
|
||||
**Эволюция схемы**: Как сервис должен обрабатывать запросы во время переходов схемы?
|
||||
Вариант: Помещать запросы в очередь во время обновлений схемы.
|
||||
Вариант: Поддерживать несколько версий схемы одновременно.
|
||||
|
||||
**Стратегия кэширования**: Следует ли кэшировать результаты запросов?
|
||||
Рассмотреть: Временное истечение срока действия.
|
||||
Рассмотреть: Инвалидация на основе событий.
|
||||
|
||||
**Поддержка федерации**: Должен ли сервис поддерживать федерацию GraphQL для объединения с другими источниками данных?
|
||||
Это позволит выполнять унифицированные запросы к структурированным и графовым данным.
|
||||
|
||||
**Поддержка подписок**: Должен ли сервис поддерживать подписки GraphQL для получения обновлений в режиме реального времени?
|
||||
Это потребует поддержки WebSocket в шлюзе.
|
||||
|
||||
**Пользовательские скаляры**: Должна ли поддерживаться поддержка пользовательских скалярных типов для специфических типов данных?
|
||||
Примеры: DateTime, UUID, поля JSON.
|
||||
|
||||
## Ссылки
|
||||
|
||||
Техническая спецификация структурированных данных: ⟦CODE_0⟧
|
||||
Документация Strawberry GraphQL: ⟦URL_0⟧
|
||||
Спецификация GraphQL: ⟦URL_0⟧
|
||||
Документация Cassandra Driver: ⟦URL_0⟧
|
||||
Документация Pulsar: ⟦URL_0⟧
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
## Ссылки
|
||||
|
||||
|
|
@ -380,4 +515,8 @@ class ObjectsQueryResponse(Record):
|
|||
Документация Strawberry GraphQL: https://strawberry.rocks/
|
||||
Спецификация GraphQL: https://spec.graphql.org/
|
||||
Справочник Apache Cassandra CQL: https://cassandra.apache.org/doc/stable/cassandra/cql/
|
||||
Документация TrustGraph Flow Processor: Внутренняя документация
|
||||
<<<<<<< HEAD
|
||||
Документация TrustGraph Flow Processor: Внутренняя документация
|
||||
=======
|
||||
Документация процессора потоков TrustGraph: Внутренняя документация
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue