Spec-Zone.ru › RethinkDB java

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

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

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

  • tableList
  • tableDrop

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

Spec-Zone.ru

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