Project: YDB (App Definition and Development / Database)
File: feature-parity.md

| 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

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 BADSESSION/SESSIONBUSY 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 | \+ | \+ | \+ | \+