Создаем свою первую базу данных на Tarantool
Пример на GitHub: create_db
В этом руководстве описано, как создать базу данных Tarantool, записать в нее данные и выполнить выборку.
Перед началом работы:
Команда tt create позволяет создать приложение на основе предопределенного или пользовательского шаблона.
В этом руководстве структура приложения создается вручную:
-
Создайте окружение tt в текущем каталоге с помощью команды tt init.
-
В каталоге
instances.enabledсозданного окружения tt создайте каталогcreate_db. -
Внутри
instances.enabled/create_dbсоздайте файлыinstances.ymlиconfig.yaml:-
instances.ymlзадает список экземпляров для запуска в текущем окружении. В этом примере используется один экземпляр:instance001: -
config.yamlсодержит базовую конфигурацию экземпляра:/code_snippets/snippets/config/instances.enabled/create_db/config.yaml
-
Экземпляр в конфигурации принимает входящие запросы на порту 3301.
-
Запустите экземпляр Tarantool из каталога окружения
ttс помощью tt start:$ tt start create_db -
Чтобы проверить статус запущенного экземпляра, используйте команду tt status:
$ tt status create_dbINSTANCE STATUS PID MODE CONFIG BOX UPSTREAMcreate_db:instance001 RUNNING 8685 RW ready running -- -
Подключитесь к экземпляру с помощью tt connect:
$ tt connect create_db:instance001• Connecting to the instance...• Connected to create_db:instance001create_db:instance001>
Эта команда открывает интерактивную консоль Tarantool с приглашением
вида create_db:instance001>. Теперь можно вводить запросы к Tarantool
в командной строке.
-
Создайте спейс (space) с именем
bands:create_db:instance001> box.schema.space.create('bands')---- engine: memtxbefore_replace: 'function: 0x010229d788'field_count: 0is_sync: falseis_local: falseon_replace: 'function: 0x010229d750'temporary: falseindex:type: normalenabled: falsename: bandsid: 512- created... -
Задайте формат созданного спейса, указав имена полей и типы:
create_db:instance001> box.space.bands:format({{ name = 'id', type = 'unsigned' },{ name = 'band_name', type = 'string' },{ name = 'year', type = 'unsigned' }})---...
-
Создайте первичный индекс по полю
id:create_db:instance001> box.space.bands:create_index('primary', { parts = { 'id' } })---- unique: trueparts:- fieldno: 1sort_order: asctype: unsignedexclude_null: falseis_nullable: falsehint: trueid: 0type: TREEspace_id: 512name: primary... -
Создайте вторичный индекс по полю
band_name:create_db:instance001> box.space.bands:create_index('secondary', { parts = { 'band_name' } })---- unique: trueparts:- fieldno: 2sort_order: asctype: stringexclude_null: falseis_nullable: falsehint: trueid: 1type: TREEspace_id: 512name: secondary...
-
Вставьте три кортежа (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]... -
Выберите кортеж с использованием индекса
primary:create_db:instance001> box.space.bands:select { 3 }---- - [3, 'Ace of Base', 1987]... -
Выберите кортежи с использованием индекса
secondary:create_db:instance001> box.space.bands.index.secondary:select{'Scorpions'}---- - [2, 'Scorpions', 1965]...