Команда 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, а вместо этого реализует отдельный термин.)
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/java/run/