Сравнение возможностей SDK
Данный раздел позволяет сравнить возможности YDB SDK, которые реализованы для разных языков программирования.
Feature | C++ | Python | Go | Java | NodeJS | C# | Rust | PHP |
---|---|---|---|---|---|---|---|---|
Поддержка SSL/TLS (системные сертификаты) | + | + | + | + | + | + | + | |
Поддержка SSL/TLS (кастомные сертификаты) | + | + | + | + | + | - | ||
Возможность настроить/включить GRPC KeepAlive (фоновое поддержание живости соединения) | + | + | + | ? | - | |||
Регулярный прогон тестов 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, OAuth | + | + | + | + | + | + | + | |
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 бит) | + | + | + | + | + | + | - | |
Json,JsonDocument,Yson | + | + | + | + | + | + | + | |
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 service | ||||||||
CreateNode | + | ? | + | - | - | - | ||
AlterNode | + | ? | + | - | - | - | ||
DropNode | + | ? | + | - | - | - | ||
DescribeNode | + | ? | + | - | - | - | ||
Session (leader election, распределенный лок) | + | ? | - | - | - | - | ||
Topic service | ||||||||
CreateTopic | + | + | + | - | - | - | - | |
DescribeTopic | + | + | + | - | - | - | - | |
AlterTopic | + | - | + | - | - | - | - | |
DropTopic | + | + | + | - | - | - | - | |
StreamWrite | + | + | + | - | - | - | - | |
StreamRead | + | + | + | - | - | - | - | |
Ratelimiter service | ||||||||
CreateResource | + | ? | + | - | - | - | - | |
AlterResource | + | ? | + | - | - | - | - | |
DropResource | + | ? | + | - | - | - | - | |
ListResources | + | ? | + | - | - | - | - | |
DescribeResource | + | ? | + | - | - | - | - | |
AcquireResource | + | ? | + | - | - | - | - | |
Monitoring (отправка метрик SDK в систему мониторинга) | ||||||||
Solomon / Monitoring | + | ? | + | - | - | - | - | |
Prometheus | - | ? | + | - | - | - | - | |
Логирование событий SDK | - | ? | + | + | + | + | + | |
Трассировка событий SDK | ||||||||
в OpenTelemetry | - | ? | - | - | - | - | - | |
в OpenTracing | - | ? | + | - | - | - | - | |
Examples | ||||||||
Auth | ||||||||
* token | ? | ? | + | + | + | + | ||
* anonymous | ? | ? | + | + | + | + | ||
* environ | ? | ? | + | + | + | - | ||
* metadata | ? | ? | + | + | + | + | ||
* service_account | ? | ? | + | + | + | - | ||
* static (username + password) | ? | ? | + | + | + | - | ||
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 | - | + | - | - |