summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralexandr268 <[email protected]>2022-04-07 05:22:48 +0300
committeralexandr268 <[email protected]>2022-04-07 05:22:48 +0300
commit65c3e8ef8c1de877793355ddd13ea30d262709c8 (patch)
tree89ea7d7a63eb45ac3d40a1d293d4448e89addcc7
parenta0d108a45fef3c13bb6794ec9087fb9b4436f103 (diff)
Rename simple_project to basic_example KIKIMR-14232
Remove obsolete file Update documentation links Update simple_example pom.xml Move simple_project to basic_example ref:8810a2fec5e16abed1a7f571f44fa9e2b515a954
-rw-r--r--ydb/docs/ru/core/reference/ydb-sdk/example/_includes/example-java.md434
-rw-r--r--ydb/docs/ru/core/reference/ydb-sdk/example/java/_includes/run_custom.md4
-rw-r--r--ydb/docs/ru/core/reference/ydb-sdk/example/java/_includes/run_docker.md2
-rw-r--r--ydb/docs/ru/core/reference/ydb-sdk/example/java/index.md2
4 files changed, 4 insertions, 438 deletions
diff --git a/ydb/docs/ru/core/reference/ydb-sdk/example/_includes/example-java.md b/ydb/docs/ru/core/reference/ydb-sdk/example/_includes/example-java.md
deleted file mode 100644
index 2b5a510eb52..00000000000
--- a/ydb/docs/ru/core/reference/ydb-sdk/example/_includes/example-java.md
+++ /dev/null
@@ -1,434 +0,0 @@
-# Приложение на Java
-
-На этой странице подробно разбирается код [тестового приложения](https://github.com/yandex-cloud/ydb-java-sdk/tree/master/examples/maven_project), доступного в составе [Java SDK](https://github.com/yandex-cloud/ydb-java-sdk) {{ ydb-short-name }}.
-
-{% include [init.md](steps/01_init.md) %}
-
-Фрагмент кода приложения для инициализации драйвера:
-
-```java
- RpcTransport transport = GrpcTransport.forEndpoint(args.endpoint, args.database)
- .withAuthProvider(new TokenAuthProvider(ydbToken))
- .build();
-
- try (TableService tableService = TableServiceBuilder.ownTransport(transport).build()) {
- String path = args.path == null ? args.database : args.path;
- try (App example = appFactory.newApp(tableService, path)) {
- example.run();
- } catch (Throwable t) {
- t.printStackTrace();
- System.exit(1);
- }
- } catch (Throwable t) {
- t.printStackTrace();
- System.exit(1);
- }
-```
-
-Фрагмент кода приложения для создания сессии:
-
-```java
- tableClient = tableService.newTableClient();
- session = tableClient.createSession()
- .join()
- .expect("cannot create session");
-```
-
-{% include [create_table.md](steps/02_create_table.md) %}
-
-Для создания таблиц используется метод `Session.createTable()`:
-
-```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.uint64())
- .setPrimaryKey("series_id")
- .build();
-
- execute(session -> session.createTable(database + "/series", seriesTable).join());
-
- TableDescription seasonsTable = TableDescription.newBuilder()
- .addNullableColumn("series_id", PrimitiveType.uint64())
- .addNullableColumn("season_id", PrimitiveType.uint64())
- .addNullableColumn("title", PrimitiveType.utf8())
- .addNullableColumn("first_aired", PrimitiveType.uint64())
- .addNullableColumn("last_aired", PrimitiveType.uint64())
- .setPrimaryKeys("series_id", "season_id")
- .build();
-
- execute(session -> session.createTable(database + "/seasons", seasonsTable).join());
-
- 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.uint64())
- .setPrimaryKeys("series_id", "season_id", "episode_id")
- .build();
-
- execute(session -> session.createTable(database + "/episodes", episodesTable).join());
-}
-```
-
-С помощью метода `Session.describeTable()` можно вывести информацию о структуре таблицы и убедиться, что она успешно создалась:
-
-```java
-private void describeTables() {
- System.out.println("\n--[ DescribeTables ]--");
-
- for (String tableName : new String[]{ "series", "seasons", "episodes" }) {
- String tablePath = database + '/' + tableName;
- TableDescription tableDesc = executeWithResult(session -> session.describeTable(tablePath).join());
-
- System.out.println(tablePath + ':');
- List<String> primaryKeys = tableDesc.getPrimaryKeys();
- for (TableColumn column : tableDesc.getColumns()) {
- boolean isPrimary = primaryKeys.contains(column.getName());
- System.out.println(" " + column.getName() + ": " + column.getType() + (isPrimary ? " (PK)" : ""));
- }
- System.out.println();
- }
-}
-```
-{% include [steps/03_write_queries.md](steps/03_write_queries.md) %}
-
-Фрагмент кода, демонстрирующий выполнение запроса на запись/изменение данных:
-
-```java
-private void upsertSimple() {
- String query = String.format(
- "PRAGMA TablePathPrefix(\"%s\");\n" +
- "\n" +
- "UPSERT INTO episodes (series_id, season_id, episode_id, title) VALUES\n" +
- "(2, 6, 1, \"TBD\");",
- database);
-
- TxControl txControl = TxControl.serializableRw().setCommitTx(true);
-
- execute(session -> session.executeDataQuery(query, txControl)
- .join()
- .toStatus());
-}
-```
-
-{% include [pragmatablepathprefix.md](auxilary/pragmatablepathprefix.md) %}
-
-{% include [steps/04_query_processing.md](steps/04_query_processing.md) %}
-
-Для выполнения YQL-запросов используется метод `Session.executeDataQuery()`.
-SDK позволяет в явном виде контролировать выполнение транзакций и настраивать необходимый режим выполнения транзакций с помощью класса `TxControl`.
-
-В фрагменте кода, приведенного ниже, транзакция выполняется с помощью метода `session.executeDataQuery()`. Устанавливается режим выполнения транзакции `TxControl txControl = TxControl.serializableRw().setCommitTx(true);` и флаг автоматического завершения транзакции `setCommitTx(true)`. Тело запроса описано с помощью синтаксиса YQL и как параметр передается методу `executeDataQuery`.
-
-```java
-private void selectSimple() {
- String query = String.format(
- "PRAGMA TablePathPrefix(\"%s\");\n" +
- "$format = DateTime::Format(\"%%Y-%%m-%%d\");\n" +
- "\n" +
- "SELECT\n" +
- " series_id,\n" +
- " title,\n" +
- " $format(DateTime::FromSeconds(CAST(DateTime::ToSeconds(DateTime::IntervalFromDays(CAST(release_date AS Int16))) AS Uint32))) AS release_date\n" +
- "FROM series\n" +
- "WHERE series_id = 1;",
- database);
-
- TxControl txControl = TxControl.serializableRw().setCommitTx(true);
-
- DataQueryResult result = executeWithResult(session -> session.executeDataQuery(query, txControl).join());
-
- System.out.println("\n--[ SelectSimple ]--");
- new TablePrinter(result.getResultSet(0)).print();
-}
-```
-
-В результате исполнения запроса формируется объект класса `DataQueryResult`, который может содержать несколько выборок, получаемых методом `getResultSet( <index> )`. Так как запрос содержал только одну команду `SELECT`, то результат содержит только одну выборку под индексом `0`.
-
-Для его вывода с форматированием псевдографикой применяется вспомогательный класс `TablePrinter`. Приведенный фрагмент кода при запуске выводит на консоль текст:
-
-```bash
---[ SelectSimple ]--
-+-----------+------------------+--------------------+
-| series_id | title | release_date |
-+-----------+------------------+--------------------+
-| Some[1] | Some["IT Crowd"] | Some["2006-02-03"] |
-+-----------+------------------+--------------------+
-```
-
-
-
-{% include [param_queries.md](steps/06_param_queries.md) %}
-
-Фрагмент кода, приведенный ниже, демонстрирует использование параметризованных запросов и класс `Params` для формирования параметров и передачи их методу `executeDataQuery`.
-
-```java
-private void preparedSelect(long seriesId, long seasonId, long episodeId) {
- final String queryId = "PreparedSelectTransaction";
-
- DataQuery query = preparedQueries.get(queryId);
- if (query == null) {
- String queryText = String.format(
- "PRAGMA TablePathPrefix(\"%s\");\n" +
- "\n" +
- "DECLARE $seriesId AS Uint64;\n" +
- "DECLARE $seasonId AS Uint64;\n" +
- "DECLARE $episodeId AS Uint64;\n" +
- "\n" +
- "SELECT *\n" +
- "FROM episodes\n" +
- "WHERE series_id = $seriesId AND season_id = $seasonId AND episode_id = $episodeId;",
- database);
-
- query = executeWithResult(session -> session.prepareDataQuery(queryText).join());
- System.out.println("Finished preparing query: " + queryId);
-
- preparedQueries.put(queryId, query);
- }
-
- Params params = query.newParams()
- .put("$seriesId", uint64(seriesId))
- .put("$seasonId", uint64(seasonId))
- .put("$episodeId", uint64(episodeId));
-
- TxControl txControl = TxControl.serializableRw().setCommitTx(true);
- DataQueryResult result = query.execute(txControl, params)
- .join()
- .expect("prepared query failed");
-
- System.out.println("\n--[ PreparedSelect ]--");
- new TablePrinter(result.getResultSet(0)).print();
-}
-```
-
-{% include [param_prep_queries.md](steps/07_param_prep_queries.md) %}
-
-```java
- /**
- * Shows usage of prepared queries.
- */
- private void preparedSelect(long seriesId, long seasonId, long episodeId) {
- final String queryId = "PreparedSelectTransaction";
-
- // Once prepared, query data is stored in the session and identified by QueryId.
- // We keep a track of prepared queries available in current session to reuse them in
- // consecutive calls.
-
- PreparedQuery query = preparedQueries.get(queryId);
- if (query == null) {
- String queryText = String.format(
- "PRAGMA TablePathPrefix(\"%s\");\n" +
- "\n" +
- "DECLARE $seriesId AS Uint64;\n" +
- "DECLARE $seasonId AS Uint64;\n" +
- "DECLARE $episodeId AS Uint64;\n" +
- "\n" +
- "SELECT *\n" +
- "FROM episodes\n" +
- "WHERE series_id = $seriesId AND season_id = $seasonId AND episode_id = $episodeId;",
- path);
-
- // Prepares query and stores its QueryId for the current session.
- query = executeWithResult(session -> session.prepareDataQuery(queryText).join());
- System.out.println("Finished preparing query: " + queryId);
-
- preparedQueries.put(queryId, query);
- }
-
- Params params = query.newParams()
- .put("$seriesId", DataValue.uint64(seriesId))
- .put("$seasonId", DataValue.uint64(seasonId))
- .put("$episodeId", DataValue.uint64(episodeId));
-
- DataQueryResult result = query.execute(TxControl.serializableRw().setCommitTx(true), params)
- .join()
- .expect("prepared query failed");
-
- System.out.println("\n--[ PreparedSelect ]---------------------------------------");
- new TablePrinter(result.getResultSet(0)).print();
- }
-```
-
-Приведенный фрагмент кода при запуске выводит на консоль текст:
-
-```bash
---[ PreparedSelect ]---------------------------------------
-+-------------+------------+-----------+-----------+--------------------------------------+
-| air_date | episode_id | season_id | series_id | title |
-+-------------+------------+-----------+-----------+--------------------------------------+
-| Some[16964] | Some[8] | Some[3] | Some[2] | Some["Bachman's Earnings Over-Ride"] |
-+-------------+------------+-----------+-----------+--------------------------------------+
-```
-
-Если подготовленного запроса в контексте сессии еще не существует, его можно подготовить с помощью `prepareDataQuery`.
-
-{% include [scan_query.md](steps/08_scan_query.md) %}
-
-```java
-private void executeScanQuery(Session session) {
- String query =
- "SELECT series_id, season_id, COUNT(*) AS episodes_count\n" +
- "FROM episodes\n" +
- "GROUP BY series_id, season_id\n" +
- "ORDER BY series_id, season_id;";
-
- ExecuteScanQuerySettings settings = ExecuteScanQuerySettings.newBuilder().build();
- Consumer<ResultSetReader> printer = (ResultSetReader reader) -> {
- while (reader.next()) {
- for (int i = 0; i < reader.getColumnCount(); i++) {
- if (i > 0) {
- System.out.print(" ");
- }
- System.out.print(reader.getColumn(i).toString());
- }
- System.out.print("\n");
- }
- };
-
- session.executeScanQuery(query, Params.empty(), settings, printer).join();
-}
-```
-
-{% include [multistep_transactions.md](steps/09_multistep_transactions.md) %}
-
-Первый шаг — подготовка и выполнение первого запроса:
-
-```java
-public void multiStep() {
- final long seriesId = 2;
- final long seasonId = 5;
-
- final String txId;
- final Instant fromDate;
- final Instant toDate;
-
- {
- String query = String.format(
- "PRAGMA TablePathPrefix(\"%s\");\n" +
- "\n" +
- "DECLARE $seriesId AS Uint64;\n" +
- "DECLARE $seasonId AS Uint64;\n" +
- "\n" +
- "SELECT first_aired AS from_date FROM seasons\n" +
- "WHERE series_id = $seriesId AND season_id = $seasonId;",
- path);
-
- Params params = Params.withUnknownTypes()
- .put("$seriesId", DataType.uint64(), DataValue.uint64(seriesId))
- .put("$seasonId", DataType.uint64(), DataValue.uint64(seasonId));
-
- // Executes the first query to get the required values to the client.
- // Transaction control settings don't set CommitTx flag to keep transaction active
- // after query execution.
- TxControl txControl = TxControl.serializableRw();
- DataQueryResult result = executeWithResult(session -> session.executeDataQuery(query, txControl, params)
- .join());
-
- if (result.isEmpty()) {
- throw new IllegalStateException("empty result set");
- }
-```
-
-Для продолжения работы в рамках текущей транзакции необходимо получить текущий `transaction id`:
-
-```java
- ResultSetReader resultSet = result.getResultSet(0);
- resultSet.next();
- long firstAired = resultSet.getColumn(0).getUint64();
-
- // Performs some client logic on returned values.
- fromDate = Instant.EPOCH.plus(firstAired, ChronoUnit.DAYS);
- toDate = fromDate.plus(15, ChronoUnit.DAYS);
-
- // Gets active transaction id.
- txId = result.getTxId();
-}
-```
-
-Следующий шаг — создание следующего запроса, использующего результаты выполнения кода на стороне клиентского приложения:
-
-```java
- {
- // Constructs next query based on the results of client logic.
- String query = String.format(
- "PRAGMA TablePathPrefix(\"%s\");\n" +
- "\n" +
- "DECLARE $seriesId AS Uint64;\n" +
- "DECLARE $fromDate AS Uint64;\n" +
- "DECLARE $toDate AS Uint64;\n" +
- "\n" +
- "SELECT season_id, episode_id, title, air_date FROM episodes\n" +
- "WHERE series_id = $seriesId AND air_date >= $fromDate AND air_date <= $toDate;",
- path);
-
- Params params = Params.withUnknownTypes()
- .put("$seriesId", DataType.uint64(), DataValue.uint64(seriesId))
- .put("$fromDate", DataType.uint64(), DataValue.uint64(Duration.between(Instant.EPOCH, fromDate).toDays()))
- .put("$toDate", DataType.uint64(), DataValue.uint64(Duration.between(Instant.EPOCH, toDate).toDays()));
-
- // Executes second query.
- // Transaction control settings continues active transaction (tx) and
- // commits it at the end of second query execution.
- TxControl txControl = TxControl.id(txId).setCommitTx(true);
- DataQueryResult result = executeWithResult(session -> session.executeDataQuery(query, txControl, params)
- .join());
-
- System.out.println("\n--[ MultiStep ]---------------------------------------");
- // Index of result set corresponds to its order in YQL query.
- new TablePrinter(result.getResultSet(0)).print();
- }
-}
-```
-
-Приведенные фрагменты кода при запуске выводят на консоль текст:
-
-```bash
---[ MultiStep ]---------------------------------------
-+-----------+------------+---------------------------------+-------------+
-| season_id | episode_id | title | air_date |
-+-----------+------------+---------------------------------+-------------+
-| Some[5] | Some[1] | Some["Grow Fast or Die Slow"] | Some[17615] |
-| Some[5] | Some[2] | Some["Reorientation"] | Some[17622] |
-| Some[5] | Some[3] | Some["Chief Operating Officer"] | Some[17629] |
-+-----------+------------+---------------------------------+-------------+
-```
-
-
-
-{% include [transaction_control.md](steps/10_transaction_control.md) %}
-
-Фрагмент кода, демонстрирующий явное использование вызовов `beginTransaction()` и `transaction.Commit()`:
-
-```java
-private Status explicitTcl(Session session) {
- Result<Transaction> transactionResult = session.beginTransaction(TransactionMode.SERIALIZABLE_READ_WRITE)
- .join();
- if (!transactionResult.isSuccess()) {
- return transactionResult.toStatus();
- }
-
- Transaction transaction = transactionResult.expect("cannot begin transaction");
- String query = String.format(
- "PRAGMA TablePathPrefix(\"%s\");\n" +
- "DECLARE $airDate AS Uint64;\n" +
- "UPDATE episodes SET air_date = $airDate WHERE title = \"TBD\";",
- database);
-
- Params params = Params.of("$airDate", uint64(Duration.between(Instant.EPOCH, Instant.now()).toDays()));
-
- TxControl txControl = TxControl.id(transaction).setCommitTx(false);
- Result<DataQueryResult> updateResult = session.executeDataQuery(query, txControl, params)
- .join();
- if (!updateResult.isSuccess()) {
- return updateResult.toStatus();
- }
-
- return transaction.commit().join();
-}
-```
-
-
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 79c5d1f0c88..5631c6ab676 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
@@ -5,7 +5,7 @@
Выполните команду по следующему образцу:
``` bash
-<auth_mode_var>="<auth_mode_value>" java -jar examples/simple_project/target/ydb-simple-project.jar <endpoint>?database=<database>
+<auth_mode_var>="<auth_mode_value>" java -jar examples/basic_example/target/ydb-basic-example.jar <endpoint>?database=<database>
```
, где
@@ -17,7 +17,7 @@
Например:
``` bash
-YDB_ACCESS_TOKEN_CREDENTIALS="t1.9euelZqOnJuJlc..." java -jar examples/simple_project/target/ydb-simple-project.jar grpcs://ydb.example.com:2135?database=/somepath/somelocation
+YDB_ACCESS_TOKEN_CREDENTIALS="t1.9euelZqOnJuJlc..." java -jar examples/basic_example/target/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
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 4abdddb1cb2..0ef41642852 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,5 +1,5 @@
Для соединения с развернутой локальной базой данных YDB по сценарию [Docker](../../../../../getting_started/self_hosted/ydb_docker.md) в конфигурации по умолчанию выполните следующую команду:
``` bash
-YDB_ANONYMOUS_CREDENTIALS=1 java -jar examples/simple_project/target/ydb-simple-project.jar grpc://localhost:2136?database=/local
+YDB_ANONYMOUS_CREDENTIALS=1 java -jar examples/basic_example/target/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 89135d2f42b..f6a3647db40 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/simple_project), доступного в составе [Java SDK](https://github.com/yandex-cloud/ydb-java-sdk) {{ ydb-short-name }}.
+На этой странице подробно разбирается код [тестового приложения](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 }}.
## Скачивание SDK и запуск примера {#download}