Vielleicht ein einfaches ZIP-Archiv (angeblich mit Null-Kompression) würde für Sie arbeiten? Es hat einen natürlichen Index in den Inhalt (Dateiströme), wenn Sie also , open it using archive/zip
bekommen, von denen jeder "weiß", wie man seinen entsprechenden Dateistrom findet und liest. (Es gibt sogar eine Möglichkeit, den Offset der Daten der Datei zu erhalten, und lesen Sie direkt-Bypass eine no-op "Dekompressor" und Prüfsumme Verifizierung, , so dass Sie diese mögliche Geschwindigkeit Tweak erkunden könnten, wenn Ihre Messungen die Geschwindigkeit zeigen würde der Zugriff auf diese Daten "der normale Weg" wird suboptimal sein.)
Sie könnten dann eine Karte mit Dateinamen für den schnellen Zugriff erstellen.
Oder vielleicht gehen Sie weiter und erstellen Sie eine Hierarchie solcher Karten , um einen "natürlichen" Verzeichnisbaum zu simulieren. Oder vielleicht mehrere ZIP-Archive in einem Dateisystembaum.
Und natürlich, wenn alles, was man ein r/o Klecks Datei-Stream-Blobs haben wollen würde + Index, das wäre eine ziemlich einfache Sache sein, sich-sowohl zu implementieren zum Lesen und Schreiben. Wenn Sie nicht zu viel in Sachen Design sind, würde ich mir die format of the Git "pack files" ansehen.
Ich würde auch bemerken, dass so ziemlich "Standard" [BoltDB] (https://github.com/boltdb/bolt) scheint, um 1 TB Datensätze zu behandeln - entsprechend den Dokumenten des Projekts. Es gibt auch einen kampferprobten [LevelDB] (https://github.com/syndtr/goleveldb), aber ich bin mir nicht sicher über seine Größenbeschränkungen. – kostix