Spec-Zone.ru › RethinkDB javascript

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

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

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

  • tableList
  • tableDrop

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

Spec-Zone.ru

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