Хранение двоичного значения хэш-функции в поле модели Django

В порядке наилучшего подхода к худшему:

  • Наилучший подход: подход 2 - динамическое предоставление тома
  • Хорошо: подход 1 - предварительно подготовленные тома через PersistentVolumeClaim
  • Худший: Подход 3 - Прямая ссылка на диск через модуль без PersistentVolumeClaim

Подход 3 является худшим, потому что вы теряете переносимость. Если вы переместите ваш модуль в кластер Kubernetes, где GCE PD недоступен, вам придется модифицировать ваш модуль в соответствии с типом хранилища, доступным в новом кластере. Вы не должны использовать этот подход.

С обоими подходами 1 и 2 Ваши объекты Pod и PersistentVolumeClaim остаются переносимыми и не содержат в себе специфичных для кластера деталей.

Используйте подход 1 (вручную создавая PersistentVolumeClaim и PersistentVolume), если у вас уже есть существующий диск, который вы хотите использовать с Kubernetes. Сначала вы создаете объект PersistentVolume для представления диска в Kubernetes, затем вы создаете PersistentVolumeClaim для привязки к нему и в качестве указателя, который вы можете использовать в вашем модуле Pod. Вы должны быть осторожны, чтобы убедиться, что объекты указывают друг на друга, см. https://stackoverflow.com/a/34323691/5443528 для получения подробной информации о том, как это сделать. Это подход, который вы должны использовать для существующих GCE PD.

Подход 2 (вручную создайте PersistentVolumeClaim и дайте системе автоматически создать PersistentVolume). Если ваша система хранения поддерживает динамическое предоставление томов Kubernetes, вы просто создаете объект PersistentVolumeClaim, и ваша система хранения автоматически создает новый том. У Kubernetes в GCE и GKE по умолчанию установлен StorageClass для GCE PD, поэтому это должно работать «из коробки», и именно этот подход вам следует использовать для создания и использования новых GCE PD.

Подробнее см. https://www.youtube.com/watch?v=uSxlgK1bCuA .

8
задан fish2000 19 September 2012 в 14:27
поделиться

3 ответа

Я принимаю, писали ли Вы необработанный SQL, Вы использовали бы Пост-ГРЭС bytea или MySQL VARBINARY. Существует билет с патчем (отмеченное "тестирование потребностей"), который предположительно делает поле как это (Билет 2417: Поддержка двоичных полей типа (иначе: bytea в пост-ГРЭС и VARBINARY в mysql)).

Иначе Вы могли, вероятно, попробовать силы в записи пользовательского типа поля.

4
ответ дан 5 December 2019 в 13:02
поделиться

Вы могли также записать Вашему собственному Образцовому менеджеру, который делает выход и невыход для Вас.

3
ответ дан 5 December 2019 в 13:02
поделиться

"У меня есть двадцатибайтовый шестнадцатеричный хеш, который я хотел бы сохранить в django модели".

Django делает это. Они используют шестнадцатеричные обзоры, которые являются - технически - строки. Не байты.

Не использовать someHash.digest() - Вы получаете байты, которые Вы не можете легко сохранить.

Использовать someHash.hexdigest() - Вы получаете строку, которую можно легко сохранить.

Редактирование - код почти идентичен.

См. http://docs.python.org/library/hashlib.html

4
ответ дан 5 December 2019 в 13:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: