Команда ReQL: tableCreate
Синтаксис команды
db.tableCreate(tableName[, options]) → object r.tableCreate(tableName[, options]) → object
Описание
Создаёт таблицу. Таблица RethinkDB — это коллекция JSON-документов.
В случае успеха команда возвращает объект с двумя полями:
-
tables_created: всегда1. -
config_changes: список, содержащий один объект с двумя полями,old_valиnew_val:-
old_val: всегдаnull. -
new_val: новое значение конфигурации таблицы config.
-
Если таблица с таким же именем уже существует, команда генерирует ReqlOpFailedError.
Примечание: Имя таблицы может содержать только буквенно-цифровые символы и символы нижнего подчеркивания.
Вызов
tableCreateбез указания базы данных с помощью db создаёт таблицу в базе данных, указанной в connect, илиtestв случае отсутствия указанной базы данных.
При создании таблицы вы можете указать следующие параметры:
-
primaryKey: имя первичного ключа. По умолчанию первичный ключ —id. -
durability: если установлено значениеsoft, сервер немедленно подтвердит запись и в фоновом режиме запишет её на диск. По умолчаниюhard, подтверждение записи происходит после записи данных на диск. -
shards: количество фрагментов, целое число от 1 до 64. По умолчанию1. -
replicas: целое число или объект отображения. По умолчанию1.- Если
replicas— целое число, оно определяет количество реплик на фрагмент. Указание количества реплик больше, чем доступно серверов, приведёт к ошибке. - Если
replicas— объект, он определяет пары ключ-значение тегов сервера и количество реплик, назначенных этим серверам:{tag1: 2, tag2: 4, tag3: 2, ...}.
- Если
-
primaryReplicaTag: первичный сервер, указанный по его тегу сервера. Требуется, еслиreplicas— объект; тег должен быть в объекте. Не должно быть указано, еслиreplicas— целое число.
Тип данных данных первичного ключа обычно строка (например, UUID) или число, но также может быть временем, бинарным объектом, булевым значением или массивом. В поле первичного ключа могут быть смешанные типы данных, но все значения должны быть уникальными. Использование массива в качестве первичного ключа приводит к тому, что первичный ключ ведёт себя как составной индекс; для получения дополнительной информации обратитесь к документации по составным вторичным индексам, так как это также относится к первичным ключам. (Обратите внимание, что первичный индекс всё ещё охватывает только одно поле, в то время как составные вторичные индексы могут охватывать несколько полей в одном индексе.) Первичные ключи не могут быть объектами.
Таблицы будут доступны для записи, когда команда вернёт результат.
Пример: Создать таблицу с именем ‘dc_universe’ с параметрами по умолчанию.
> r.db('heroes').tableCreate('dc_universe').run(conn, callback);
// Result passed to callback
{
"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": null
}
],
"tables_created": 1
}
Пример: Создать таблицу с именем ‘dc_universe’ с полем ‘name’ в качестве первичного ключа.
r.db('test').tableCreate('dc_universe', {primaryKey: 'name'}).run(conn, callback);
Пример: Создать таблицу с двумя фрагментами и тремя репликами на фрагмент. Это требует трёх доступных серверов.
r.db('test').tableCreate('dc_universe', {shards: 2, replicas: 3}).run(conn, callback);
Прочитайте Фрагментация и репликация для более подробного обсуждения этого предмета, включая продвинутые темы.
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/javascript/table_create/