Spec-Zone.ru › RethinkDB python

Команда 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)

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

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

  • table_drop
  • table_list

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

Spec-Zone.ru

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