Spec-Zone.ru › RethinkDB ruby

Команда ReQL: table_create

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

db.table_create(table_name[, options]) → object
r.table_create(table_name[, options]) → object

Описание

Создайте таблицу. Таблица RethinkDB — это набор JSON-документов.

При успешном выполнении команда возвращает объект с двумя полями:

  • tables_created: всегда 1.
  • config_changes: список, содержащий один объект из двух полей, old_val и new_val:
    • old_val: всегда nil.
    • new_val: новое значение конфигурации таблицы config.

Если таблица с таким же именем уже существует, команда выбросит ReqlOpFailedError.

Примечание: Для имени таблицы допустимы только буквенно-цифровые символы и символы подчеркивания.

Вызов table_create без указания базы данных с помощью db создаёт таблицу в базе данных, указанной в connect, или test в случае отсутствия указанной базы данных.

При создании таблицы можно указать следующие параметры:

  • primary_key: имя первичного ключа. По умолчанию первичным ключом является id.
  • durability: если установлено значение soft, сервер будет немедленно подтверждать записи и в фоновом режиме записывать их на диск. По умолчанию hard: подтверждение записей происходит после записи данных на диск.
  • shards: количество фрагментов, целое число от 1 до 64. По умолчанию 1.
  • replicas: целое число или объект отображения. По умолчанию 1.
    • Если replicas — целое число, оно указывает количество реплик на фрагмент. Указание большего количества реплик, чем серверов, приведёт к ошибке.
    • Если replicas — объект, он указывает пары ключ-значение тегов серверов и количество реплик, которые следует назначить этим серверам: {:tag1 => 2, :tag2 => 4, :tag3 => 2, ...}.
  • primary_replica_tag: указанный первичный сервер по его тегу сервера. Требуется, если replicas — объект; тег должен находиться в объекте. Это не должно быть указано, если replicas — целое число.

Тип данных данных первичного ключа обычно строка (например, UUID) или число, но также может быть временем, двоичным объектом, логическим значением или массивом. Типы данных могут смешиваться в поле первичного ключа, но все значения должны быть уникальными. Использование массива в качестве первичного ключа заставляет первичный ключ вести себя как составной индекс; прочитайте документацию по составным вторичным индексам, так как это также относится к первичным ключам. (Обратите внимание, что первичный индекс по-прежнему покрывает только одно поле, а составные вторичные индексы могут покрывать несколько полей в одном индексе.) Первичные ключи не могут быть объектами.

Таблицы будут доступны для записи, когда команда вернёт результат.

Пример: Создание таблицы с именем ‘dc_universe’ с настройками по умолчанию.

r.db('heroes').table_create('dc_universe').run(conn)

{
    :config_changes => [
        {
            :new_val => {
                :db => "test",
                :durability =>  "hard",
                :id => "20ea60d4-3b76-4817-8828-98a236df0297",
                :name => "dc_universe",
                :primary_key => "id",
                :shards => [
                    {
                        :primary_replica => "rethinkdb_srv1",
                        :replicas => [
                            "rethinkdb_srv1",
                            "rethinkdb_srv2"
                        ]
                    }
                ],
                :write_acks => "majority"
            },
            :old_val => nil
        }
    ],
    :tables_created => 1
}

Пример: Создание таблицы с именем ‘dc_universe’ с использованием поля ‘name’ в качестве первичного ключа.

r.db('test').table_create('dc_universe', :primary_key=>'name').run(conn)

Пример: Создание таблицы, настроенной на два фрагмента и три реплики на фрагмент. Это требует наличия трёх доступных серверов.

r.db('test').table_create('dc_universe', {:shards => 2, :replicas => 3}).run(conn)

См. Фрагментацию и репликацию для полного обсуждения этой темы, включая расширенные темы.

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

  • table_drop
  • table_list

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

Spec-Zone.ru

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