Запись и получение бинарных данных¶
В этом руководстве показано, как записать бинарные данные в шардированный спейс с помощью модуля CRUD, а затем прочитать записанные файлы.
Для хранения бинарных данных используйте тип string или varbinary.
Эти типы имеют одинаковые представления в виде байтов, различается только заголовок MsgPack.
При использовании сериализации типы string
и varbinary
позволяют определить, в каком формате сериализовать данные при отдаче клиенту.
Самый эффективный способ передачи данных клиенту – передать значение через коннектор без конвертации.
Содержание:
Пререквизиты¶
Для выполнения примера требуются:
установленный Docker-образ Tarantool DB;
приложение Docker Compose;
Go;
исходные файлы примера
binary_data
.Примечание
Есть два способа получить исходные файлы примера:
Архив с полной документацией Tarantool DB, полученный по почте или скачанный в личном кабинете tarantool.io. Пример архива:
tarantooldb-documentation-2.0.0.tar.gz
. Примерbinary_data
расположен в таком архиве в директории./doc/examples/binary_data/
.Отдельный архив binary_data.tar.gz, скачанный c сайта Tarantool.
Запуск стенда и подключение к узлу¶
Для успешного запуска должны быть свободны следующие порты:
3301–3308
8081, 8082
Перейдите в папку с примером binary_data/tt
:
cd ./doc/examples/binary_data/tt
Запустите стенд:
make start
Команда развернет стенд, который состоит из:
кластера Tarantool DB:
2 роутера;
2 набора реплик по 3 хранилища;
кластера etcd из 3 узлов;
1 узла Tarantool Cluster Manager (TCM).
После запуска должны работать все контейнеры, кроме init_host.
Также после запуска кластера становится доступен веб-интерфейс TCM. Для входа в TCM откройте в браузере адрес http://localhost:8081. Логин и пароль для входа:
Username:
admin
Password:
secret
В TCM откройте вкладку Tuples. Убедитесь, что в списке есть спейс my_files
.
Запись бинарных данных¶
Чтобы продемонстрировать запись бинарных данных в шардированный спейс, в примере используется приложение на языке Go.
Откройте вторую вкладку локального терминала и перейдите в директорию с приложением:
cd ./doc/examples/binary_data/go
Запустите Go-приложение:
go run main.go
Программа читает все файлы из папки go/images
и записывает их в Tarantool DB с помощью модуля CRUD.
Чтобы проверить записанные данные, в TCM перейдите на вкладку Tuples и выберите в списке спейс my_files
.
Откроется новая вкладка с содержимым кортежей спейса my_files
.
Чтение бинарных данных¶
Запущенная Go-программа является также веб-сервером, слушающим порт 8082. По запросу в браузере программа получает из запроса запрашиваемое имя файла. После этого по имени файла выполняется запрос в базу данных. Бинарные данные, которые извлечены при этом из базы данных, отображаются браузером в качестве картинки согласно прикреплённому заголовку. Пример запроса:
http://localhost:8082/Dunkan.jpg
Размер бинарных данных¶
Если размер бинарных данных большой, увеличьте максимально возможный размер кортежа перед запуском экземпляра.
Задать такой размер можно с помощью переменной окружения TT_MEMTX_MAX_TUPLE_SIZE
.
Остановка стенда¶
Для остановки стенда:
В первом локальном терминале вернитесь в директорию
binary_data/tt
:cd ./doc/examples/binary_data/tt
Выполните следующую команду:
make stop
Во втором локальном терминале выполните команду
Ctrl + Z
.