Сравнение возможностей SDK

Данный раздел позволяет сравнить возможности YDB SDK, которые реализованы для разных языков программирования.

Общий функционал

Функционал C++ Python Go Java NodeJS C# Rust PHP
Строка подключения вида 'grpc[s]://endpoint:port/database' + + + + + - + -
Поддержка SSL/TLS (системные сертификаты)
Поддержка SSL/TLS (кастомные сертификаты) + +
Configure/enable GRPC KeepAlive (keeping the connection alive in the background) + - - -
Регулярный прогон тестов SLO на последней версии кода + - + + -
Шаблоны Issue в GitHub - + - +

Клиентская балансировка

Feature C++ Python Go Java NodeJS C# Rust PHP
Инициализация балансировщика через Discovery/ListEndpoints
Отключение клиентской балансировки (все запросы в начальный Endpoint) + + - + +
Фоновый Discovery/ListEndpoints (раз в минуту по умолчанию) -
Поддержка множества IP адресов в DNS-записи начального Endpoint, часть из которых может быть недоступна (DNS балансировка) + - + - - -
Пессимизация соединений на транспортных ошибках -
Принудительный Discovery/ListEndpoints если пессимизировано более половины нод - -
Автоматическое определение ближайшего ДЦ / зоны доступности по TCP-пингам - + + - + + -
Aвтоматическое определение ближайшего ДЦ / зоны доступности по ответу Discovery/ListEndpoints + + - - - -
Равномерный случайный выбор нод (по умолчанию) -
Балансировка среди всех нод всех ДЦ (по умолчанию) -
Балансировка среди всех нод конкретного ДЦ / зоны доступности (например, “a”, “vla”) + - - - -
Балансировка среди всех нод всех локального ДЦ + - - - -
Все запросы отправлять через соединение к начальному endpoint вместо клиентской балансировки (для использования в serverless) + + + + + + + -

Credentials providers

Feature C++ Python Go Java NodeJS C# Rust PHP
Anonymous (по умолчанию)
Static (user - password) + + -
Token: IAM, Access token
Service account (Yandex.Cloud specific) +
Metadata (Yandex.Cloud specific)

Поддержка типов данных YDB

Feature C++ Python Go Java NodeJS C# Rust PHP
Int/Uint(8,16,32,64)
Float, Double
Bool
String, Bytes -
Utf8, Text
NULL, Optional, Void - -
Struct
List -
Set - + + - - - - -
Tuple -
Variant<Struct>,Variant<Tuple> - - -
Date, DateTime, Timestamp, Interval -
TzDate, TzDateTime, TzTimestamp - - -
DyNumber - - -
Decimal (120 bits) -
Json, JsonDocument, Yson -
Широкие типы дат (Date32, Datetime64, Timestamp64, Interval64) + + + + - + + -

Клиенты gRPC-сервисов YDB

Discovery

Feature C++ Python Go Java NodeJS C# Rust PHP
ListEndpoints + - + - + - - -
WhoAmI + - + - + - - -

Query

Feature C++ Python Go Java NodeJS C# Rust PHP
Пул сессий + + + + + + + -
Ограничение количества одновременных сессий на клиенте + + + + - + + -
Несгораемый остаток сессий в пуле + - + + - + + -
Прогрев пула до указанного значения количества сессий при создании пула - - + - - - + -
Фоновый attach-стрим используется для очистки пула от плохих сессий + + + + - + + -
Ретраер на пуле сессий (объект для повторов - сессия) + + + + - + + -
Ретраер на пуле сессий (объект для повторов - транзакция) - + + - - - + -
Поддержка серверной балансировки сессий (запрос CreateSession должен содержать в metadata-заголовке "x-ydb-client-capabilities" значение "session-balancer") + - + + - + + -
Транзакции топик-таблица + + + - + - - -
* CreateSession + + + + + + + -
* DeleteSession - + + + + + + -
* AttachSession + + + + + + + -
* CommitTransaction + + + + + + + -
* BeginTransaction + + + + + - + -
* RollbackTransaction + + + + + + + -
* ExecuteQuery + + + + + + + -
* ExecuteScript + - + + - - + -
* FetchScriptResults + - + + - - + -
Выполнение запросов без явного создания сессии + - + - + + + -

Scheme

Feature C++ Python Go Java NodeJS C# Rust PHP
MakeDirectory - +
RemoveDirectory - +
ListDirectory
ModifyPermissions - - -
DescribePath - +

Table

Feature C++ Python Go Java NodeJS C# Rust PHP
Пул сессий
Ограничение количества одновременных сессий на клиенте -
Несгораемый остаток сессий в пуле - + - -
Прогрев пула до указанного значения количества сессий при создании пула - + - - - -
Фоновый KeepAlive для простаивающих сессий в пуле + + -
Фоновое закрытие простаивающих сессий в пуле (лишние сессии) - + - -
Автоматическое выбрасывание сессии из пула при получении ошибок BAD_SESSION / SESSION_BUSY -
Ретраер на пуле сессий (объект для повторов - сессия) -
Ретраер на пуле сессий (объект для повторов - транзакция на сессии) - - - - + -
Поддержка graceful shutdown сессий ("session-close" в metadata "x-ydb-server-hints" - означает надо "забыть" сессию и больше ее не использовать) - + + -
Поддержка серверной балансировки сессий (запрос CreateSession должен содержать в metadata-заголовке "x-ydb-client-capabilities" значение "session-balancer") + - + - -
Транзакции топик-таблица + + - - + + - -
CreateSession
DeleteSession
KeepAlive -
CreateTable + -
DropTable + -
AlterTable - -
CopyTable - + +
CopyTables + - + +
DescribeTable - +
ExplainDataQuery - - -
PrepareDataQuery + -
ExecuteDataQuery
* Серверный кэш по умолчанию для всех запросов с параметрами (KeepInCache) - +
* Отдельная опция для включения/выключения серверного кэша для конкретного запроса +
* Truncated result как ошибка (по дефолту) - - - + +
* Truncated result как ошибка (как опция opt-in, opt-out) - - - - - -
ExecuteSchemeQuery -
BeginTransaction + +
CommitTransaction + +
RollbackTransaction + +
DescribeTableOptions + - - - -
StreamExecuteScanQuery
StreamReadTable -
BulkUpsert + -
Управление атрибутами таблиц + - + - - - - -

Operation

Feature C++ Python Go Java NodeJS C# Rust PHP
Consumed Units из метаданных ответа на grpc-запрос (чтобы пользователь мог получить это) + - - -
Получение OperationId операции для long-polling статуса выполнения операции + - + -

ScriptingYQL

Feature C++ Python Go Java NodeJS C# Rust PHP
ExecuteYql + - - - -
ExplainYql + - - - -
StreamExecuteYql - - - - - -

Coordination

Feature C++ Python Go Java NodeJS C# Rust PHP
CreateNode + + + - + -
AlterNode + + + - + -
DropNode + + + - + -
DescribeNode + + + - + -
Session (leader election, распределенный лок) + + + + - + -

Topic

Feature C++ Python Go Java NodeJS C# Rust PHP
CreateTopic + + + + -
DescribeTopic + + + + -
AlterTopic + + + + + -
DropTopic + + + + -
StreamWrite + + + + -
StreamRead + + - + -
CommitOffset + + + + - - - -

Ratelimiter

Feature C++ Python Go Java NodeJS C# Rust PHP
CreateResource - - - - - -
AlterResource - - - - - -
DropResource - - - - - -
ListResources - - - - - -
DescribeResource - - - - - -
AcquireResource - - + - - -

Диагностика

Feature C++ Python Go Java NodeJS C# Rust PHP
Логирование событий SDK - -
Метрики SDK в Solomon / Monitoring - - + - - -
Метрики SDK в Prometheus - - - + - - -
Трассировка событий SDK в OpenTelemetry + - + - + + - -

Примеры приложений

Feature C++ Python Go Java NodeJS C# Rust PHP
Аутентификация с помощью токена - +
Анонимная аутентификация - + -
Аутентификация с помощью переменных окружения - - - +
Аутентификация с помощью metadata-сервиса - + +
Аутентификация с помощью файла сервисного аккаунта - + + +
Аутентификация с помощью логина и пароля - + -
Basic (series) +
Bulk Upsert + + + + -
Containers (Struct, Variant, List, Tuple) + + - - + - -
Pagination + - - - -
Partition policies + - - - - - -
Read table - - - - -
Secondary index Workaround - + - - - -
Secondary index builtin - + - - - - -
TTL - - - - - -
TTL Readtable - - - - - -
URL Shortener (serverless yandex function) - - - - - -
Topic reader + + + + + -
Topic writer + + + + + + -
Следующая