diff options
author | alexandr268 <alexandr268@ydb.tech> | 2022-10-06 17:16:24 +0300 |
---|---|---|
committer | alexandr268 <alexandr268@ydb.tech> | 2022-10-06 17:16:24 +0300 |
commit | 3a5282585871fdeaaa5ce17b68da46f9f9597233 (patch) | |
tree | a9ff05524f30cce5512ba27525334ab11f4b0161 | |
parent | 822465ea046a777f769e7178d09011f4de30ed1a (diff) | |
download | ydb-3a5282585871fdeaaa5ce17b68da46f9f9597233.tar.gz |
Update Java SDK documentation
Update java auth helpers
Update links for YDB Java SDK
Update en example
Update en recipes
Update ru java example
Update ru java recipes
30 files changed, 277 insertions, 291 deletions
diff --git a/ydb/docs/en/core/reference/ydb-sdk/_includes/auth.md b/ydb/docs/en/core/reference/ydb-sdk/_includes/auth.md index b3233e76b2..1c2d0c9430 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/_includes/auth.md +++ b/ydb/docs/en/core/reference/ydb-sdk/_includes/auth.md @@ -41,11 +41,11 @@ You can click any of the methods below to go to the source code of an example in | Mode | Method | ----- | ----- - | Anonymous | [com.yandex.ydb.core.auth.NopAuthProvider.INSTANCE](https://github.com/yandex-cloud/ydb-java-sdk/tree/master/examples/auth/anonymous_credentials) | - | Access Token | [com.yandex.ydb.auth.iam.CloudAuthProvider.newAuthProvider(</br>yandex.cloud.sdk.auth.provider.IamTokenCredentialProvider</br>.builder()</br>.token(accessToken)</br>.build()</br>);](https://github.com/yandex-cloud/ydb-java-sdk/tree/master/examples/auth/access_token_credentials) | - | Metadata | [com.yandex.ydb.auth.iam.CloudAuthProvider.newAuthProvider(</br>yandex.cloud.sdk.auth.provider.ComputeEngineCredentialProvider</br>.builder()</br>.build()</br>);](https://github.com/yandex-cloud/ydb-java-sdk/tree/master/examples/auth/metadata_credentials) | - | Service Account Key | [com.yandex.ydb.auth.iam.CloudAuthProvider.newAuthProvider(</br>yandex.cloud.sdk.auth.provider.ApiKeyCredentialProvider</br>.builder()</br>.fromFile(Paths.get(saKeyFile))</br>.build()</br>);](https://github.com/yandex-cloud/ydb-java-sdk/tree/master/examples/auth/service_account_credentials) | - | Determined by environment variables | [com.yandex.ydb.auth.iam.CloudAuthHelper.getAuthProviderFromEnviron();](https://github.com/yandex-cloud/ydb-java-sdk/tree/master/examples/auth/environ/src/main/java/com/yandex/ydb/example) | + | Anonymous | [tech.ydb.core.auth.NopAuthProvider.INSTANCE](https://github.com/ydb-platform/ydb-java-examples/tree/master/auth/anonymous_credentials) | + | Access Token | [new tech.ydb.core.auth.TokenAuthProvider(accessToken);](https://github.com/ydb-platform/ydb-java-examples/tree/master/auth/access_token_credentials) | + | Metadata | [tech.ydb.auth.iam.CloudAuthHelper.getMetadataAuthProvider();](https://github.com/ydb-platform/ydb-java-examples/tree/master/auth/metadata_credentials) | + | Service Account Key | [tech.ydb.auth.iam.CloudAuthHelper.getServiceAccountFileAuthProvider(saKeyFile);](https://github.com/ydb-platform/ydb-java-examples/tree/master/auth/service_account_credentials) | + | Determined by environment variables | [tech.ydb.auth.iam.CloudAuthHelper.getAuthProviderFromEnviron();](https://github.com/ydb-platform/ydb-java-examples/tree/master/auth/environ) | - Node.js diff --git a/ydb/docs/en/core/reference/ydb-sdk/_includes/index.md b/ydb/docs/en/core/reference/ydb-sdk/_includes/index.md index 53d1dde533..d627bc7741 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/_includes/index.md +++ b/ydb/docs/en/core/reference/ydb-sdk/_includes/index.md @@ -10,7 +10,7 @@ OpenSource SDKs in the following programming languages are available to work wit {% endif %} - C# (.NET) [https://github.com/ydb-platform/ydb-dotnet-sdk](https://github.com/ydb-platform/ydb-dotnet-sdk) - Go [https://github.com/ydb-platform/ydb-go-sdk/v3](https://github.com/ydb-platform/ydb-go-sdk) (archived versions: [v1](https://github.com/yandex-cloud/ydb-go-sdk/tree/v1.5.1) and [v2](https://github.com/yandex-cloud/ydb-go-sdk/tree/v2.11.2)) -- Java [https://github.com/yandex-cloud/ydb-java-sdk](https://github.com/yandex-cloud/ydb-java-sdk) +- Java [https://github.com/ydb-platform/ydb-java-sdk](https://github.com/ydb-platform/ydb-java-sdk) - Node.js [https://github.com/ydb-platform/ydb-nodejs-sdk](https://github.com/ydb-platform/ydb-nodejs-sdk) - PHP [https://github.com/yandex-cloud/ydb-php-sdk](https://github.com/yandex-cloud/ydb-php-sdk) - Python [https://github.com/ydb-platform/ydb-python-sdk](https://github.com/ydb-platform/ydb-python-sdk) diff --git a/ydb/docs/en/core/reference/ydb-sdk/_includes/install.md b/ydb/docs/en/core/reference/ydb-sdk/_includes/install.md index 8f9a9d3000..fee42d8923 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/_includes/install.md +++ b/ydb/docs/en/core/reference/ydb-sdk/_includes/install.md @@ -28,7 +28,7 @@ The build process using the source code is described in the source code reposito - Java - Add dependencies to the Maven project as described in the ["Install the SDK"](https://github.com/yandex-cloud/ydb-java-sdk#install-the-sdk) step of the `readme.md` file in the source code repository. + Add dependencies to the Maven project as described in the ["Install the SDK"](https://github.com/ydb-platform/ydb-java-sdk#install-the-sdk) step of the `readme.md` file in the source code repository. - PHP diff --git a/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_custom.md b/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_custom.md index 73a1abe153..f97f8c87f1 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_custom.md +++ b/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_custom.md @@ -5,7 +5,7 @@ If authentication is enabled in the database, you also need to select the [authe Run the command as follows: ```bash -( cd ydb-java-sdk/examples/basic_example/target && \ +( cd ydb-java-examples/basic_example/target && \ <auth_mode_var>="<auth_mode_value>" java -jar ydb-basic-example.jar <endpoint>?database=<database>) ``` @@ -19,7 +19,8 @@ where For example: ```bash -YDB_ACCESS_TOKEN_CREDENTIALS="t1.9euelZqOnJuJlc..." java -jar examples/basic_example/target/ydb-basic-example.jar grpcs://ydb.example.com:2135?database=/somepath/somelocation +( cd ydb-java-examples/basic_example/target && \ +YDB_ACCESS_TOKEN_CREDENTIALS="t1.9euelZqOnJuJlc..." java -jar ydb-basic-example.jar grpcs://ydb.example.com:2135?database=/somepath/somelocation) ``` -{% include [../../_includes/pars_from_profile_hint.md](../../_includes/pars_from_profile_hint.md) %}
\ No newline at end of file +{% include [../../_includes/pars_from_profile_hint.md](../../_includes/pars_from_profile_hint.md) %} diff --git a/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_docker.md b/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_docker.md index 25302657a7..0d3a043773 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_docker.md +++ b/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_docker.md @@ -1,7 +1,6 @@ To connect to a locally deployed YDB database according to the [Docker](../../../../../getting_started/self_hosted/ydb_docker.md) use case, run the following command in the default configuration: ```bash -(cd ydb-java-sdk/examples/basic_example/target && \ +(cd ydb-java-examples/basic_example/target && \ YDB_ANONYMOUS_CREDENTIALS=1 java -jar ydb-basic-example.jar grpc://localhost:2136?database=/local ) ``` - diff --git a/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_options.md b/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_options.md index dbb8af9b43..2a65ab4eca 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_options.md +++ b/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_options.md @@ -9,4 +9,3 @@ {% include [run_custom.md](run_custom.md) %} {% endlist %} - diff --git a/ydb/docs/en/core/reference/ydb-sdk/example/java/index.md b/ydb/docs/en/core/reference/ydb-sdk/example/java/index.md index 922e8e2b05..61626ee6be 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/example/java/index.md +++ b/ydb/docs/en/core/reference/ydb-sdk/example/java/index.md @@ -1,6 +1,6 @@ # App in Java -This page contains a detailed description of the code of a [test app](https://github.com/yandex-cloud/ydb-java-sdk/tree/master/examples/basic_example) that is available as part of the {{ ydb-short-name }} [Java SDK](https://github.com/yandex-cloud/ydb-java-sdk). +This page contains a detailed description of the code of a [test app](https://github.com/ydb-platform/ydb-java-examples/tree/master/basic_example) that is available as part of the {{ ydb-short-name }} [Java SDK Examples](https://github.com/ydb-platform/ydb-java-examples). ## Downloading SDK Examples and running the example {#download} @@ -9,13 +9,13 @@ The following execution scenario is based on [Git](https://git-scm.com/downloads Create a working directory and use it to run from the command line the command to clone the GitHub repository: ```bash -git clone https://github.com/yandex-cloud/ydb-java-sdk +git clone https://github.com/ydb-platform/ydb-java-examples ``` Then build the SDK Examples ```bash -( cd ydb-java-sdk/examples && mvn package ) +( cd ydb-java-examples && mvn package ) ``` Next, from the same working directory, run the command to start the test app. The command will differ depending on the database to connect to. @@ -33,11 +33,10 @@ Main driver initialization parameters App code snippet for driver initialization: ```java -GrpcTransport transport = GrpcTransport.forConnectionString(connectionString) +this.transport = GrpcTransport.forConnectionString(connectionString) .withAuthProvider(CloudAuthHelper.getAuthProviderFromEnviron()) .build(); -GrpcTableRpc rpc = GrpcTableRpc.ownTransport(transport); -this.tableClient = TableClient.newClient(rpc).build(); +this.tableClient = TableClient.newClient(transport).build(); ``` We recommend that you use the `SessionRetryContext` helper class for all your operations with the YDB: it ensures proper retries in case the database becomes partially unavailable. Sample code to initialize the retry context: @@ -48,48 +47,48 @@ this.retryCtx = SessionRetryContext.create(tableClient).build(); {% include [create_table.md](../_includes/steps/02_create_table.md) %} -To create tables, use the `Session.CreateTable()` method: +To create tables, use the `Session.createTable()` method: ```java private void createTables() { TableDescription seriesTable = TableDescription.newBuilder() - .addNullableColumn("series_id", PrimitiveType.uint64()) - .addNullableColumn("title", PrimitiveType.utf8()) - .addNullableColumn("series_info", PrimitiveType.utf8()) - .addNullableColumn("release_date", PrimitiveType.date()) + .addNullableColumn("series_id", PrimitiveType.Uint64) + .addNullableColumn("title", PrimitiveType.Text) + .addNullableColumn("series_info", PrimitiveType.Text) + .addNullableColumn("release_date", PrimitiveType.Date) .setPrimaryKey("series_id") .build(); retryCtx.supplyStatus(session -> session.createTable(database + "/series", seriesTable)) - .join().expect("create table problem"); + .join().expectSuccess("Can't create table /series"); TableDescription seasonsTable = TableDescription.newBuilder() - .addNullableColumn("series_id", PrimitiveType.uint64()) - .addNullableColumn("season_id", PrimitiveType.uint64()) - .addNullableColumn("title", PrimitiveType.utf8()) - .addNullableColumn("first_aired", PrimitiveType.date()) - .addNullableColumn("last_aired", PrimitiveType.date()) + .addNullableColumn("series_id", PrimitiveType.Uint64) + .addNullableColumn("season_id", PrimitiveType.Uint64) + .addNullableColumn("title", PrimitiveType.Text) + .addNullableColumn("first_aired", PrimitiveType.Date) + .addNullableColumn("last_aired", PrimitiveType.Date) .setPrimaryKeys("series_id", "season_id") .build(); retryCtx.supplyStatus(session -> session.createTable(database + "/seasons", seasonsTable)) - .join().expect("create table problem"); + .join().expectSuccess("Can't create table /seasons"); TableDescription episodesTable = TableDescription.newBuilder() - .addNullableColumn("series_id", PrimitiveType.uint64()) - .addNullableColumn("season_id", PrimitiveType.uint64()) - .addNullableColumn("episode_id", PrimitiveType.uint64()) - .addNullableColumn("title", PrimitiveType.utf8()) - .addNullableColumn("air_date", PrimitiveType.date()) + .addNullableColumn("series_id", PrimitiveType.Uint64) + .addNullableColumn("season_id", PrimitiveType.Uint64) + .addNullableColumn("episode_id", PrimitiveType.Uint64) + .addNullableColumn("title", PrimitiveType.Text) + .addNullableColumn("air_date", PrimitiveType.Date) .setPrimaryKeys("series_id", "season_id", "episode_id") .build(); retryCtx.supplyStatus(session -> session.createTable(database + "/episodes", episodesTable)) - .join().expect("create table problem"); + .join().expectSuccess("Can't create table /episodes"); } ``` -You can use the `Session.DescribeTable()` method to view information about the table structure and make sure that it was properly created: +You can use the `Session.describeTable()` method to view information about the table structure and make sure that it was properly created: ```java private void describeTables() { @@ -98,7 +97,7 @@ private void describeTables() { Arrays.asList("series", "seasons", "episodes").forEach(tableName -> { String tablePath = database + '/' + tableName; TableDescription tableDesc = retryCtx.supplyResult(session -> session.describeTable(tablePath)) - .join().expect("describe table problem"); + .join().getValue(); List<String> primaryKeys = tableDesc.getPrimaryKeys(); logger.info(" table {}", tableName); @@ -124,7 +123,7 @@ private void upsertSimple() { // Executes data query with specified transaction control settings. retryCtx.supplyResult(session -> session.executeDataQuery(query, txControl)) - .join().expect("execute data query problem"); + .join().getValue(); } ``` @@ -146,7 +145,7 @@ private void selectSimple() { // Executes data query with specified transaction control settings. DataQueryResult result = retryCtx.supplyResult(session -> session.executeDataQuery(query, txControl)) - .join().expect("execute data query"); + .join().getValue(); logger.info("--[ SelectSimple ]--"); @@ -154,7 +153,7 @@ private void selectSimple() { while (rs.next()) { logger.info("read series with id {}, title {} and release_date {}", rs.getColumn("series_id").getUint64(), - rs.getColumn("title").getUtf8(), + rs.getColumn("title").getText(), rs.getColumn("release_date").getDate() ); } @@ -186,20 +185,20 @@ private void selectWithParams(long seriesID, long seasonID) { // Type of parameter values should be exactly the same as in DECLARE statements. Params params = Params.of( - "$seriesId", PrimitiveValue.uint64(seriesID), - "$seasonId", PrimitiveValue.uint64(seasonID) + "$seriesId", PrimitiveValue.newUint64(seriesID), + "$seasonId", PrimitiveValue.newUint64(seasonID) ); DataQueryResult result = retryCtx.supplyResult(session -> session.executeDataQuery(query, txControl, params)) - .join().expect("execute data query"); + .join().getValue(); logger.info("--[ SelectWithParams ] -- "); ResultSetReader rs = result.getResultSet(0); while (rs.next()) { logger.info("read season with title {} for series {}", - rs.getColumn("season_title").getUtf8(), - rs.getColumn("series_title").getUtf8() + rs.getColumn("season_title").getText(), + rs.getColumn("series_title").getText() ); } } @@ -220,8 +219,8 @@ private void scanQueryWithParams(long seriesID, long seasonID) { // Type of parameter values should be exactly the same as in DECLARE statements. Params params = Params.of( - "$seriesId", PrimitiveValue.uint64(seriesID), - "$seasonId", PrimitiveValue.uint64(seasonID) + "$seriesId", PrimitiveValue.newUint64(seriesID), + "$seasonId", PrimitiveValue.newUint64(seasonID) ); logger.info("--[ ExecuteScanQueryWithParams ]--"); @@ -230,13 +229,13 @@ private void scanQueryWithParams(long seriesID, long seasonID) { return session.executeScanQuery(query, params, settings, rs -> { while (rs.next()) { logger.info("read episode {} of {} for {}", - rs.getColumn("episode_title").getUtf8(), - rs.getColumn("season_title").getUtf8(), - rs.getColumn("series_title").getUtf8() + rs.getColumn("episode_title").getText(), + rs.getColumn("season_title").getText(), + rs.getColumn("series_title").getText() ); } }); - }).join().expect("scan query problem"); + }).join().expectSuccess("scan query problem"); } ``` @@ -253,7 +252,7 @@ private void multiStepTransaction(long seriesID, long seasonID) { // return success status to SessionRetryContext return CompletableFuture.completedFuture(Status.SUCCESS); - }).join().expect("multistep transaction problem"); + }).join().expectSuccess("multistep transaction problem"); } ``` @@ -272,9 +271,9 @@ The first step is to prepare and execute the first query: // after query execution. TxControl tx1 = TxControl.serializableRw().setCommitTx(false); DataQueryResult res1 = session.executeDataQuery(query1, tx1, Params.of( - "$seriesId", PrimitiveValue.uint64(seriesID), - "$seasonId", PrimitiveValue.uint64(seasonID) - )).join().expect("execute data query problem"); + "$seriesId", PrimitiveValue.newUint64(seriesID), + "$seasonId", PrimitiveValue.newUint64(seasonID) + )).join().getValue(); ``` After that, we can process the resulting data on the client side: @@ -312,16 +311,16 @@ The next step is to create the next query that uses the results of code executio // commits it at the end of second query execution. TxControl tx2 = TxControl.id(txId).setCommitTx(true); DataQueryResult res2 = session.executeDataQuery(query2, tx2, Params.of( - "$seriesId", PrimitiveValue.uint64(seriesID), - "$fromDate", PrimitiveValue.date(fromDate), - "$toDate", PrimitiveValue.date(toDate) - )).join().expect("execute data query problem"); + "$seriesId", PrimitiveValue.newUint64(seriesID), + "$fromDate", PrimitiveValue.newDate(fromDate), + "$toDate", PrimitiveValue.newDate(toDate) + )).join().getValue(); logger.info("--[ MultiStep ]--"); ResultSetReader rs = res2.getResultSet(0); while (rs.next()) { logger.info("read episode {} with air date {}", - rs.getColumn("title").getUtf8(), + rs.getColumn("title").getText(), rs.getColumn("air_date").getDate() ); } @@ -338,31 +337,31 @@ The given code snippets output the following text to the console at startup: {% include [transaction_control.md](../_includes/steps/10_transaction_control.md) %} -Code snippet for `beginTransaction()` and `transaction.Commit()` calls: +Code snippet for `beginTransaction()` and `transaction.commit()` calls: ```java private void tclTransaction() { retryCtx.supplyStatus(session -> { - Transaction transaction = session.beginTransaction(TransactionMode.SERIALIZABLE_READ_WRITE) - .join().expect("begin transaction problem"); + Transaction transaction = session.beginTransaction(Transaction.Mode.SERIALIZABLE_READ_WRITE) + .join().getValue(); String query = "DECLARE $airDate AS Date; " + "UPDATE episodes SET air_date = $airDate WHERE title = \"TBD\";"; - Params params = Params.of("$airDate", PrimitiveValue.date(Instant.now())); + Params params = Params.of("$airDate", PrimitiveValue.newDate(Instant.now())); // Execute data query. // Transaction control settings continues active transaction (tx) TxControl txControl = TxControl.id(transaction).setCommitTx(false); DataQueryResult result = session.executeDataQuery(query, txControl, params) - .join().expect("execute date query problem"); + .join().getValue(); logger.info("get transaction {}", result.getTxId()); // Commit active transaction (tx) return transaction.commit(); - }).join().expect("tcl transaction problem"); + }).join().expectSuccess("tcl transaction problem"); } ``` diff --git a/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/access_token/java.md b/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/access_token/java.md index ae48d716db..fd573eabae 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/access_token/java.md +++ b/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/access_token/java.md @@ -1,21 +1,16 @@ ```java public void work(String connectionString, String accessToken) { - AuthProvider authProvider = CloudAuthProvider.newAuthProvider( - IamTokenCredentialProvider.builder() - .token(accessToken) - .build() - ); + AuthProvider authProvider = new TokenAuthProvider(accessToken); GrpcTransport transport = GrpcTransport.forConnectionString(connectionString) .withAuthProvider(authProvider) - .build(); - - TableClient tableClient = TableClient - .newClient(GrpcTableRpc.ownTransport(transport)) - .build()); + .build()); + + TableClient tableClient = TableClient.newClient(transport).build(); doWork(tableClient); tableClient.close(); + transport.close(); } ``` diff --git a/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/anonymous/java.md b/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/anonymous/java.md index b795713ddf..001243f50b 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/anonymous/java.md +++ b/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/anonymous/java.md @@ -4,14 +4,13 @@ public void work(String connectionString) { GrpcTransport transport = GrpcTransport.forConnectionString(connectionString) .withAuthProvider(authProvider) - .build(); - - TableClient tableClient = TableClient - .newClient(GrpcTableRpc.ownTransport(transport)) - .build()); + .build()); + + TableClient tableClient = TableClient.newClient(transport).build(); doWork(tableClient); tableClient.close(); + transport.close(); } ``` diff --git a/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/env/java.md b/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/env/java.md index cfff5c1a83..75a1198028 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/env/java.md +++ b/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/env/java.md @@ -4,14 +4,13 @@ public void work(String connectionString) { GrpcTransport transport = GrpcTransport.forConnectionString(connectionString) .withAuthProvider(authProvider) - .build(); - - TableClient tableClient = TableClient - .newClient(GrpcTableRpc.ownTransport(transport)) - .build()); + .build()); + + TableClient tableClient = TableClient.newClient(transport).build(); doWork(tableClient); tableClient.close(); + transport.close(); } ``` diff --git a/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/metadata/java.md b/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/metadata/java.md index ceb04396fa..8d90b551d8 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/metadata/java.md +++ b/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/metadata/java.md @@ -1,20 +1,16 @@ ```java public void work(String connectionString) { - AuthProvider authProvider = CloudAuthProvider.newAuthProvider( - ComputeEngineCredentialProvider.builder() - .build() - ); + AuthProvider authProvider = CloudAuthHelper.getMetadataAuthProvider(); GrpcTransport transport = GrpcTransport.forConnectionString(connectionString) .withAuthProvider(authProvider) - .build(); - - TableClient tableClient = TableClient - .newClient(GrpcTableRpc.ownTransport(transport)) - .build()); + .build()); + + TableClient tableClient = TableClient.newClient(transport).build(); doWork(tableClient); tableClient.close(); + transport.close(); } ``` diff --git a/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/service_account/java.md b/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/service_account/java.md index a75034440c..8467eb5716 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/service_account/java.md +++ b/ydb/docs/en/core/reference/ydb-sdk/recipes/auth/_includes/service_account/java.md @@ -1,21 +1,16 @@ ```java -public void work(String connectionString, Path saKeyPath) { - AuthProvider authProvider = CloudAuthProvider.newAuthProvider( - ApiKeyCredentialProvider.builder() - .fromFile(saKeyPath) - .build() - ); +public void work(String connectionString, String saKeyPath) { + AuthProvider authProvider = CloudAuthHelper.getServiceAccountFileAuthProvider(saKeyPath); GrpcTransport transport = GrpcTransport.forConnectionString(connectionString) .withAuthProvider(authProvider) - .build(); - - TableClient tableClient = TableClient - .newClient(GrpcTableRpc.ownTransport(transport)) - .build()); + .build()); + + TableClient tableClient = TableClient.newClient(transport).build(); doWork(tableClient); tableClient.close(); + transport.close(); } ``` diff --git a/ydb/docs/en/core/reference/ydb-sdk/recipes/debug/_includes/logs/java.md b/ydb/docs/en/core/reference/ydb-sdk/recipes/debug/_includes/logs/java.md index 651da72cae..aa7273385c 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/recipes/debug/_includes/logs/java.md +++ b/ydb/docs/en/core/reference/ydb-sdk/recipes/debug/_includes/logs/java.md @@ -1,14 +1,14 @@ In the {{ ydb-short-name }} Java SDK, logging is done using the slf4j library. It lets you use different logging levels (`error`, `warn`, `info`, `debug`, and `trace`) for one or more loggers. The following loggers are available in the current implementation: -* The `com.yandex.ydb.core.grpc` logger provides information about the internal implementation of gRPC. +* The `tech.ydb.core.grpc` logger provides information about the internal implementation of gRPC. * At the `debug` level, all operations are logged using gRPC. This level is recommended for debugging only. * Use the `info` level by default. -* The `com.yandex.ydb.table.impl` logger at the `debug` level lets you monitor the internal state of the ydb driver, including session pool performance. +* The `tech.ydb.table.impl` logger at the `debug` level lets you monitor the internal state of the ydb driver, including session pool performance. -* The `com.yandex.ydb.table.SessionRetryContext` logger at the `debug` level provides information about the number of retries, the results of executed queries, the execution time of individual retries, and the total execution time of the entire operation. +* The `tech.ydb.table.SessionRetryContext` logger at the `debug` level provides information about the number of retries, the results of executed queries, the execution time of individual retries, and the total execution time of the entire operation. -* The `com.yandex.ydb.table.Session` logger at the `debug` level provides information about the query text, response status, and execution time for various session operations. +* The `tech.ydb.table.Session` logger at the `debug` level provides information about the query text, response status, and execution time for various session operations. Enabling and configuring Java SDK loggers depends on the `slf4j-api` implementation used. Below is an example of the `log4j2` configuration for the `log4j-slf4j-impl` library. @@ -28,16 +28,16 @@ Below is an example of the `log4j2` configuration for the `log4j-slf4j-impl` lib <Logger name="io.grpc.netty" level="warn" additivity="false"> <AppenderRef ref="Console"/> </Logger> - <Logger name="com.yandex.ydb.core.grpc" level="info" additivity="false"> + <Logger name="tech.ydb.core.grpc" level="info" additivity="false"> <AppenderRef ref="Console"/> </Logger> - <Logger name="com.yandex.ydb.table.impl" level="info" additivity="false"> + <Logger name="tech.ydb.table.impl" level="info" additivity="false"> <AppenderRef ref="Console"/> </Logger> - <Logger name="com.yandex.ydb.table.SessionRetryContext" level="debug" additivity="false"> + <Logger name="tech.ydb.table.SessionRetryContext" level="debug" additivity="false"> <AppenderRef ref="Console"/> </Logger> - <Logger name="com.yandex.ydb.table.Session" level="debug" additivity="false"> + <Logger name="tech.ydb.table.Session" level="debug" additivity="false"> <AppenderRef ref="Console"/> </Logger> diff --git a/ydb/docs/en/core/reference/ydb-sdk/recipes/retry/_includes/java.md b/ydb/docs/en/core/reference/ydb-sdk/recipes/retry/_includes/java.md index 8c852c8ee0..6c0a024fab 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/recipes/retry/_includes/java.md +++ b/ydb/docs/en/core/reference/ydb-sdk/recipes/retry/_includes/java.md @@ -19,20 +19,20 @@ When using the `SessionRetryContext` class, keep in mind that operation retries {% cut "Snippet of code using SessionRetryContext.supplyStatus:" %} ```java - private void createTable(TableClient tableClient, String database, String tableName) { - SessionRetryContext retryCtx = SessionRetryContext.create(tableClient).build(); - TableDescription pets = TableDescription.newBuilder() - .addNullableColumn("species", PrimitiveType.utf8()) - .addNullableColumn("name", PrimitiveType.utf8()) - .addNullableColumn("color", PrimitiveType.utf8()) - .addNullableColumn("price", PrimitiveType.float32()) - .setPrimaryKeys("species", "name") - .build(); - - String tablePath = database + "/" + tableName; - retryCtx.supplyStatus(session -> session.createTable(tablePath, pets)) - .join().expect("ok"); - } + private void createTable(TableClient tableClient, String database, String tableName) { + SessionRetryContext retryCtx = SessionRetryContext.create(tableClient).build(); + TableDescription pets = TableDescription.newBuilder() + .addNullableColumn("species", PrimitiveType.Text) + .addNullableColumn("name", PrimitiveType.Text) + .addNullableColumn("color", PrimitiveType.Text) + .addNullableColumn("price", PrimitiveType.Float) + .setPrimaryKeys("species", "name") + .build(); + + String tablePath = database + "/" + tableName; + retryCtx.supplyStatus(session -> session.createTable(tablePath, pets)) + .join().expectSuccess(); + } ``` {% endcut %} @@ -40,34 +40,34 @@ When using the `SessionRetryContext` class, keep in mind that operation retries {% cut "Snippet of code using SessionRetryContext.supplyResult:" %} ```java - private void selectData(TableClient tableClient, String tableName) { - SessionRetryContext retryCtx = SessionRetryContext.create(tableClient).build(); - String selectQuery - = "DECLARE $species AS Utf8;" - + "DECLARE $name AS Utf8;" - + "SELECT * FROM " + tableName + " " - + "WHERE species = $species AND name = $name;"; - - Params params = Params.of( - "$species", PrimitiveValue.utf8("cat"), - "$name", PrimitiveValue.utf8("Tom") - ); - - DataQueryResult data = retryCtx - .supplyResult(session -> session.executeDataQuery(selectQuery, TxControl.onlineRo(), params)) - .join().expect("ok"); - - ResultSetReader rsReader = data.getResultSet(0); - logger.info("Result of select query:"); - while (rsReader.next()) { - logger.info(" species: {}, name: {}, color: {}, price: {}", - rsReader.getColumn("species").getUtf8(), - rsReader.getColumn("name").getUtf8(), - rsReader.getColumn("color").getUtf8(), - rsReader.getColumn("price").getFloat32() - ); - } - } + private void selectData(TableClient tableClient, String tableName) { + SessionRetryContext retryCtx = SessionRetryContext.create(tableClient).build(); + String selectQuery + = "DECLARE $species AS Text;" + + "DECLARE $name AS Text;" + + "SELECT * FROM " + tableName + " " + + "WHERE species = $species AND name = $name;"; + + Params params = Params.of( + "$species", PrimitiveValue.newText("cat"), + "$name", PrimitiveValue.newText("Tom") + ); + + DataQueryResult data = retryCtx + .supplyResult(session -> session.executeDataQuery(selectQuery, TxControl.onlineRo(), params)) + .join().getValue(); + + ResultSetReader rsReader = data.getResultSet(0); + logger.info("Result of select query:"); + while (rsReader.next()) { + logger.info(" species: {}, name: {}, color: {}, price: {}", + rsReader.getColumn("species").getText(), + rsReader.getColumn("name").getText(), + rsReader.getColumn("color").getText(), + rsReader.getColumn("price").getFloat() + ); + } + } ``` {% endcut %} diff --git a/ydb/docs/en/core/reference/ydb-sdk/recipes/session_pool_limit/_includes/java.md b/ydb/docs/en/core/reference/ydb-sdk/recipes/session_pool_limit/_includes/java.md index 402c5e65ba..04f4bbba62 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/recipes/session_pool_limit/_includes/java.md +++ b/ydb/docs/en/core/reference/ydb-sdk/recipes/session_pool_limit/_includes/java.md @@ -1,5 +1,5 @@ ```java -this.tableClient = TableClient.newClient(rpc) +this.tableClient = TableClient.newClient(transport) // 10 - minimum number of active sessions to keep in the pool during the cleanup // 500 - maximum number of sessions in the pool .sessionPoolSize(10, 500) diff --git a/ydb/docs/ru/core/reference/ydb-sdk/_includes/auth.md b/ydb/docs/ru/core/reference/ydb-sdk/_includes/auth.md index 56e559925c..b57e607309 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/_includes/auth.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/_includes/auth.md @@ -41,11 +41,11 @@ Режим | Метод ----- | ----- - Anonymous | [com.yandex.ydb.core.auth.NopAuthProvider.INSTANCE](https://github.com/yandex-cloud/ydb-java-sdk/tree/master/examples/auth/anonymous_credentials) - Access Token | [com.yandex.ydb.auth.iam.CloudAuthProvider.newAuthProvider(</br>yandex.cloud.sdk.auth.provider.IamTokenCredentialProvider</br>.builder()</br>.token(accessToken)</br>.build()</br>);](https://github.com/yandex-cloud/ydb-java-sdk/tree/master/examples/auth/access_token_credentials) - Metadata | [com.yandex.ydb.auth.iam.CloudAuthProvider.newAuthProvider(</br>yandex.cloud.sdk.auth.provider.ComputeEngineCredentialProvider</br>.builder()</br>.build()</br>);](https://github.com/yandex-cloud/ydb-java-sdk/tree/master/examples/auth/metadata_credentials) - Service Account Key | [com.yandex.ydb.auth.iam.CloudAuthProvider.newAuthProvider(</br>yandex.cloud.sdk.auth.provider.ApiKeyCredentialProvider</br>.builder()</br>.fromFile(Paths.get(saKeyFile))</br>.build()</br>);](https://github.com/yandex-cloud/ydb-java-sdk/tree/master/examples/auth/service_account_credentials) - Определяется по переменным окружения | [com.yandex.ydb.auth.iam.CloudAuthHelper.getAuthProviderFromEnviron();](https://github.com/yandex-cloud/ydb-java-sdk/tree/master/examples/auth/environ/src/main/java/com/yandex/ydb/example) + Anonymous | [tech.ydb.core.auth.NopAuthProvider.INSTANCE](https://github.com/ydb-platform/ydb-java-examples/tree/master/auth/anonymous_credentials) | + Access Token | [new tech.ydb.core.auth.TokenAuthProvider(accessToken);](https://github.com/ydb-platform/ydb-java-examples/tree/master/auth/access_token_credentials) | + Metadata | [tech.ydb.auth.iam.CloudAuthHelper.getMetadataAuthProvider();](https://github.com/ydb-platform/ydb-java-examples/tree/master/auth/metadata_credentials) | + Service Account Key | [tech.ydb.auth.iam.CloudAuthHelper.getServiceAccountFileAuthProvider(saKeyFile);](https://github.com/ydb-platform/ydb-java-examples/tree/master/auth/service_account_credentials) | + Определяется по переменным окружения | [tech.ydb.auth.iam.CloudAuthHelper.getAuthProviderFromEnviron();](https://github.com/ydb-platform/ydb-java-examples/tree/master/auth/environ) | - Node.js diff --git a/ydb/docs/ru/core/reference/ydb-sdk/_includes/index.md b/ydb/docs/ru/core/reference/ydb-sdk/_includes/index.md index 50f9c9f526..43d2cb2588 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/_includes/index.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/_includes/index.md @@ -9,7 +9,7 @@ {% endif %} - С# (.NET) [https://github.com/ydb-platform/ydb-dotnet-sdk](https://github.com/ydb-platform/ydb-dotnet-sdk) - Go [https://github.com/ydb-platform/ydb-go-sdk/v3](https://github.com/ydb-platform/ydb-go-sdk) (архивные версии [v1](https://github.com/yandex-cloud/ydb-go-sdk/tree/v1.5.1) и [v2](https://github.com/yandex-cloud/ydb-go-sdk/tree/v2.11.2)) -- Java [https://github.com/yandex-cloud/ydb-java-sdk](https://github.com/yandex-cloud/ydb-java-sdk) +- Java [https://github.com/ydb-platform/ydb-java-sdk](https://github.com/ydb-platform/ydb-java-sdk) - Node.js [https://github.com/ydb-platform/ydb-nodejs-sdk](https://github.com/ydb-platform/ydb-nodejs-sdk) - PHP [https://github.com/yandex-cloud/ydb-php-sdk](https://github.com/yandex-cloud/ydb-php-sdk) - Python [https://github.com/ydb-platform/ydb-python-sdk](https://github.com/ydb-platform/ydb-python-sdk) diff --git a/ydb/docs/ru/core/reference/ydb-sdk/_includes/install.md b/ydb/docs/ru/core/reference/ydb-sdk/_includes/install.md index e6b946b4e9..d3654da345 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/_includes/install.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/_includes/install.md @@ -28,7 +28,7 @@ - Java - Добавьте зависимости в Maven-проект, как описано в пункте ["Install the SDK"](https://github.com/yandex-cloud/ydb-java-sdk#install-the-sdk) файла `readme.md` в репозитории исходного кода. + Добавьте зависимости в Maven-проект, как описано в пункте ["Install the SDK"](https://github.com/ydb-platform/ydb-java-sdk#install-the-sdk) файла `readme.md` в репозитории исходного кода. - PHP diff --git a/ydb/docs/ru/core/reference/ydb-sdk/example/java/_includes/run_custom.md b/ydb/docs/ru/core/reference/ydb-sdk/example/java/_includes/run_custom.md index f13482889c..a35dc303cb 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/example/java/_includes/run_custom.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/example/java/_includes/run_custom.md @@ -4,8 +4,8 @@ Выполните команду по следующему образцу: -``` bash -( cd ydb-java-sdk/examples/basic_example/target && \ +```bash +( cd ydb-java-examples/basic_example/target && \ <auth_mode_var>="<auth_mode_value>" java -jar ydb-basic-example.jar <endpoint>?database=<database>) ``` @@ -18,8 +18,9 @@ Например: -``` bash -YDB_ACCESS_TOKEN_CREDENTIALS="t1.9euelZqOnJuJlc..." java -jar examples/basic_example/target/ydb-basic-example.jar grpcs://ydb.example.com:2135?database=/somepath/somelocation +```bash +( cd ydb-java-examples/basic_example/target && \ +YDB_ACCESS_TOKEN_CREDENTIALS="t1.9euelZqOnJuJlc..." java -jar ydb-basic-example.jar grpcs://ydb.example.com:2135?database=/somepath/somelocation) ``` -{% include [../../_includes/pars_from_profile_hint.md](../../_includes/pars_from_profile_hint.md) %}
\ No newline at end of file +{% include [../../_includes/pars_from_profile_hint.md](../../_includes/pars_from_profile_hint.md) %} diff --git a/ydb/docs/ru/core/reference/ydb-sdk/example/java/_includes/run_docker.md b/ydb/docs/ru/core/reference/ydb-sdk/example/java/_includes/run_docker.md index 8143b525d8..af7bc37ab4 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/example/java/_includes/run_docker.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/example/java/_includes/run_docker.md @@ -1,6 +1,6 @@ Для соединения с развернутой локальной базой данных YDB по сценарию [Docker](../../../../../getting_started/self_hosted/ydb_docker.md) в конфигурации по умолчанию выполните следующую команду: -``` bash -(cd ydb-java-sdk/examples/basic_example/target && \ +```bash +(cd ydb-java-examples/basic_example/target && \ YDB_ANONYMOUS_CREDENTIALS=1 java -jar ydb-basic-example.jar grpc://localhost:2136?database=/local ) ``` diff --git a/ydb/docs/ru/core/reference/ydb-sdk/example/java/index.md b/ydb/docs/ru/core/reference/ydb-sdk/example/java/index.md index d30981eac6..bcfcf713ef 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/example/java/index.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/example/java/index.md @@ -1,6 +1,6 @@ # Приложение на Java -На этой странице подробно разбирается код [тестового приложения](https://github.com/yandex-cloud/ydb-java-sdk/tree/master/examples/basic_example), доступного в составе [Java SDK](https://github.com/yandex-cloud/ydb-java-sdk) {{ ydb-short-name }}. +На этой странице подробно разбирается код [тестового приложения](https://github.com/ydb-platform/ydb-java-examples/tree/master/basic_example), доступного в составе [Java SDK Examples](https://github.com/ydb-platform/ydb-java-examples) {{ ydb-short-name }}. ## Скачивание SDK Examples и запуск примера {#download} @@ -9,13 +9,13 @@ Создайте рабочую директорию и выполните в ней из командной строки команду клонирования репозитория с github.com: ``` bash -git clone https://github.com/yandex-cloud/ydb-java-sdk +git clone https://github.com/ydb-platform/ydb-java-examples ``` Далее выполните сборку SDK Examples ``` bash -( cd ydb-java-sdk/examples && mvn package ) +( cd ydb-java-examples && mvn package ) ``` Далее из этой же рабочей директории выполните команду запуска тестового приложения, которая будет отличаться в зависимости от того, к какой базе данных необходимо подключиться. @@ -33,11 +33,10 @@ git clone https://github.com/yandex-cloud/ydb-java-sdk Фрагмент кода приложения для инициализации драйвера: ```java -GrpcTransport transport = GrpcTransport.forConnectionString(connectionString) +this.transport = GrpcTransport.forConnectionString(connectionString) .withAuthProvider(CloudAuthHelper.getAuthProviderFromEnviron()) .build(); -GrpcTableRpc rpc = GrpcTableRpc.ownTransport(transport); -this.tableClient = TableClient.newClient(rpc).build(); +this.tableClient = TableClient.newClient(transport).build(); ``` Все операции с YDB рекомендуется выполнять с помощью класса-хелпера `SessionRetryContext`, который обеспечивает корректное повторное выполнение операции в случае частичной недоступности. Фрагмент кода для инициализации контекста ретраев: @@ -53,39 +52,39 @@ this.retryCtx = SessionRetryContext.create(tableClient).build(); ```java private void createTables() { TableDescription seriesTable = TableDescription.newBuilder() - .addNullableColumn("series_id", PrimitiveType.uint64()) - .addNullableColumn("title", PrimitiveType.utf8()) - .addNullableColumn("series_info", PrimitiveType.utf8()) - .addNullableColumn("release_date", PrimitiveType.date()) + .addNullableColumn("series_id", PrimitiveType.Uint64) + .addNullableColumn("title", PrimitiveType.Text) + .addNullableColumn("series_info", PrimitiveType.Text) + .addNullableColumn("release_date", PrimitiveType.Date) .setPrimaryKey("series_id") .build(); retryCtx.supplyStatus(session -> session.createTable(database + "/series", seriesTable)) - .join().expect("create table problem"); + .join().expectSuccess("Can't create table /series"); TableDescription seasonsTable = TableDescription.newBuilder() - .addNullableColumn("series_id", PrimitiveType.uint64()) - .addNullableColumn("season_id", PrimitiveType.uint64()) - .addNullableColumn("title", PrimitiveType.utf8()) - .addNullableColumn("first_aired", PrimitiveType.date()) - .addNullableColumn("last_aired", PrimitiveType.date()) + .addNullableColumn("series_id", PrimitiveType.Uint64) + .addNullableColumn("season_id", PrimitiveType.Uint64) + .addNullableColumn("title", PrimitiveType.Text) + .addNullableColumn("first_aired", PrimitiveType.Date) + .addNullableColumn("last_aired", PrimitiveType.Date) .setPrimaryKeys("series_id", "season_id") .build(); retryCtx.supplyStatus(session -> session.createTable(database + "/seasons", seasonsTable)) - .join().expect("create table problem"); + .join().expectSuccess("Can't create table /seasons"); TableDescription episodesTable = TableDescription.newBuilder() - .addNullableColumn("series_id", PrimitiveType.uint64()) - .addNullableColumn("season_id", PrimitiveType.uint64()) - .addNullableColumn("episode_id", PrimitiveType.uint64()) - .addNullableColumn("title", PrimitiveType.utf8()) - .addNullableColumn("air_date", PrimitiveType.date()) + .addNullableColumn("series_id", PrimitiveType.Uint64) + .addNullableColumn("season_id", PrimitiveType.Uint64) + .addNullableColumn("episode_id", PrimitiveType.Uint64) + .addNullableColumn("title", PrimitiveType.Text) + .addNullableColumn("air_date", PrimitiveType.Date) .setPrimaryKeys("series_id", "season_id", "episode_id") .build(); retryCtx.supplyStatus(session -> session.createTable(database + "/episodes", episodesTable)) - .join().expect("create table problem"); + .join().expectSuccess("Can't create table /episodes"); } ``` @@ -98,10 +97,10 @@ private void describeTables() { Arrays.asList("series", "seasons", "episodes").forEach(tableName -> { String tablePath = database + '/' + tableName; TableDescription tableDesc = retryCtx.supplyResult(session -> session.describeTable(tablePath)) - .join().expect("describe table problem"); + .join().getValue(); List<String> primaryKeys = tableDesc.getPrimaryKeys(); - logger.info(" table {}", tableName); + logger.info(" table {}", tableName); for (TableColumn column : tableDesc.getColumns()) { boolean isPrimary = primaryKeys.contains(column.getName()); logger.info(" {}: {} {}", column.getName(), column.getType(), isPrimary ? " (PK)" : ""); @@ -124,7 +123,7 @@ private void upsertSimple() { // Executes data query with specified transaction control settings. retryCtx.supplyResult(session -> session.executeDataQuery(query, txControl)) - .join().expect("execute data query problem"); + .join().getValue(); } ``` @@ -146,7 +145,7 @@ private void selectSimple() { // Executes data query with specified transaction control settings. DataQueryResult result = retryCtx.supplyResult(session -> session.executeDataQuery(query, txControl)) - .join().expect("execute data query"); + .join().getValue(); logger.info("--[ SelectSimple ]--"); @@ -154,7 +153,7 @@ private void selectSimple() { while (rs.next()) { logger.info("read series with id {}, title {} and release_date {}", rs.getColumn("series_id").getUint64(), - rs.getColumn("title").getUtf8(), + rs.getColumn("title").getText(), rs.getColumn("release_date").getDate() ); } @@ -186,20 +185,20 @@ private void selectWithParams(long seriesID, long seasonID) { // Type of parameter values should be exactly the same as in DECLARE statements. Params params = Params.of( - "$seriesId", PrimitiveValue.uint64(seriesID), - "$seasonId", PrimitiveValue.uint64(seasonID) + "$seriesId", PrimitiveValue.newUint64(seriesID), + "$seasonId", PrimitiveValue.newUint64(seasonID) ); DataQueryResult result = retryCtx.supplyResult(session -> session.executeDataQuery(query, txControl, params)) - .join().expect("execute data query"); + .join().getValue(); logger.info("--[ SelectWithParams ] -- "); ResultSetReader rs = result.getResultSet(0); while (rs.next()) { logger.info("read season with title {} for series {}", - rs.getColumn("season_title").getUtf8(), - rs.getColumn("series_title").getUtf8() + rs.getColumn("season_title").getText(), + rs.getColumn("series_title").getText() ); } } @@ -220,8 +219,8 @@ private void scanQueryWithParams(long seriesID, long seasonID) { // Type of parameter values should be exactly the same as in DECLARE statements. Params params = Params.of( - "$seriesId", PrimitiveValue.uint64(seriesID), - "$seasonId", PrimitiveValue.uint64(seasonID) + "$seriesId", PrimitiveValue.newUint64(seriesID), + "$seasonId", PrimitiveValue.newUint64(seasonID) ); logger.info("--[ ExecuteScanQueryWithParams ]--"); @@ -230,13 +229,13 @@ private void scanQueryWithParams(long seriesID, long seasonID) { return session.executeScanQuery(query, params, settings, rs -> { while (rs.next()) { logger.info("read episode {} of {} for {}", - rs.getColumn("episode_title").getUtf8(), - rs.getColumn("season_title").getUtf8(), - rs.getColumn("series_title").getUtf8() + rs.getColumn("episode_title").getText(), + rs.getColumn("season_title").getText(), + rs.getColumn("series_title").getText() ); } }); - }).join().expect("scan query problem"); + }).join().expectSuccess("scan query problem"); } ``` @@ -253,7 +252,7 @@ private void multiStepTransaction(long seriesID, long seasonID) { // return success status to SessionRetryContext return CompletableFuture.completedFuture(Status.SUCCESS); - }).join().expect("multistep transaction problem"); + }).join().expectSuccess("multistep transaction problem"); } ``` @@ -272,9 +271,9 @@ private void multiStepTransaction(long seriesID, long seasonID) { // after query execution. TxControl tx1 = TxControl.serializableRw().setCommitTx(false); DataQueryResult res1 = session.executeDataQuery(query1, tx1, Params.of( - "$seriesId", PrimitiveValue.uint64(seriesID), - "$seasonId", PrimitiveValue.uint64(seasonID) - )).join().expect("execute data query problem"); + "$seriesId", PrimitiveValue.newUint64(seriesID), + "$seasonId", PrimitiveValue.newUint64(seasonID) + )).join().getValue(); ``` Затем мы можем выполнить некоторую клиентскую обработку полученных данных: @@ -312,16 +311,16 @@ private void multiStepTransaction(long seriesID, long seasonID) { // commits it at the end of second query execution. TxControl tx2 = TxControl.id(txId).setCommitTx(true); DataQueryResult res2 = session.executeDataQuery(query2, tx2, Params.of( - "$seriesId", PrimitiveValue.uint64(seriesID), - "$fromDate", PrimitiveValue.date(fromDate), - "$toDate", PrimitiveValue.date(toDate) - )).join().expect("execute data query problem"); + "$seriesId", PrimitiveValue.newUint64(seriesID), + "$fromDate", PrimitiveValue.newDate(fromDate), + "$toDate", PrimitiveValue.newDate(toDate) + )).join().getValue(); logger.info("--[ MultiStep ]--"); ResultSetReader rs = res2.getResultSet(0); while (rs.next()) { logger.info("read episode {} with air date {}", - rs.getColumn("title").getUtf8(), + rs.getColumn("title").getText(), rs.getColumn("air_date").getDate() ); } @@ -338,31 +337,31 @@ private void multiStepTransaction(long seriesID, long seasonID) { {% include [transaction_control.md](../_includes/steps/10_transaction_control.md) %} -Фрагмент кода, демонстрирующий явное использование вызовов `beginTransaction()` и `transaction.Commit()`: +Фрагмент кода, демонстрирующий явное использование вызовов `beginTransaction()` и `transaction.commit()`: ```java private void tclTransaction() { retryCtx.supplyStatus(session -> { - Transaction transaction = session.beginTransaction(TransactionMode.SERIALIZABLE_READ_WRITE) - .join().expect("begin transaction problem"); + Transaction transaction = session.beginTransaction(Transaction.Mode.SERIALIZABLE_READ_WRITE) + .join().getValue(); String query = "DECLARE $airDate AS Date; " + "UPDATE episodes SET air_date = $airDate WHERE title = \"TBD\";"; - Params params = Params.of("$airDate", PrimitiveValue.date(Instant.now())); + Params params = Params.of("$airDate", PrimitiveValue.newDate(Instant.now())); // Execute data query. // Transaction control settings continues active transaction (tx) TxControl txControl = TxControl.id(transaction).setCommitTx(false); DataQueryResult result = session.executeDataQuery(query, txControl, params) - .join().expect("execute date query problem"); + .join().getValue(); logger.info("get transaction {}", result.getTxId()); // Commit active transaction (tx) return transaction.commit(); - }).join().expect("tcl transaction problem"); + }).join().expectSuccess("tcl transaction problem"); } ``` diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-access-token.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-access-token.md index 632a8d800a..aa6d506fa4 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-access-token.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-access-token.md @@ -101,23 +101,18 @@ ```java public void work(String connectionString, String accessToken) { - AuthProvider authProvider = CloudAuthProvider.newAuthProvider( - IamTokenCredentialProvider.builder() - .token(accessToken) - .build() - ); + AuthProvider authProvider = new TokenAuthProvider(accessToken); GrpcTransport transport = GrpcTransport.forConnectionString(connectionString) .withAuthProvider(authProvider) - .build(); - - TableClient tableClient = TableClient - .newClient(GrpcTableRpc.ownTransport(transport)) - .build()); + .build()); + + TableClient tableClient = TableClient.newClient(transport).build(); doWork(tableClient); tableClient.close(); + transport.close(); } ``` diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-anonymous.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-anonymous.md index f9521e5fed..df8b4a9d67 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-anonymous.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-anonymous.md @@ -78,15 +78,14 @@ GrpcTransport transport = GrpcTransport.forConnectionString(connectionString) .withAuthProvider(authProvider) - .build(); - - TableClient tableClient = TableClient - .newClient(GrpcTableRpc.ownTransport(transport)) - .build()); + .build()); + + TableClient tableClient = TableClient.newClient(transport).build(); doWork(tableClient); tableClient.close(); + transport.close(); } ``` diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-env.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-env.md index 72ebe9eb69..3694b7d2f2 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-env.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-env.md @@ -83,18 +83,17 @@ ```java public void work(String connectionString) { AuthProvider authProvider = CloudAuthHelper.getAuthProviderFromEnviron(); - + GrpcTransport transport = GrpcTransport.forConnectionString(connectionString) .withAuthProvider(authProvider) - .build(); - - TableClient tableClient = TableClient - .newClient(GrpcTableRpc.ownTransport(transport)) - .build()); + .build()); + + TableClient tableClient = TableClient.newClient(transport).build(); doWork(tableClient); tableClient.close(); + transport.close(); } ``` diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-metadata.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-metadata.md index 6f5bd33871..9c39363045 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-metadata.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-metadata.md @@ -75,22 +75,18 @@ ```java public void work(String connectionString) { - AuthProvider authProvider = CloudAuthProvider.newAuthProvider( - ComputeEngineCredentialProvider.builder() - .build() - ); + AuthProvider authProvider = CloudAuthHelper.getMetadataAuthProvider(); GrpcTransport transport = GrpcTransport.forConnectionString(connectionString) .withAuthProvider(authProvider) - .build(); - - TableClient tableClient = TableClient - .newClient(GrpcTableRpc.ownTransport(transport)) - .build()); + .build()); + + TableClient tableClient = TableClient.newClient(transport).build(); doWork(tableClient); tableClient.close(); + transport.close(); } ``` diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-service-account.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-service-account.md index 05ca46ab0a..7b00b54abf 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-service-account.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-service-account.md @@ -78,24 +78,19 @@ - Java ```java - public void work(String connectionString, Path saKeyPath) { - AuthProvider authProvider = CloudAuthProvider.newAuthProvider( - ApiKeyCredentialProvider.builder() - .fromFile(saKeyPath) - .build() - ); + public void work(String connectionString, String saKeyPath) { + AuthProvider authProvider = CloudAuthHelper.getServiceAccountFileAuthProvider(saKeyPath); GrpcTransport transport = GrpcTransport.forConnectionString(connectionString) .withAuthProvider(authProvider) - .build(); - - TableClient tableClient = TableClient - .newClient(GrpcTableRpc.ownTransport(transport)) - .build()); + .build()); + + TableClient tableClient = TableClient.newClient(transport).build(); doWork(tableClient); tableClient.close(); + transport.close(); } ``` diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-static.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-static.md index 3513cdda7d..5976bf7230 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-static.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/auth-static.md @@ -107,4 +107,24 @@ } ``` +- Java + + ```java + public void work(String connectionString, String username, String password) { + AuthProvider authProvider = new StaticCredentials(username, password); + + GrpcTransport transport = GrpcTransport.forConnectionString(connectionString) + .withAuthProvider(authProvider) + .build()); + + TableClient tableClient = TableClient.newClient(transport).build(); + + doWork(tableClient); + + tableClient.close(); + transport.close(); + } + ``` + + {% endlist %} diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/debug-logs.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/debug-logs.md index 56ac7e1f33..fe0296a253 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/recipes/debug-logs.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/debug-logs.md @@ -289,15 +289,15 @@ В {{ ydb-short-name }} Java SDK для логирования используется библиотека slf4j, которая позволяет использовать различные уровни логирования (`error`, `warn`, `info`, `debug`, `trace`) для одного или нескольких логгеров. В текущей реализации доступны следующие логгеры: - * Логгер `com.yandex.ydb.core.grpc` предоставляет информацию о внутренней реализации grpc протокола + * Логгер `tech.ydb.core.grpc` предоставляет информацию о внутренней реализации grpc протокола * уровень `debug` логирует все операции по протоколу grpc, рекомедуется использовать только для отладки * уровень `info` рекомендуется использовать по умолчанию - * Логгер `com.yandex.ydb.table.impl` на уровне `debug` позволяет отслеживать внутреннее состояние драйвера ydb, в частности работу пула сессий. + * Логгер `tech.ydb.table.impl` на уровне `debug` позволяет отслеживать внутреннее состояние драйвера ydb, в частности работу пула сессий. - * Логгер `com.yandex.ydb.table.SessionRetryContext` на уровне `debug` будет информировать о количестве ретраев, результатах выполненных запросов, времени выполнения отдельных ретраев и общем времени выполнения всей операции + * Логгер `tech.ydb.table.SessionRetryContext` на уровне `debug` будет информировать о количестве ретраев, результатах выполненных запросов, времени выполнения отдельных ретраев и общем времени выполнения всей операции - * Логгер `com.yandex.ydb.table.Session` на уровне `debug` предоставляет информацию о тексте запроса, статусе ответа и времени выполнения для различных операций сессии + * Логгер `tech.ydb.table.Session` на уровне `debug` предоставляет информацию о тексте запроса, статусе ответа и времени выполнения для различных операций сессии Включение и настройка логгеров Java SDK зависит от используемой реализации `slf4j-api`. @@ -318,16 +318,16 @@ <Logger name="io.grpc.netty" level="warn" additivity="false"> <AppenderRef ref="Console"/> </Logger> - <Logger name="com.yandex.ydb.core.grpc" level="info" additivity="false"> + <Logger name="tech.ydb.core.grpc" level="info" additivity="false"> <AppenderRef ref="Console"/> </Logger> - <Logger name="com.yandex.ydb.table.impl" level="info" additivity="false"> + <Logger name="tech.ydb.table.impl" level="info" additivity="false"> <AppenderRef ref="Console"/> </Logger> - <Logger name="com.yandex.ydb.table.SessionRetryContext" level="debug" additivity="false"> + <Logger name="tech.ydb.table.SessionRetryContext" level="debug" additivity="false"> <AppenderRef ref="Console"/> </Logger> - <Logger name="com.yandex.ydb.table.Session" level="debug" additivity="false"> + <Logger name="tech.ydb.table.Session" level="debug" additivity="false"> <AppenderRef ref="Console"/> </Logger> diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/retry.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/retry.md index 2e45ac1544..574ef924a0 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/recipes/retry.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/retry.md @@ -270,16 +270,16 @@ private void createTable(TableClient tableClient, String database, String tableName) { SessionRetryContext retryCtx = SessionRetryContext.create(tableClient).build(); TableDescription pets = TableDescription.newBuilder() - .addNullableColumn("species", PrimitiveType.utf8()) - .addNullableColumn("name", PrimitiveType.utf8()) - .addNullableColumn("color", PrimitiveType.utf8()) - .addNullableColumn("price", PrimitiveType.float32()) + .addNullableColumn("species", PrimitiveType.Text) + .addNullableColumn("name", PrimitiveType.Text) + .addNullableColumn("color", PrimitiveType.Text) + .addNullableColumn("price", PrimitiveType.Float) .setPrimaryKeys("species", "name") .build(); String tablePath = database + "/" + tableName; retryCtx.supplyStatus(session -> session.createTable(tablePath, pets)) - .join().expect("ok"); + .join().expectSuccess(); } ``` @@ -291,28 +291,28 @@ private void selectData(TableClient tableClient, String tableName) { SessionRetryContext retryCtx = SessionRetryContext.create(tableClient).build(); String selectQuery - = "DECLARE $species AS Utf8;" - + "DECLARE $name AS Utf8;" + = "DECLARE $species AS Text;" + + "DECLARE $name AS Text;" + "SELECT * FROM " + tableName + " " + "WHERE species = $species AND name = $name;"; Params params = Params.of( - "$species", PrimitiveValue.utf8("cat"), - "$name", PrimitiveValue.utf8("Tom") + "$species", PrimitiveValue.newText("cat"), + "$name", PrimitiveValue.newText("Tom") ); DataQueryResult data = retryCtx .supplyResult(session -> session.executeDataQuery(selectQuery, TxControl.onlineRo(), params)) - .join().expect("ok"); + .join().getValue(); ResultSetReader rsReader = data.getResultSet(0); logger.info("Result of select query:"); while (rsReader.next()) { logger.info(" species: {}, name: {}, color: {}, price: {}", - rsReader.getColumn("species").getUtf8(), - rsReader.getColumn("name").getUtf8(), - rsReader.getColumn("color").getUtf8(), - rsReader.getColumn("price").getFloat32() + rsReader.getColumn("species").getText(), + rsReader.getColumn("name").getText(), + rsReader.getColumn("color").getText(), + rsReader.getColumn("price").getFloat() ); } } diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/session-pool-limit.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/session-pool-limit.md index 755a28f010..dc716069dd 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/recipes/session-pool-limit.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/session-pool-limit.md @@ -66,7 +66,7 @@ - Java ```java - this.tableClient = TableClient.newClient(rpc) + this.tableClient = TableClient.newClient(transport) // 10 - minimum number of active sessions to keep in the pool during the cleanup // 500 - maximum number of sessions in the pool .sessionPoolSize(10, 500) |