Сравнение возможностей 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, 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 бит) | + | + | + | + | + | + | - | + |
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 | - | + | - | - | - | - |