Перед началом работы установим библиотеку tarantool-php
.
Также запустим tarantool
и обязательно выполним пункт с созданием базы данных, как показано здесь.
Если вы используете бинарный пакет tarantool
(не Docker-образ), то не закрывайте консоль, в которой запущен tarantool
– она пригодится нам позднее.
Чтобы иметь возможность подключаться к tarantool
в качестве администратора, сменим пароль пользователя admin
:
Для подключения к серверу достаточно выполнить следующее:
Также при необходимости можно указать имя пользователя и пароль:
По умолчанию используется пользователь guest
.
Спейс – это контейнер для кортежей. Чтобы обратиться к спейсу как к именованному объекту, можно воспользоваться функцией connection.space
.
Для вставки нового кортежа в спейс воспользуемся функцией insert
:
Сначала выберем кортеж по первичному ключу (в нашем примере первичный индекс – это индекс primary
, построенный по полю id
в каждом кортеже). Воспользуемся функцией select
:
Теперь поищем кортежи по вторичному ключу. Для этого нужно указать номер или имя вторичного индекса.
Сначала сделаем запрос по номеру индекса:
Теперь сделаем аналогичный запрос по имени индекса и получим тот же результат:
А чтобы выбрать все кортежи из спейса, вызовем select
без аргументов:
Обновим значение поля с помощью update
:
Здесь мы обновляем значение поля 1
и увеличиваем значение поля 2
для кортежа с id
= 4. Если кортежа с таким id
нет, то tarantool
вернет ошибку.
Теперь с помощью функции replace
мы полностью заменим кортеж с совпадающим первичным ключом. Если кортежа с указанным первичным ключом не существует, то будет создан указанный кортеж.
Также мы можем обновлять данные с помощью функции upsert
, которая работает аналогично update
, но создает новый кортеж, если старый не был найден.
Здесь мы увеличиваем на 5 значение поля 2
в кортеже с id
= 4 – или вставляем кортеж (4, "Another band", 2000)
, если такого нет.
Чтобы удалить кортеж, нужно использовать delete(primary_key)
:
Для удаления всех кортежей в спейсе (или всего спейса), нужно воспользоваться функцией сall
. Мы поговорим о ней подробнее в следующем разделе.
Чтобы удалить все кортежи в спейсе, нужно вызвать функцию space:truncate
:
Чтобы удалить спейс, необходимо вызвать функцию space:drop
. Для выполнения следующей команды необходимо подключиться из-под пользователя admin
:
Перейдем в терминал с запущенным tarantool
(о том, как установить удаленное подключение к tarantool
, можно прочитать здесь) и напишем простую функцию на Lua:
Чтобы вызвать из php
функцию, описанную в tarantool
, нам нужна функция call
:
Также мы можем передать Lua-код на выполнение. Для этого воспользуемся функцией evaluate
: