Команда 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)
См. Фрагментацию и репликацию для полного обсуждения этой темы, включая расширенные темы.
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/ruby/table_create/