Spec-Zone.ru › RethinkDB ruby

Команда ReQL: run

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

query.run(conn[, options]) → cursor
query.run(conn[, options]) → object

Описание

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

Опции могут быть:

  • 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', если вы хотите получить сырой псевдотип.
  • noreply: установите значение true для того, чтобы не получать объект результата или курсор и вернуть результат немедленно.
  • db: база данных, к которой следует выполнить запрос, указанная с помощью команды db. По умолчанию используется база данных, указанная в параметре db команды connect (по умолчанию 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). Это позволяет быстрее вернуть первую партию.

Пример: Выполнение запроса на подключении conn и вывод каждой строки результата.

r.table('marvel').run(conn).each { |x| p x }

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

r.table('marvel').run(conn, :read_mode => 'outdated')

Пример: Если вам нужно просто отправить запись и забыть о ней, вы можете установить noreply в значение true в параметрах. В этом случае run будет возвращен немедленно.

r.table('marvel').run(conn, :noreply => true)

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

r.table('marvel')
    .insert({ :superhero => 'Iron Man', :superpower => 'Arc Reactor' })
    .run(conn, :noreply => true, :durability => 'soft')

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

r.now().run(conn, :time_format=>"raw")

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

r.table('marvel').run(conn, :db => r.db('heroes')).each { |x| p x }

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

r.db('heroes').table('marvel').run(conn) ...

Пример: Изменение параметров объединения для данного запроса.

r.table('marvel').run(conn, :max_batch_rows => 16, :max_batch_bytes => 2048)

Пример: Используйте run с блоком Ruby. Этот стиль позволяет передавать курсор в блок в качестве аргумента, закрывая курсор по достижению конца блока.

r.table('marvel').run(conn) { |cursor|
    cursor.each { |hero| fight(hero) }
}

```

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

  • connect
  • repl

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

Spec-Zone.ru

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