Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Создаем свою первую базу данных на Tarantool

Пример на GitHub: create_db

В этом руководстве описано, как создать базу данных Tarantool, записать в нее данные и выполнить выборку.

Предварительные требования

Перед началом работы:

  • Установите утилиту tt.

  • Установите Tarantool.

Создание приложения

Команда tt create позволяет создать приложение на основе предопределенного или пользовательского шаблона.

В этом руководстве структура приложения создается вручную:

  1. Создайте окружение tt в текущем каталоге с помощью команды tt init.

  2. В каталоге instances.enabled созданного окружения tt создайте каталог create_db.

  3. Внутри instances.enabled/create_db создайте файлы instances.yml и config.yaml:

    • instances.yml задает список экземпляров для запуска в текущем окружении. В этом примере используется один экземпляр:

      instance001:
    • config.yaml содержит базовую конфигурацию экземпляра:

      /code_snippets/snippets/config/instances.enabled/create_db/config.yaml

Экземпляр в конфигурации принимает входящие запросы на порту 3301.

Работа с базой данных

Запуск экземпляра

  1. Запустите экземпляр Tarantool из каталога окружения tt с помощью tt start:

    $ tt start create_db
  2. Чтобы проверить статус запущенного экземпляра, используйте команду tt status:

    $ tt status create_dbINSTANCE               STATUS   PID   MODE  CONFIG  BOX      UPSTREAMcreate_db:instance001  RUNNING  8685  RW    ready   running  --
  3. Подключитесь к экземпляру с помощью tt connect:

    $ tt connect create_db:instance001   • Connecting to the instance...   • Connected to create_db:instance001create_db:instance001>

Эта команда открывает интерактивную консоль Tarantool с приглашением вида create_db:instance001>. Теперь можно вводить запросы к Tarantool в командной строке.

Создание спейса

  1. Создайте спейс (space) с именем bands:

    create_db:instance001> box.schema.space.create('bands')---- engine: memtx  before_replace: 'function: 0x010229d788'  field_count: 0  is_sync: false  is_local: false  on_replace: 'function: 0x010229d750'  temporary: false  index:   type: normal  enabled: false  name: bands  id: 512- created...
  2. Задайте формат созданного спейса, указав имена полей и типы:

    create_db:instance001> box.space.bands:format({                           { name = 'id', type = 'unsigned' },                           { name = 'band_name', type = 'string' },                           { name = 'year', type = 'unsigned' }                       })---...

Создание индексов

  1. Создайте первичный индекс по полю id:

    create_db:instance001> box.space.bands:create_index('primary', { parts = { 'id' } })---- unique: true  parts:  - fieldno: 1    sort_order: asc    type: unsigned    exclude_null: false    is_nullable: false  hint: true  id: 0  type: TREE  space_id: 512  name: primary...
  2. Создайте вторичный индекс по полю band_name:

    create_db:instance001> box.space.bands:create_index('secondary', { parts = { 'band_name' } })---- unique: true  parts:  - fieldno: 2    sort_order: asc    type: string    exclude_null: false    is_nullable: false  hint: true  id: 1  type: TREE  space_id: 512  name: secondary...

Запись и выборка данных

  1. Вставьте три кортежа (tuple) в спейс:

    create_db:instance001> box.space.bands:insert { 1, 'Roxette', 1986 }---- [1, 'Roxette', 1986]...create_db:instance001> box.space.bands:insert { 2, 'Scorpions', 1965 }---- [2, 'Scorpions', 1965]...create_db:instance001> box.space.bands:insert { 3, 'Ace of Base', 1987 }---- [3, 'Ace of Base', 1987]...
  2. Выберите кортеж с использованием индекса primary:

    create_db:instance001> box.space.bands:select { 3 }---- - [3, 'Ace of Base', 1987]...
  3. Выберите кортежи с использованием индекса secondary:

    create_db:instance001> box.space.bands.index.secondary:select{'Scorpions'}---- - [2, 'Scorpions', 1965]...