|
@@ -0,0 +1,147 @@
|
|
|
+# Сравнение возможностей 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, OAuth|\+|\+|\+|\+|\+|\+|\+||
|
|
|
+|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|\+||\+||\-||\-||
|
|
|
+|CDC|\-||\+||\-||\-||
|
|
|
+|Topic writer|\-||\+||\-||\-||
|
|
|
+
|