Команда 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: всегдаNone. -
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": None
}
],
"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/python/table_create/