Spec-Zone.ru › RethinkDB java

Команда ReQL: run

Синтаксис команды

query.run(conn[, optArgs, fetchMode, typeRef]) → Result
query.runAsync(conn[, optArgs, fetchMode, typeRef]) → CompletableFuture<Result>

Описание

Выполняет запрос на подключении синхронно или асинхронно, возвращая либо результат, либо CompletableFuture, который завершится результатом.

Вы можете передать следующие параметры, используя optArg. Обратите внимание, что в отличие от других команд Java ReQL, вы должны создать объект OptArg и передать его в качестве необязательного второго аргумента в run:

import com.rethinkdb.model.OptArgs;

r.table("table").run(conn, OptArgs.of("read_mode", "outdated"));

// for two or more optArgs, use "with"
r.table("table").run(conn,
    OptArgs.of("read_mode", "outdated").with("db", "database"));
  • read_mode: Одно из трех возможных значений, влияющих на гарантию согласованности запроса (по умолчанию: 'single').
    • 'single' (по умолчанию) возвращает значения, которые находятся в памяти (но необязательно записаны на диск) на первичной реплике.
    • 'majority' вернет только значения, которые безопасно сохранены на диске на большинстве реплик. Это требует отправки сообщения каждой реплике при каждом чтении, поэтому это самый медленный, но наиболее согласованный вариант.
    • 'outdated' вернет значения, находящиеся в памяти на произвольно выбранной реплике. Это самый быстрый, но наименее согласованный вариант.
  • time_format: формат возвращаемых времен (по умолчанию: native). Установите это значение в raw, если вы хотите, чтобы времена возвращались как JSON-объекты для экспорта.
  • profile: следует ли возвращать профиль выполнения запроса (по умолчанию: false).
  • durability: возможные значения hard и soft. В режиме мягкой стабильности RethinkDB подтвердит запись сразу после ее получения, но до того, как запись будет записана на диск.
  • group_format: формат возвращения grouped_data и grouped_streams (по умолчанию: native). Установите это значение в raw, если вы хотите получить сырой псевдотип.
  • db: база данных для выполнения запроса в виде строки. По умолчанию используется база данных, указанная в методе db подключения (по умолчанию test). База данных также может быть указана командой db.
  • array_limit: максимальное количество элементов массива, которые могут быть возвращены запросом (по умолчанию: 100 000). Это влияет на все команды ReQL, возвращающие массивы. Обратите внимание, что это не влияет на размер массивов, записываемых в базу данных; для них всегда существует верхний предел в 100 000 элементов.
  • binary_format: формат возвращаемых двоичных данных (по умолчанию: native). Установите это значение в raw, если вы хотите получить сырой псевдотип.
  • min_batch_rows: минимальное количество строк, ожидаемых перед пакетной сборкой набора результатов (по умолчанию: 8). Это целое число.
  • max_batch_rows: максимальное количество строк, ожидаемых перед пакетной сборкой набора результатов (по умолчанию: без ограничений). Это целое число.
  • max_batch_bytes: максимальное количество байтов, ожидаемых перед пакетной сборкой набора результатов (по умолчанию: 1 МБ). Это целое число.
  • max_batch_seconds: максимальное время ожидания в секундах перед пакетной сборкой набора результатов (по умолчанию: 0,5). Это число с плавающей точкой (не целое число) и может быть указано до микросекунды.
  • first_batch_scaledown_factor: множитель для уменьшения других параметров на первом пакете (по умолчанию: 4). Например, если это значение равно 8, а max_batch_rows равно 80, на первом пакете max_batch_rows будет скорректировано до 10 (80 / 8). Это позволяет первому пакету возвращаться быстрее.

Пример: Если вы согласны с потенциально устаревшими данными из всех таблиц, участвующих в запросе, и хотите потенциально более быстрое чтение, передайте флаг, разрешающий устаревшие данные в объекте параметров. Настройки для отдельных таблиц будут переопределять эту глобальную настройку для всех таблиц в запросе.

import com.rethinkdb.model.OptArgs;

r.table("marvel").run(conn, OptArgs.of("read_mode", "outdated"));

Пример: Если вы хотите указать, следует ли ожидать, что запись будет записана на диск (переопределяя настройки по умолчанию таблицы), вы можете установить durability на hard или soft в параметрах.

r.table("marvel").insert(r.hashMap("superhero", "Iron Man")
    .with("superpower", "Arc Reactor"))
    .run(conn, OptArgs.of("durability", "soft"));

Пример: Если вы не хотите, чтобы объект времени преобразовывался в объект даты, вы можете передать флаг time_format, чтобы предотвратить это (допустимые флаги — «raw» и «native»). Этот запрос возвращает объект с двумя полями (epoch_time и $reql_type$ ) вместо объекта Java 8 ZonedDateTime.

r.now().run(conn, OptArgs.of("time_format", "raw"));

Пример: Укажите базу данных для запроса.

for (Object doc : r.table("marvel").run(conn, OptArgs.of("db", "heroes")) {
    System.out.println(doc);
}

Это эквивалентно использованию команды db для указания базы данных:

r.db("heroes").table("marvel").run(conn);

Пример: Измените параметры пакетной обработки для этого запроса.

r.table("marvel").run(conn, OptArgs.of("max_batch_rows", 16).with("max_batch_bytes", 2048));

Если вы хотите отправить запись и забыть о ней — то есть не ждать ответа — используйте команду runNoReply. (В отличие от других официальных драйверов RethinkDB, Java не поддерживает параметр noreply для run, а вместо этого реализует отдельный термин.)

Связанные команды

  • connect
  • runNoReply

© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/java/run/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API