Comparison of SDK features

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' issue 491 status issue 651 status issue 1771 status issue 460 status issue 513 status issue 401 status issue 331 status issue 238 status
SSL/TLS support (system certificates)
SSL/TLS support (custom certificates) issue 312 status issue 270 status
Configure/enable GRPC KeepAlive (keeping the connection alive in the background) issue 439 status issue 499 status issue 313 status issue 271 status
Regular SLO testing on the latest code version issue 600 status issue 446 status issue 314 status issue 235 status issue 155 status
Issue templates on GitHub issue 452 status issue 601 status issue 394 status issue 272 status

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) issue 467 status issue 591 status issue 395 status issue 447 status issue 273 status
Background Discovery/ListEndpoints (by default, once a minute) issue 156 status
Support for multiple IP addresses in the initial Endpoint DNS record, Endpoint DNS record, some of which may not be available (DNS load balancing) issue 469 status issue 440 status issue 448 status issue 311 status issue 233 status issue 196 status
Connection pessimization on transport errors issue 201 status
Forced Discovery/ListEndpoints if more than half of the nodes are pessimized issue 449 status issue 202 status
Automatic detection of the nearest DC/availability zone by TCP pings issue 453 status issue 592 status issue 396 status issue 450 status issue 315 status issue 236 status issue 203 status
Automatic detection of the nearest DC/availability zone by Discovery/ListEndpoints response issue 1746 status issue 397 status issue 451 status issue 316 status issue 237 status issue 204 status
Uniform random selection of nodes (default) issue 205 status
Load balancing across all nodes of all DCs (default) issue 206 status
Load balancing across all nodes of a particular DC/availability zone (for example, “a”, “vla”) issue 441 status issue 452 status issue 317 status issue 238 status issue 207 status
Load balancing across all nodes of all local DCs issue 442 status issue 453 status issue 318 status issue 239 status issue 208 status
Route all requests into the initial endpoint instead of client-side load balancing (for serverless usage) issue 513 status issue 668 status issue 1796 status issue 488 status issue 528 status issue 420 status issue 345 status issue 251 status

Credentials providers

Feature C++ Python Go Java NodeJS C# Rust PHP
Anonymous (default)
Static (user - password) issue 454 status issue 319 status issue 157 status
Token: IAM, Access token
Service account (Yandex.Cloud specific) issue 240 status
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 issue 198 status
Utf8, Text
NULL, Optional, Void issue 309 status issue 199 status
Struct
List issue 310 status
Set issue 470 status issue 602 status issue 1751 status issue 443 status issue 445 status issue 328 status issue 234 status issue 197 status
Tuple issue 220 status
Variant<Struct>,Variant<Tuple> issue 329 status issue 246 status issue 159 status
Date, DateTime, Timestamp, Interval issue 160 status
TzDate, TzDateTime, TzTimestamp issue 330 status issue 247 status issue 161 status
DyNumber issue 331 status issue 248 status issue 162 status
Decimal (120 bits) issue 249 status
Json, JsonDocument, Yson issue 200 status
Wide date types (Date32, Datetime64, Timestamp64, Interval64) issue 236 status issue 649 status issue 1769 status issue 458 status issue  status issue 399 status issue 329 status issue 236 status

YDB gRPC services clients

Discovery

Feature C++ Python Go Java NodeJS C# Rust PHP
ListEndpoints issue 502 status issue 662 status issue 1782 status issue 471 status issue 524 status issue 412 status issue 342 status issue 249 status
WhoAmI issue 503 status issue 663 status issue 1783 status issue 472 status issue 525 status issue 413 status issue 343 status issue 250 status

Query

Feature C++ Python Go Java NodeJS C# Rust PHP
Session pool issue 492 status issue 652 status issue 1772 status issue 461 status issue 514 status issue 402 status issue 332 status issue 239 status
Limit the number of concurrent sessions on the client issue 493 status issue 653 status issue 1773 status issue 462 status issue 515 status issue 403 status issue 333 status issue 240 status
Minimum number of sessions in the pool issue 494 status issue 654 status issue 1774 status issue 463 status issue 516 status issue 404 status issue 334 status issue 241 status
Warm up the pool to the specified number of sessions when the pool is created issue 495 status issue 655 status issue 1775 status issue 464 status issue 517 status issue 405 status issue 335 status issue 242 status
Background session attach stream used for clear pool from bad sessions issue 496 status issue 656 status issue 1776 status issue 465 status issue 518 status issue 406 status issue 336 status issue 243 status
Retryer on the session pool (a repeat object is a session) issue 497 status issue 657 status issue 1777 status issue 466 status issue 519 status issue 407 status issue 337 status issue 244 status
Retryer on the session pool (a repeat object is a transaction) issue 499 status issue 659 status issue 1779 status issue 468 status issue 521 status issue 409 status issue 339 status issue 246 status
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) issue 498 status issue 658 status issue 1778 status issue 467 status issue 520 status issue 408 status issue 338 status issue 245 status
Transactions with tables and topics issue 500 status issue 660 status issue 1780 status issue 469 status issue 522 status issue 410 status issue 340 status issue 247 status
* CreateSession issue 479 status issue 639 status issue 1760 status issue 448 status issue 502 status issue 390 status issue 320 status issue 227 status
* DeleteSession issue 480 status issue 640 status issue 1761 status issue 449 status issue 503 status issue 391 status issue 321 status issue 228 status
* AttachSession issue 481 status issue 641 status issue 1762 status issue 450 status issue 504 status issue 392 status issue 322 status issue 229 status
* CommitTransaction issue 482 status issue 642 status issue 1763 status issue 451 status issue 505 status issue 393 status issue 323 status issue 230 status
* BeginTransaction issue 483 status issue 643 status issue 1764 status issue 452 status issue 506 status issue 394 status issue 324 status issue 231 status
* RollbackTransaction issue 484 status issue 644 status issue 1765 status issue 453 status issue 507 status issue 395 status issue 325 status issue 232 status
* ExecuteQuery issue 485 status issue 645 status issue 1766 status issue 454 status issue 508 status issue 396 status issue 326 status issue 233 status
* ExecuteScript issue 486 status issue 646 status issue 1767 status issue 455 status issue 509 status issue 397 status issue 327 status issue 234 status
* FetchScriptResults issue 487 status issue 647 status issue 1768 status issue 456 status issue 510 status issue 398 status issue 328 status issue 235 status
Execute queries without explicit session creation issue 524 status issue 674 status issue 1804 status issue 502 status issue 530 status issue 448 status issue 355 status issue 252 status

Scheme

Feature C++ Python Go Java NodeJS C# Rust PHP
MakeDirectory issue 332 status issue 276 status
RemoveDirectory issue 333 status issue 277 status
ListDirectory
ModifyPermissions issue 403 status issue 334 status issue 278 status
DescribePath issue 335 status issue 279 status

Table

Feature C++ Python Go Java NodeJS C# Rust PHP
Session pool
Limit the number of concurrent sessions on the client issue 209 status
Minimum number of sessions in the pool issue 455 status issue 320 status issue 241 status issue 210 status
Warm up the pool to the specified number of sessions when the pool is created issue 454 status issue 1747 status issue 398 status issue 321 status issue 242 status issue 211 status
Background KeepAlive for idle sessions in the pool issue 593 status issue 1748 status issue 212 status
Background closing of idle sessions in the pool (redundant sessions) issue 456 status issue 322 status issue 243 status issue 213 status
Automatic dumping of a session from the pool in case of BAD_SESSION/SESSION_BUSY errors issue 214 status
Storage of sessions for possible future reuse issue 594 status issue 1749 status issue 399 status issue 457 status issue 323 status issue 244 status issue 215 status
Retryer on the session pool (a repeat object is a session) issue 216 status
Retryer on the session pool (a repeat object is a transaction within a session) issue 455 status issue 595 status issue 400 status issue 458 status issue 324 status issue 217 status
Graceful session shutdown support ("session-close" in "x-ydb-server-hints" metadata means to "forget" a session and not use it again) issue 459 status issue 325 status issue 274 status issue 218 status
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) issue 401 status issue 460 status issue 326 status issue 275 status issue 219 status
Transactions with tables and topics issue 501 status issue 661 status issue 1781 status issue 470 status issue 523 status issue 411 status issue 341 status issue 248 status
CreateSession
DeleteSession
KeepAlive issue 163 status
CreateTable issue 336 status issue 280 status
DropTable issue 337 status issue 281 status
AlterTable issue 338 status issue 282 status
CopyTable issue 462 status issue 339 status issue 283 status
CopyTables issue 404 status issue 463 status issue 340 status issue 284 status
DescribeTable issue 341 status issue 285 status
ExplainDataQuery issue 464 status issue 342 status issue 286 status
PrepareDataQuery issue 343 status issue 287 status
ExecuteDataQuery
* By default, server cache for all parameter requests (KeepInCache) issue 457 status issue 288 status
* A separate option to enable/disable server cache for a specific request issue 289 status
* Truncated result as an error (by default) issue 458 status issue 597 status issue 444 status issue 344 status issue 290 status
* Truncated result as an error (as an opt-in opt-out option) issue 459 status issue 598 status issue 445 status issue 345 status issue 291 status issue 164 status
ExecuteSchemeQuery issue 465 status
BeginTransaction issue 346 status issue 292 status
CommitTransaction issue 347 status issue 293 status
RollbackTransaction issue 348 status issue 294 status
DescribeTableOptions issue 405 status issue 466 status issue 349 status issue 295 status issue 165 status
StreamExecuteScanQuery
StreamReadTable issue 250 status
BulkUpsert issue 350 status issue 251 status

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) issue 1752 status issue 351 status issue 252 status issue 166 status
Obtaining OperationId of the operation for a long-polling status of operation execution issue 406 status issue 467 status issue 253 status issue 167 status

ScriptingYQL

Feature C++ Python Go Java NodeJS C# Rust PHP
ExecuteYql issue 603 status issue 407 status issue 468 status issue 352 status issue 296 status
ExplainYql issue 604 status issue 408 status issue 469 status issue 353 status issue 297 status
StreamExecuteYql issue 605 status issue 409 status issue 470 status issue 354 status issue 298 status issue 168 status

Coordination

Feature C++ Python Go Java NodeJS C# Rust PHP
CreateNode issue 606 status issue 410 status issue 471 status issue 355 status issue 299 status issue 169 status
AlterNode issue 607 status issue 411 status issue 472 status issue 356 status issue 300 status issue 170 status
DropNode issue 608 status issue 412 status issue 473 status issue 357 status issue 301 status issue 171 status
DescribeNode issue 609 status issue 413 status issue 474 status issue 358 status issue 302 status issue 172 status
Session (leader election, distributed lock) issue 610 status issue 1753 status issue 414 status issue 475 status issue 359 status issue 303 status issue 173 status

Topic

Feature C++ Python Go Java NodeJS C# Rust PHP
CreateTopic issue 415 status issue 476 status issue 360 status issue 254 status issue 174 status
DescribeTopic issue 416 status issue 477 status issue 361 status issue 255 status issue 175 status
AlterTopic issue 599 status issue 417 status issue 478 status issue 362 status issue 256 status issue 176 status
DropTopic issue 418 status issue 479 status issue 363 status issue 257 status issue 177 status
StreamWrite issue 419 status issue 480 status issue 364 status issue 258 status issue 178 status
StreamRead issue 420 status issue 481 status issue 365 status issue 259 status issue 179 status
CommitOffset issue 490 status issue 650 status issue 1770 status issue 459 status issue 512 status issue 400 status issue 330 status issue 237 status

Ratelimiter

Feature C++ Python Go Java NodeJS C# Rust PHP
CreateResource issue 611 status issue 421 status issue 482 status issue 366 status issue 260 status issue 221 status
AlterResource issue 612 status issue 422 status issue 483 status issue 367 status issue 261 status issue 222 status
DropResource issue 613 status issue 423 status issue 484 status issue 368 status issue 262 status issue 223 status
ListResources issue 614 status issue 424 status issue 485 status issue 369 status issue 263 status issue 224 status
DescribeResource issue 615 status issue 425 status issue 486 status issue 370 status issue 264 status issue 225 status
AcquireResource issue 616 status issue 426 status issue 487 status issue 371 status issue 265 status issue 226 status

Observability

Feature C++ Python Go Java NodeJS C# Rust PHP
SDK event logging issue 461 status issue 619 status
SDK metrics to Solomon / Monitoring issue 617 status issue 427 status issue 488 status issue 372 status issue 266 status issue 180 status
SDK metrics to Prometheus issue 460 status issue 618 status issue 428 status issue 489 status issue 373 status issue 267 status issue 181 status
SDK event tracing to OpenTelemetry issue 462 status issue 620 status issue 1754 status issue 429 status issue 490 status issue 374 status issue 268 status issue 182 status
SDK event tracing to OpenTracing issue 463 status issue 621 status issue 430 status issue 491 status issue 375 status issue 269 status issue 183 status

Examples

Feature C++ Python Go Java NodeJS C# Rust PHP
Auth with token issue 471 status issue 622 status
Auth with anonymous credentials issue 472 status issue 623 status issue 304 status
Auth with environ issue 473 status issue 624 status issue 376 status issue 305 status
Auth with metadata service issue 474 status issue 625 status issue 306 status
Auth with service account keyfile credentials issue 475 status issue 626 status issue 377 status issue 307 status
Auth with static credentials (username + password) issue 476 status issue 627 status issue 184 status
Basic (series) issue 628 status
Bulk Upsert issue 468 status issue 629 status issue 378 status issue 308 status issue 185 status
Containers (Struct, Variant, List, Tuple) issue 464 status issue 630 status issue 431 status issue 492 status issue 379 status issue 309 status issue 186 status
Pagination issue 631 status issue 493 status issue 380 status issue 310 status issue 187 status
Partition policies issue 465 status issue 632 status issue 432 status issue 494 status issue 381 status issue 311 status issue 188 status
Read table issue 477 status issue 633 status issue 433 status issue 382 status issue 312 status
Secondary index Workaround issue 634 status issue 1755 status issue 495 status issue 383 status issue 313 status issue 189 status
Secondary index builtin issue 635 status issue 1756 status issue 434 status issue 496 status issue 384 status issue 314 status issue 190 status
TTL issue 636 status issue 435 status issue 497 status issue 385 status issue 315 status issue 191 status
TTL Readtable issue 637 status issue 436 status issue 498 status issue 386 status issue 316 status issue 192 status
URL Shortener (serverless yandex function) issue 478 status issue 638 status issue 446 status issue 387 status issue 317 status issue 193 status
Topic reader issue 1757 status issue 437 status issue 500 status issue 388 status issue 318 status issue 194 status
Topic writer issue 466 status issue 1758 status issue 438 status issue 501 status issue 389 status issue 319 status issue 195 status