Spring Data
Spring Data Tarantool - модуль Spring Data, который упрощает создание приложений на базе Spring , использующих Tarantool в качестве хранилища данных.
Особенности
- Реализация CRUD методов для классов моделей данных, специфичных для работы с кластером Tarantool через библиотеку tarantool/crud
- Работа с хранимыми процедурами и скриптами Lua через динамические методы
- Возможность интеграции пользовательского кода репозитория
- Возможности гибкой настройки доступа к Tarantool
- через spring-bean
- через файлы конфигурации (
.properties/.yaml)
- Удобная интеграция с инфраструктурой Spring
- Автоматическая реализация интерфейса
Repository, используя@EnableTarantoolRepositories, в том числе, включая поддержку пользовательских запросов
Статус проекта
| Версия tarantool-java-sdk | Версия tarantool-spring-data | Версия Spring Boot |
|---|---|---|
| 1.5.x | 1.5.x | 2.7.18 / 3.1.12 / 3.2.12 / 3.3.13 / 3.4.11 |
| 1.6.x | 1.6.x | 2.7.18 / 3.1.12 / 3.2.12 / 3.3.13 / 3.4.13 / 3.5.8 |
| 1.7.x | 1.7.x | 2.7.18 / 3.1.12 / 3.2.12 / 3.3.13 / 3.4.13 / 3.5.16 / 4.0.9 |
Модуль выбирается по минорной линии Spring Boot приложения. В таблице выше — версии Spring Boot, с которыми модули собраны и протестированы; другие патч-версии той же линии в CI не проверяются, более новые минорные линии не проверяются вовсе.
| Линия Spring Boot | Модуль |
|---|---|
| 2.7.x | tarantool-spring-data-27 |
| 3.1.x | tarantool-spring-data-31 |
| 3.2.x | tarantool-spring-data-32 |
| 3.3.x | tarantool-spring-data-33 |
| 3.4.x | tarantool-spring-data-34 |
| 3.5.x | tarantool-spring-data-35 |
| 4.0.x | tarantool-spring-data-40 |
Версия Tarantool и поддерживаемые модули-клиенты
| Версия Tarantool | CRUD API (кластер) | BOX API (один экземпляр) |
|---|---|---|
| 2.11.x | Да | Да (ограничено*) |
| 3.x | Да | Да (ограничено*) |
Заметка
Поддерживается только конфигурация и получение spring bean TarantoolBoxClient.
| Версия Tarantool Data Grid | Repository API |
|---|---|
| 1.x | Да (ограничено*) |
| 2.x | Да (ограничено*) |
Заметка
В релизе 1.4.0 добавлен экспериментальная версия клиента для Tarantool Data Grid, с поддержкой CRUD операций.
Предварительные требования перед работой с модулей Spring Data Tarantool
Наличие базы данных Tarantool
Для работы с модулем, необходим доступ к запущенному Tarantool. Инструкции по установке и запуску
Tarantool можно найти
здесь: github.
Для Repository нужен кластер с crud и vshard
Слой репозиториев (@EnableTarantoolRepositories) привязан к TarantoolCrudClient и вызывает
хранимые процедуры crud.*, которые даёт модуль crud
поверх vshard. В обычном образе tarantool/tarantool с Docker Hub нет ни того, ни другого,
поэтому вызовы Repository завершаются ошибкой Procedure 'crud.select' is not defined.
Поднимите кластер (роутер с crud и хранилища с vshard) одним из способов:
- образ Tarantool DB (TDB):
crudиvshardв нём уже есть; - модуль tarantool-java-sdk/testcontainers: запускает кластер TDB из теста;
- собственный образ: пример на основе
tarantool/tarantoolс рокспекомcrudи скриптамиrouter.lua/storage.luaлежит в репозитории, каталогtarantool-shared-resources/vshard_cluster.
Важно
- Данный модуль рассчитан на работу с Tarantool версий
2.11.xи3.x. С отличиями версий можно ознакомиться вофициальной документации. - Работа с более низкими версиями Tarantool возможна, но не гарантируется
Заметка
В целях ознакомления или рассмотрения примеров, удобно использовать
docker и/или
testcontainers в качестве среды для запуска Tarantool.
Заметка
Также стоит ознакомиться с модулем
tarantool-java-sdk/testcontainers, который позволит уменьшить
временные затраты на использование Tarantool с testcontainers в Java.
Загрузка библиотеки на рабочую машину
Подключите модуль в своем проекте следующим образом:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>4.0.9</version>
</dependency>
<dependency>
<groupId>io.tarantool</groupId>
<artifactId>tarantool-spring-data-40</artifactId>
<version>${tarantool-spring-data.version}</version>
</dependency>
</dependencies>