Команда ReQL: tableCreate
Синтаксис команды
db.tableCreate(tableName) → object r.tableCreate(tableName) → object
Описание
Создаёт таблицу. Таблица RethinkDB — это коллекция JSON-документов.
При успешном выполнении команда возвращает объект с двумя полями:
-
tables_created: всегда1. -
config_changes: список, содержащий один объект с двумя полями,old_valиnew_val:-
old_val: всегдаnull. -
new_val: новое значение конфигурации таблицы config.
-
Если таблица с таким же именем уже существует, команда вызывает ReqlOpFailedError.
Примечание: Для имени таблицы допустимы только буквенно-цифровые символы и символы нижнего подчеркивания.
Вызов
tableCreateбез указания базы данных с помощью db создаёт таблицу в базе данных, указанной в connect, илиtestв случае отсутствия указанной базы данных.
При создании таблицы можно указать следующие параметры с помощью optArg:
-
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);
Результат:
{
"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").optArg("primary_key", "name").run(conn);
Пример: Создание таблицы, настроенной на два фрагмента и три реплики на фрагмент. Это требует наличия трёх доступных серверов.
r.db("test").tableCreate("dc_universe").optArg("shards", 2).optArg("replicas", 3).run(conn);
Для получения подробного обсуждения этого вопроса, включая расширенные темы, см. Фрагментация и репликация.
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/java/table_create/