Перед началом работы установим библиотеку go-tarantool
.
Также запустим tarantool
и обязательно выполним пункт с созданием базы данных, как показано здесь.
Если вы используете бинарный пакет tarantool
(не Docker-образ), то не закрывайте консоль, в которой запущен tarantool
– она пригодится нам позднее.
Чтобы иметь возможность подключаться к tarantool
в качестве администратора, сменим пароль пользователя admin
:
Простая программа, выполняющая подключение к серверу, будет выглядеть так:
Также при необходимости можно указать имя пользователя и пароль:
По умолчанию используется пользователь guest
.
Для вставки нового кортежа в спейс воспользуемся функцией insert
:
В этом примере в спейс tester
вставляется кортеж (4, "ABBA", 1972)
.
Код ответа и данные можно получить из структуры tarantool.Response
:
Чтобы выбрать кортеж из спейса, воспользуемся функцией Select
:
В этом примере мы ищем кортеж по первичному ключу с offset
0 и limit
1 в спейсе tester
(первичный индекс в нашем примере – это индекс primary
, построенный по полю id
в каждом кортеже).
Теперь поищем по вторичному ключу:
А теперь выберем все кортежи из спейса:
Обновим значение поля с помощью Update
:
Здесь мы увеличиваем на 3 значение поля 2
для кортежа с id
= 4. Если кортежа с таким id
нет, то tarantool
вернет ошибку.
Теперь с помощью функции Replace
мы полностью заменим кортеж с совпадающим первичным ключом. Если кортежа с указанным первичным ключом не существует, то будет создан указанный кортеж.
Также мы можем обновлять данные с помощью функции Upsert
, которая работает аналогично Update
, но создает новый кортеж, если старый не был найден.
Здесь мы увеличиваем на 5 значение третьего поля в кортеже с id
= 4 – или вставляем кортеж (4, "Another band", 2000)
, если такого нет.
Чтобы удалить кортеж, воспользуемся функцией сonnection.Delete
:
Для удаления всех кортежей в спейсе (или всего спейса), нужно воспользоваться функцией Call
. Мы поговорим о ней подробнее в следующем разделе.
Чтобы удалить все кортежи в спейсе, нужно вызвать функцию space:truncate
:
Чтобы удалить спейс, необходимо вызвать функцию space:drop
. Для выполнения следующей команды необходимо подключиться из-под пользователя admin
:
Перейдем в терминал с запущенным tarantool
(о том, как установить удаленное подключение к tarantool
, можно прочитать здесь) и напишем простую функцию на Lua:
Чтобы выполнить хранимую процедуру, описанную в tarantool
, нам нужна функция Call
:
Также мы можем передать Lua-код на выполнение. Для этого воспользуемся функцией Eval
: