{"id":13412294,"url":"https://github.com/ydb-platform/ydb-go-sdk","last_synced_at":"2026-02-25T13:13:27.842Z","repository":{"id":37701115,"uuid":"392265178","full_name":"ydb-platform/ydb-go-sdk","owner":"ydb-platform","description":"Pure Go native and database/sql driver for YDB","archived":false,"fork":false,"pushed_at":"2025-04-10T22:01:40.000Z","size":23783,"stargazers_count":151,"open_issues_count":234,"forks_count":92,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-04-11T23:15:36.048Z","etag":null,"topics":["database-sql","golang","ydb","ydb-go-sdk","ydb-platform","ydb-sdk"],"latest_commit_sha":null,"homepage":"https://ydb.tech","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ydb-platform.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-03T09:40:19.000Z","updated_at":"2025-04-11T17:47:21.000Z","dependencies_parsed_at":"2024-01-22T11:42:25.712Z","dependency_job_id":"1cbb2597-eab3-4e56-962c-efb11d98d2f7","html_url":"https://github.com/ydb-platform/ydb-go-sdk","commit_stats":null,"previous_names":[],"tags_count":598,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ydb-platform%2Fydb-go-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ydb-platform%2Fydb-go-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ydb-platform%2Fydb-go-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ydb-platform%2Fydb-go-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ydb-platform","download_url":"https://codeload.github.com/ydb-platform/ydb-go-sdk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248492884,"owners_count":21113163,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database-sql","golang","ydb","ydb-go-sdk","ydb-platform","ydb-sdk"],"created_at":"2024-07-30T20:01:23.096Z","updated_at":"2026-02-25T13:13:27.836Z","avatar_url":"https://github.com/ydb-platform.png","language":"Go","funding_links":[],"categories":["Database Drivers","Data Integration Frameworks","数据库驱动程序"],"sub_categories":["Relational Database Drivers","关系数据库驱动程序"],"readme":"# `ydb-go-sdk` - pure Go native and `database/sql` driver for [YDB](https://github.com/ydb-platform/ydb)\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/ydb-platform/ydb/blob/main/LICENSE)\n[![Release](https://img.shields.io/github/v/release/ydb-platform/ydb-go-sdk.svg?style=flat-square)](https://github.com/ydb-platform/ydb-go-sdk/releases)\n[![PkgGoDev](https://pkg.go.dev/badge/github.com/ydb-platform/ydb-go-sdk/v3)](https://pkg.go.dev/github.com/ydb-platform/ydb-go-sdk/v3)\n[![tests](https://github.com/ydb-platform/ydb-go-sdk/workflows/tests/badge.svg)](https://github.com/ydb-platform/ydb-go-sdk/actions/workflows/tests.yml)\n[![lint](https://github.com/ydb-platform/ydb-go-sdk/workflows/lint/badge.svg)](https://github.com/ydb-platform/ydb-go-sdk/actions/workflows/lint.yml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/ydb-platform/ydb-go-sdk/v3)](https://goreportcard.com/report/github.com/ydb-platform/ydb-go-sdk/v3)\n[![codecov](https://codecov.io/gh/ydb-platform/ydb-go-sdk/badge.svg?precision=2)](https://app.codecov.io/gh/ydb-platform/ydb-go-sdk)\n![Code lines](https://sloc.xyz/github/ydb-platform/ydb-go-sdk/?category=code)\n[![View examples](https://img.shields.io/badge/learn-examples-brightgreen.svg)](https://github.com/ydb-platform/ydb-go-sdk/tree/master/examples)\n[![Telegram](https://img.shields.io/badge/chat-on%20Telegram-2ba2d9.svg)](https://t.me/ydb_en)\n[![WebSite](https://img.shields.io/badge/website-ydb.tech-blue.svg)](https://ydb.tech)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/ydb-platform/ydb-go-sdk/blob/master/CONTRIBUTING.md)\n\nSupports `discovery`, `operation`, `table`, `query`, `coordination`, `ratelimiter`, `scheme`, `scripting` and `topic` clients for [YDB](https://ydb.tech).\n`YDB` is an open-source Distributed SQL Database that combines high availability and scalability with strict consistency and [ACID](https://en.wikipedia.org/wiki/ACID) transactions.\n`YDB` was created primarily for [OLTP](https://en.wikipedia.org/wiki/Online_transaction_processing) workloads and supports some [OLAP](https://en.wikipedia.org/wiki/Online_analytical_processing) scenarious.\n\n## Supported Go Versions\n\n`ydb-go-sdk` supports all Go versions supported by the official [Go Release Policy](https://go.dev/doc/devel/release#policy).\nThat is, the latest two versions of Go (or more, but with no guarantees for extra versions).\n\n\n## Versioning Policy\n\n`ydb-go-sdk` comply to guidelines from [SemVer2.0.0](https://semver.org/) with several [exceptions](VERSIONING.md).\n\n## Installation\n\n```sh\ngo get -u github.com/ydb-platform/ydb-go-sdk/v3\n```\n\n## Example Usage \u003ca name=\"example\"\u003e\u003c/a\u003e\n\n* connect to YDB\n```go\ndb, err := ydb.Open(ctx, \"grpc://localhost:2136/local\")\nif err != nil {\n    log.Fatal(err)\n}\n```\n* execute `SELECT` query with `Query` service client\n ```go\n// Do retry operation on errors with best effort\nerr := db.Query().Do( // Do retry operation on errors with best effort\n\tctx, // context manage exiting from Do\n\tfunc(ctx context.Context, s query.Session) (err error) { // retry operation\n\t\tstreamResult, err := s.Query(ctx, `SELECT 42 as id, \"myStr\" as myStr;`)\n\t\tif err != nil {\n\t\t\treturn err // for auto-retry with driver\n\t\t}\n\t\tdefer func() { _ = streamResult.Close(ctx) }() // cleanup resources\n\t\tfor rs, err := range streamResult.ResultSets(ctx) {\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tfor row, err := range rs.Rows(ctx) {\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\ttype myStruct struct {\n\t\t\t\t\tId  int32  `sql:\"id\"`\n\t\t\t\t\tStr string `sql:\"myStr\"`\n\t\t\t\t}\n\t\t\t\tvar s myStruct\n\t\t\t\tif err = row.ScanStruct(\u0026s); err != nil {\n\t\t\t\t\treturn err // generally scan error not retryable, return it for driver check error\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn nil\n\t},\n\tquery.WithIdempotent(),\n)\nif err != nil {\n    log.Fatal(err)\n}\n```\n\n* usage with `database/sql` (see additional docs in [SQL.md](SQL.md) )\n```go\nimport (\n    \"context\"\n    \"database/sql\"\n    \"log\"\n\n    _ \"github.com/ydb-platform/ydb-go-sdk/v3\"\n)\n\n...\n\ndb, err := sql.Open(\"ydb\", \"grpc://localhost:2136/local\")\nif err != nil {\n    log.Fatal(err)\n}\ndefer db.Close() // cleanup resources\nvar (\n    id    int32\n    myStr string\n)\nrow := db.QueryRowContext(context.TODO(), `SELECT 42 as id, \"my string\" as myStr`)\nif err = row.Scan(\u0026id, \u0026myStr); err != nil {\n    log.Printf(\"select failed: %v\", err)\n    return\n}\nlog.Printf(\"id = %d, myStr = \\\"%s\\\"\", id, myStr)\n```\n\n\nMore examples of usage placed in [examples](./examples) directory.\n\n## Credentials \u003ca name=\"credentials\"\u003e\u003c/a\u003e\n\nDriver implements several ways for making credentials for `YDB`:\n- `ydb.WithAnonymousCredentials()` (enabled by default unless otherwise specified)\n- `ydb.WithAccessTokenCredentials(\"token\")`\n- `ydb.WithStaticCredentials(\"user\", \"password\")`, \n- `ydb.WithOauth2TokenExchangeCredentials()` and `ydb,WithOauth2TokenExchangeCredentialsFile(configFilePath)`\n- as part of connection string, like as `grpcs://user:password@endpoint/database`\n\nAnother variants of `credentials.Credentials` object provides with external packages:\n\n| Package                                                                            | Type        | Description                                    | Link of example usage                                                                                                                                                                                                                                                                                                                                              |\n|------------------------------------------------------------------------------------|-------------|------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [ydb-go-yc](https://github.com/ydb-platform/ydb-go-yc)                             | credentials | credentials provider for Yandex.Cloud          | [yc.WithServiceAccountKeyFileCredentials](https://github.com/ydb-platform/ydb-go-yc/blob/master/internal/cmd/connect/main.go#L22) [yc.WithInternalCA](https://github.com/ydb-platform/ydb-go-yc/blob/master/internal/cmd/connect/main.go#L22) [yc.WithMetadataCredentials](https://github.com/ydb-platform/ydb-go-yc/blob/master/internal/cmd/connect/main.go#L24) |\n| [ydb-go-yc-metadata](https://github.com/ydb-platform/ydb-go-yc-metadata)           | credentials | metadata credentials provider for Yandex.Cloud | [yc.WithInternalCA](https://github.com/ydb-platform/ydb-go-yc-metadata/blob/master/options.go#L23) [yc.WithCredentials](https://github.com/ydb-platform/ydb-go-yc-metadata/blob/master/options.go#L17)                                                                                                                                                             |\n| [ydb-go-sdk-auth-environ](https://github.com/ydb-platform/ydb-go-sdk-auth-environ) | credentials | create credentials from environ                | [ydbEnviron.WithEnvironCredentials](https://github.com/ydb-platform/ydb-go-sdk-auth-environ/blob/master/env.go#L11)                                                                                                                                                                                                                                                |\n\n## Ecosystem of debug tools over `ydb-go-sdk` \u003ca name=\"debug\"\u003e\u003c/a\u003e\n\nPackage `ydb-go-sdk` provide debugging over trace events in package `trace`.\nNext packages provide debug tooling:\n\n| Package                                                                          | Type    | Description                                                                                                               | Link of example usage                                                                                                          |\n|----------------------------------------------------------------------------------|---------|---------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|\n| [ydb-go-sdk-zap](https://github.com/ydb-platform/ydb-go-sdk-zap)                 | logging | logging ydb-go-sdk events with `zap` package                                                                                | [ydbZap.WithTraces](https://github.com/ydb-platform/ydb-go-sdk-zap/blob/master/internal/cmd/bench/main.go#L64)                 |\n| [ydb-go-sdk-zerolog](https://github.com/ydb-platform/ydb-go-sdk-zerolog)             | logging | logging ydb-go-sdk events with `zerolog` package                                                                            | [ydbZerolog.WithTraces](https://github.com/ydb-platform/ydb-go-sdk-zerolog/blob/master/internal/cmd/bench/main.go#L47)         |\n| [ydb-go-sdk-logrus](https://github.com/ydb-platform/ydb-go-sdk-logrus)             | logging | logging ydb-go-sdk events with `logrus` package                                                                            | [ydbLogrus.WithTraces](https://github.com/ydb-platform/ydb-go-sdk-logrus/blob/master/internal/cmd/bench/main.go#L48)         |\n| [ydb-go-sdk-prometheus](https://github.com/ydb-platform/ydb-go-sdk-prometheus)   | metrics | prometheus wrapper over [ydb-go-sdk/v3/metrics](https://github.com/ydb-platform/ydb-go-sdk/tree/master/metrics)            | [ydbPrometheus.WithTraces](https://github.com/ydb-platform/ydb-go-sdk-prometheus/blob/master/internal/cmd/bench/native/main.go#L66)   |\n| [ydb-go-sdk-opentracing](https://github.com/ydb-platform/ydb-go-sdk-opentracing) | tracing | OpenTracing plugin for trace internal ydb-go-sdk calls                                                                    | [ydbOpentracing.WithTraces](https://github.com/ydb-platform/ydb-go-sdk-opentracing/blob/master/internal/cmd/native/main.go#L70) |\n| [ydb-go-sdk-otel](https://github.com/ydb-platform/ydb-go-sdk-otel) | tracing | OpenTelemetry plugin for trace internal ydb-go-sdk calls                                                                    | [ydbOtel.WithTraces](https://github.com/ydb-platform/ydb-go-sdk-otel/blob/master/internal/cmd/native/query/main.go#L89) |\n\n## Environment variables \u003ca name=\"environ\"\u003e\u003c/a\u003e\n\n`ydb-go-sdk` supports next environment variables  which redefines default behavior of driver\n\n| Name                             | Type      | Default | Description                                                                                                              |\n|----------------------------------|-----------|---------|--------------------------------------------------------------------------------------------------------------------------|\n| `YDB_SSL_ROOT_CERTIFICATES_FILE` | `string`  |         | path to certificates file                                                                                                |\n| `YDB_LOG_SEVERITY_LEVEL`         | `string`  | `quiet` | severity logging level of internal driver logger. Supported: `trace`, `debug`, `info`, `warn`, `error`, `fatal`, `quiet` |\n| `YDB_LOG_DETAILS`                | `string`  | `.*`    | regexp for lookup internal logger logs                                                                                   |\n| `GRPC_GO_LOG_VERBOSITY_LEVEL`    | `integer` |         | set to `99` to see grpc logs                                                                                             |\n| `GRPC_GO_LOG_SEVERITY_LEVEL`     | `string`  |         | set to `info` to see grpc logs                                                                                           |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fydb-platform%2Fydb-go-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fydb-platform%2Fydb-go-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fydb-platform%2Fydb-go-sdk/lists"}