I need to store a very large number (tens of millions) of 512-bit SHA-2 hashes in a MySQL table. To save space, I'd like to store them in binary form, rather than a string a hex digits. I'm using an ORM (DBix::Class) so the specific details of the storage will be abstracted from the code, which can inflate them to any object or structure that I choose.
MySQL's BIGINT
type is 64 bits. So I could theoretically split the hash up amongst eight BIGINT
columns. That seems pretty ridiculous though. My other thought was just using a single BLOB
column, but I have heard that they can be slow to access due to MySQL's treating them as variable-length fields.
If anyone could offer some widsom that will save me a couple hours of benchmarking various methods, I'd appreciate it.
Note: Automatic -1 to anyone who says "just use postgres!" :)
You can add it as a field to an Access table. You can also link to or import from databases with a corresponding data type, such as the SQL Server bigint data type. To add the Large Number data type, you need Access 2016 (16.0. 7812 or later).
Standard integer value. Signed values range from -2147483648 to 2147483647. Unsigned values range from 0 to 4294967295. This is a synonym for the INT datatype.
INT − A normal-sized integer that can be signed or unsigned. If signed, the allowable range is from -2147483648 to 2147483647. If unsigned, the allowable range is from 0 to 4294967295. You can specify a width of up to 11 digits.
In modern MySQL using InnoDB, you can handle databases that are as big as you'd likely ever want. Our individual hosts have up to about six terabytes each, but in previous companies, we had hosts with up to 12 terabytes and 20 billion rows in individual instances.
Have you considered 'binary(64)' ? See MySQL binary type.
Use the type BINARY(64) ?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With