This section allows you to compare the capabilities of the YDB SDK, which are implemented for different programming languages.
Common features
Feature
C++
Python
Go
Java
NodeJS
C#
Rust
PHP
support connection string 'grpc[s]://endpoint:port/database'
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
Feature
C++
Python
Go
Java
NodeJS
C#
Rust
PHP
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, Endpoint DNS record, some of which may not be available (DNS load balancing)
Connection 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
Route all requests into the initial endpoint instead of client-side load balancing (for serverless usage)
Credentials providers
Feature
C++
Python
Go
Java
NodeJS
C#
Rust
PHP
Anonymous (default)
Static (user - password)
Token: IAM, Access token
Service account (Yandex.Cloud specific)
Metadata (Yandex.Cloud specific)
Support for YDB data types
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
Wide date types (Date32, Datetime64, Timestamp64, Interval64)
YDB gRPC services clients
Discovery
Feature
C++
Python
Go
Java
NodeJS
C#
Rust
PHP
ListEndpoints
WhoAmI
Query
Feature
C++
Python
Go
Java
NodeJS
C#
Rust
PHP
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 session attach stream used for clear pool from bad sessions
Retryer on the session pool (a repeat object is a session)
Retryer on the session pool (a repeat object is a transaction)
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)
Transactions with tables and topics
* CreateSession
* DeleteSession
* AttachSession
* CommitTransaction
* BeginTransaction
* RollbackTransaction
* ExecuteQuery
* ExecuteScript
* FetchScriptResults
Execute queries without explicit session creation
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
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)
Transactions with tables and topics
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
Feature
C++
Python
Go
Java
NodeJS
C#
Rust
PHP
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
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, distributed lock)
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
Observability
Feature
C++
Python
Go
Java
NodeJS
C#
Rust
PHP
SDK event logging
SDK metrics to Solomon / Monitoring
SDK metrics to Prometheus
SDK event tracing to OpenTelemetry
SDK event tracing to OpenTracing
Examples
Feature
C++
Python
Go
Java
NodeJS
C#
Rust
PHP
Auth with token
Auth with anonymous credentials
Auth with environ
Auth with metadata service
Auth with service account keyfile credentials
Auth with static credentials (username + password)