update more languages

Signed-off-by: Alex Jenkins <kjenkins60@gatech.edu>
This commit is contained in:
Alex Jenkins 2026-04-11 01:08:44 +00:00
parent 835acaa70e
commit 16c2f12a54
249 changed files with 117186 additions and 186 deletions

View file

@ -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)