Хранение очень больших целых чисел в MySQL - PullRequest
14 голосов
/ 31 июля 2009

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

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

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

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

Ответы [ 2 ]

19 голосов
/ 31 июля 2009

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

8 голосов
/ 31 июля 2009

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

...