2009-07-31 3 views
14

Ich muss eine sehr große Anzahl (Dutzende von Millionen) von 512-Bit SHA-2-Hashes in einer MySQL-Tabelle speichern. Um Platz zu sparen, möchte ich sie lieber in binärer Form als in einem String mit Hexadezimalzahlen speichern. Ich verwende ein ORM (DBix::Class), so dass die spezifischen Details des Speichers vom Code abstrahiert werden, der sie auf jedes Objekt oder jede Struktur aufblasen kann, die ich auswähle.Speichern sehr großer Ganzzahlen in MySQL

Der Typ BIGINT von MySQL ist 64 Bit. Also könnte ich den Hash theoretisch unter acht BIGINT Spalten aufteilen. Das scheint aber ziemlich lächerlich. Mein anderer Gedanke war nur eine einzelne BLOB Spalte, aber ich habe gehört, dass sie langsam zugreifen können, weil MySQL sie als Felder variabler Länge behandelt.

Wenn jemand einige Widsom bieten könnte, die mir ein paar Stunden des Benchmarking verschiedener Methoden sparen, würde ich es begrüßen.

Hinweis: Automatisch -1 an alle, die "nur Postgres verwenden!" :)

+12

verwenden Sie einfach postgres :) – jeje

Antwort

18

Haben Sie 'binary (64)' in Betracht gezogen? Siehe MySQL binary Typ.

+0

Danke, 'BINARY' sieht aus wie es wird perfekt funktionieren. – friedo

Verwandte Themen