Odradzałbym używanie jednego płaskiego pliku dla teoretycznie nieskończonych ilości danych.
Jeśli masz teoretycznie nieskończoną ilość danych, potrzebujesz dostępu losowego , co oznacza wiele plików lub bazy danych - lub indeksowanego formatu plików płaskich, który obejmuje ponowne rozwiązanie problemów z indeksowaniem już rozwiązanych przez systemy plików lub bazę danych.
Jeśli rozłożysz swoje fragmenty na wiele plików, uzyskanie fragmentu na (-110, 5000) to tylko kwestia powiedzenia „% APPDATA% / game / map / -110 / 5000.dat” (lub innej nazwy pliku, jeśli chcesz zacznij je kompresować). Bazy danych potrzebują tylko zapytania. Jeśli fragment nie ma żadnych danych, po prostu nie możesz nic przechowywać. Pojedynczy płaski plik nie zapewnia szybkości i wygody losowego dostępu od samego początku.
W jednym pliku o dowolnym rozmiarze, aby uzyskać szybki dostęp losowy, musisz mieć gwarancję położenia dowolnego fragmentu danych, co oznacza użycie indeksu (ponieważ surowe wyszukiwanie binarne przez fragmenty danych obniża wydajność i tworzy siatkę w twoim plik z „pustymi” punktami daje problem Byte56 ). Po opracowaniu systemu indeksowania, poprawieniu wydajności i napisaniu interfejsu API odtworzono coś w rodzaju systemu plików lub bazy danych. Chyba że faktycznie coś zyskasz, prawdopodobnie nie jest to warte inwestycji. Na przykład, Steam czerpie ogromne korzyści ze swoich formatów plików GCF / NCF.
Jeśli chcesz trochę zabezpieczyć swoje zapisy, nadal możesz to zrobić. Na przykład możesz zaszyfrować każdy pojedynczy fragment. Aby zapobiec ich usunięciu, możesz mieć centralny skrót oparty na istniejących zapisanych danych. Jeśli zapisane dane nie pasują do wartości skrótu (a program nie spowodował zmiany), fragment został usunięty.