Запись и получение бинарных данных | Tdb
Руководство пользователя Запись и получение бинарных данных

Запись и получение бинарных данных

В этом руководстве показано, как записать бинарные данные в шардированный спейс с помощью модуля 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.

Нашли ответ на свой вопрос?
Обратная связь