Comparison of SDK features

Feature C++ Python Go Java NodeJS C# Rust PHP
SSL/TLS support (system certificates) + + + + + + + +
SSL/TLS support (custom certificates) + + + + + - +
Configure/enable GRPC KeepAlive (keeping the connection alive in the background) + + + ? - - +
Regular SLO testing on the latest code version + +/- + + +/- - - -
Issue templates on GitHub - ? + - + + +
Client-side balancing
Load balancer initialization through Discovery/ListEndpoints + + + + + + + +
Disable client-side load balancing (all requests to the initial Endpoint) +/- - + - - + +
Background Discovery/ListEndpoints (by default, once a minute) + + + + + + + -
Support for multiple IP addresses in the initial Endpoint DNS record, some of which may not be available (DNS load balancing) ? + + ? - ? ? ?
Node pessimization on transport errors + + + + + + +
Forced Discovery/ListEndpoints if more than half of the nodes are pessimized + + + + - + +
Automatic detection of the nearest DC/availability zone by TCP pings - - + - - - -
Automatic detection of the nearest DC/availability zone by Discovery/ListEndpoints response* + + - - - - -
Uniform random selection of nodes (default) + + + + + + +
Load balancing across all nodes of all DCs (default) + + + + + + +
Load balancing across all nodes of a particular DC/availability zone (for example, “a”, “vla”) + + + ? - - -
Load balancing across all nodes of all local DCs + + + ? - - -
Credentials providers
Anonymous (default) + + + + + + + +
Static (user - password) + + + + - - + -
Token: IAM, OAuth + + + + + + + +
Service account (Yandex.Cloud specific) + + + + + + - +
Metadata (Yandex.Cloud specific) + + + + + + + +
Working with Table service sessions
Session pool + + + + + + + +
Limit the number of concurrent sessions on the client) + + + + + + +
Minimum number of sessions in the pool + + + + - - -
Warm up the pool to the specified number of sessions when the pool is created - + - - + - -
Background KeepAlive for idle sessions in the pool + - - + + + +
Background closing of idle sessions in the pool (redundant sessions) + + + + - - -
Automatic dumping of a session from the pool in case of BAD_SESSION/SESSION_BUSY errors + + + + + + +
Storage of sessions for possible future reuse~ + - - - - - -
Retryer on the session pool (a repeat object is a session) + + + + + + +
Retryer on the session pool (a repeat object is a transaction within a session) - - + - - - +
Graceful session shutdown support ("session-close" in "x-ydb-server-hints" metadata means to "forget" a session and not use it again) + + + + - -
Support for server-side load balancing of sessions (a CreateSession request must contain the "session-balancer" value in the "x-ydb-client-capabilities" metadata header) + + + - - -
Support for YDB data types
Int/Uint(8,16,32,64) + + + + + + + +
Int128, UInt128 (not available publicly?) - - - - - - - -
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 + + + + + + + +/-
Scheme client
MakeDirectory + + + + + - +
RemoveDirectory + + + + + - +
ListDirectory + + + + + + + +
ModifyPermissions + + + - + - +
DescribePath + + + + + - +
Table service
CreateSession + + + + + + + +
DeleteSession + + + + + + + +
KeepAlive + + + + + + + -
CreateTable + + + + + - +
DropTable + + + + + - +
AlterTable + + + + + - +
CopyTable + + + + - - +
CopyTables + + + - - - +
DescribeTable + + + + + - +
ExplainDataQuery + + + + - - +
PrepareDataQuery + + + + + - +
ExecuteDataQuery + + + + + + + +
* By default, server cache for all parameter requests (KeepInCache) - + + + + + +
* A separate option to enable/disable server cache for a specific request + + + + + + +
* Truncated result as an error (by default) - - + ? + - +
* Truncated result as an error (as an opt-in, opt-out option) - - + ? + - -
ExecuteSchemeQuery + + + + - + + +
BeginTransaction + + + + + - +
CommitTransaction + + + + + - +
RollbackTransaction + + + + + - +
DescribeTableOptions + + + - - - -
StreamExecuteScanQuery + + + + + + + +
StreamReadTable + + + + + + - +
BulkUpsert + + + + + - - +
Operation
Consumed Units from metadata of a response to a grpc-request request (for the user to obtain this) + + - + + - - -
Obtaining OperationId of the operation for a long-polling status of operation execution + + + - - + - -
ScriptingYQL
ExecuteYql + ? + - - - +
ExplainYql + ? + - - - +
StreamExecuteYql + ? + - - - -
Coordination service
CreateNode + ? + - - - -
AlterNode + ? + - - - -
DropNode + ? + - - - -
DescribeNode + ? + - - - -
Session (leader election, distributed lock) + ? - - - - -
Topic service
CreateTopic + + + - - - - -
DescribeTopic + + + - - - - -
AlterTopic + - + - - - - -
DropTopic + + + - - - - -
StreamWrite + + + - - - - -
StreamRead + + + - - - - -
Ratelimiter service
CreateResource + ? + - - - -
AlterResource + ? + - - - -
DropResource + ? + - - - -
ListResources + ? + - - - -
DescribeResource + ? + - - - -
AcquireResource + ? + - - - -
Monitoring (sending SDK metrics to the monitoring system)
Solomon / Monitoring + ? + - - - - -
Prometheus - ? + - - - - -
SDK event logging - ? + + + + + +
SDK event tracing
in OpenTelemetry - ? - - - - - -
in 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 - + - - - -