Здесь три вопроса в одном:
- Стоит ли использовать BLOB для двоичных данных?
- Как вы публикуете двоичные данные и используете их из движка приложения
- Как вы получаете двоичные данные из движка приложения
Я не могу ответить, если вы «должны» использовать большие двоичные объекты, только вы будете знать ответ на этот вопрос, и это сильно зависит от типа данных, которые вы пытаетесь сохранить, и от того, как они будут использоваться. Давайте возьмем изображение для примера (который, вероятно, самый популярный вариант использования для этого). Вы хотите, чтобы пользователи сделали фотографию с помощью телефона, загрузили ее, а затем поделились ею с другими пользователями. Это хорошее использование больших двоичных объектов, но, как подсказывает @slycrel, вы столкнетесь с ограничениями размера записи. Это может быть осуществимо, например, вы можете использовать библиотеку изображений Python (pil), чтобы уменьшить изображение.
Чтобы опубликовать двоичные данные, см. этот вопрос . Лучше всего кешировать 2 копии, миниатюру и полный размер. Таким образом, изменение размера происходит только один раз при загрузке. Если вы хотите сделать что-то лучше, вы можете использовать новую функцию фоновых заданий в движке приложения, чтобы поставить в очередь обработку изображений на потом. В любом случае вам нужно будет вернуть идентификатор только что созданного большого двоичного объекта, чтобы можно было ссылаться на него с устройства без дополнительного http-запроса.
Я думаю, что для извлечения данных лучшим подходом было бы рассматривать BLOB как собственный ресурс. Настройте маршруты так, чтобы у каждого данного блоба был уникальный URL:
http://myweb/images/(thumbnail|fullsize)/<blobid>.(jpg|png|gif)
Где BLOBID является динамическим, и JPG, PNG или GIF могут использоваться для получения определенного типа изображения. Миниатюру или полноразмерную версию можно использовать для получения уменьшенной или увеличенной версии, которую вы сохранили, когда они ее опубликовали.