Данный раздел позволяет сравнить возможности YDB SDK, которые реализованы для разных языков программирования.
Функционал
C++
Python
Go
Java
NodeJS
C#
Rust
PHP
Поддержка SSL/TLS (системные сертификаты)
Поддержка SSL/TLS (кастомные сертификаты)
Configure/enable GRPC KeepAlive (keeping the connection alive in the background)
Регулярный прогон тестов SLO на последней версии кода
Шаблоны Issue в GitHub
Клиентская балансировка
Инициализация балансировщика через Discovery/ListEndpoints
Отключение клиентской балансировки (все запросы в начальный Endpoint)
Фоновый Discovery/ListEndpoints (раз в минуту по умолчанию)
Поддержка множества IP адресов в DNS-записи начального Endpoint, часть из которых может быть недоступна (DNS балансировка)
Пессимизация соединений на транспортных ошибках
Принудительный Discovery/ListEndpoints если пессимизировано более половины нод
Автоматическое определение ближайшего ДЦ / зоны доступности по TCP-пингам
Aвтоматическое определение ближайшего ДЦ / зоны доступности по ответу Discovery/ListEndpoints
Равномерный случайный выбор нод (по умолчанию)
Балансировка среди всех нод всех ДЦ (по умолчанию)
Балансировка среди всех нод конкретного ДЦ / зоны доступности (например, “a”, “vla”)
Балансировка среди всех нод всех локального ДЦ
Credentials providers
Anonymous (по умолчанию)
Static (user - password)
Token: IAM, Access token
Service account (Yandex.Cloud specific)
Metadata (Yandex.Cloud specific)
Работа с сессиями Table-сервиса
Пул сессий
Ограничение количества одновременных сессий на клиенте
Несгораемый остаток сессий в пуле
Прогрев пула до указанного значения количества сессий при создании пула
Фоновый KeepAlive для простаивающих сессий в пуле
Фоновое закрытие простаивающих сессий в пуле (лишние сессии)
Автоматическое выбрасывание сессии из пула при получении ошибок BAD_SESSION / SESSION_BUSY
Отстойник сессий для возможного переиспользования в будущем
Ретраер на пуле сессий (объект для повторов - сессия)
Ретраер на пуле сессий (объект для повторов - транзакция на сессии)
Поддержка graceful shutdown сессий ("session-close" в metadata "x-ydb-server-hints" - означает надо "забыть" сессию и больше ее не использовать)
Поддержка серверной балансировки сессий (запрос CreateSession должен содержать в metadata-заголовке "x-ydb-client-capabilities" значение "session-balancer")
Поддержка типов данных YDB*
Int/Uint(8,16,32,64)
Int128, UInt128
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
Клиент Query-сервиса
* CreateSession
* DeleteSession
* AttachSession
* CommitTransaction
* BeginTransaction
* RollbackTransaction
* ExecuteQuery
* ExecuteScript
* FetchScriptResults
Клиент Scheme-сервиса
MakeDirectory
RemoveDirectory
ListDirectory
ModifyPermissions
DescribePath
Клиент Table-сервиса
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-сервиса
Consumed Units из метаданных ответа на grpc-запрос (чтобы пользователь мог получить это)
Получение OperationId операции для long-polling статуса выполнения операции
Клиент ScriptingYQL-сервиса
ExecuteYql
ExplainYql
StreamExecuteYql
Клиент Coordination-сервиса
CreateNode
AlterNode
DropNode
DescribeNode
Session (leader election, распределенный лок)
Клиент Topic-сервиса
CreateTopic
DescribeTopic
AlterTopic
DropTopic
StreamWrite
StreamRead
Клиент Ratelimiter-сервиса
CreateResource
AlterResource
DropResource
ListResources
DescribeResource
AcquireResource
Monitoring (отправка метрик SDK в систему мониторинга)