Вопрос

Мне нужно хранить очень большое количество (десятки миллионов) 512-битных хэшей SHA-2 в таблице MySQL. Чтобы сэкономить место, я хотел бы хранить их в двоичной форме, а не в шестнадцатеричной строке. Я использую ORM ( DBix :: Class ) поэтому конкретные детали хранилища будут абстрагированы от кода, который может накачать их до любого объекта или структуры, которые я выберу.

Тип MySQL BIGINT составляет 64 бита. Таким образом, я могу теоретически разделить хэш между восемью столбцами BIGINT . Это кажется довольно смешным. Моя другая мысль состояла в том, чтобы использовать только один столбец BLOB , но я слышал, что доступ к ним может быть медленным из-за того, что MySQL рассматривает их как поля переменной длины.

Если бы кто-нибудь мог предложить несколько слов, которые сэкономили бы мне пару часов на сравнительный анализ различных методов, я был бы признателен.

Примечание. Автоматически -1 для всех, кто говорит "просто используйте postgres!" :)

Это было полезно?

Решение

Рассматривали ли вы «двоичный (64)»? См. двоичный код MySQL .

Другие советы

Используйте тип BINARY (64)?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top