Использование Django/Postgres для хранения двоичных данных с экономией памяти
Context
У меня есть проект Django, и внутри этого проекта у меня есть модель базы данных с полем типа models.BinaryField(max_length=50000000, default=b'0')
Проблема
Когда серверу предлагается запросить эти двоичные данные, даже при том, что никогда не бывает более 1-2 одновременных запросов, я достигаю предела оперативной памяти моего сервера, используя io.BytesIO
, наряду с stream.seek({index})
и stream.close()
(я использую термин stream очень свободно, поскольку здесь я просто имею в виду поиск и закрытие потока байт).
Вопрос
Возможно ли, что мне нужно по-другому реализовать способ хранения этих двоичных данных?
Решения, которые я пробовал и которые не сработали
Может ли разделение на фрагменты меньшего размера быть более эффективным для оперативной памяти сервера?
Когда я попытался сделать это, я обнаружил, что разбиение файла на более мелкие фрагменты и связывание их отношениями many-to-one
было чрезвычайно обременительным с точки зрения накладных расходов на базу данных.