Tôi sẽ khuyên bạn không nên sử dụng một tệp phẳng duy nhất cho lượng dữ liệu vô hạn về mặt lý thuyết.
Nếu bạn có một lượng dữ liệu vô hạn về mặt lý thuyết thì bạn cần truy cập ngẫu nhiên , có nghĩa là nhiều tệp hoặc cơ sở dữ liệu - hoặc định dạng tệp phẳng được lập chỉ mục, bao gồm giải quyết lại các vấn đề lập chỉ mục đã được giải quyết bằng hệ thống tệp hoặc cơ sở dữ liệu.
Nếu bạn trải rộng các đoạn của mình trên nhiều tệp, việc lấy đoạn mã ở (-110, 5000) chỉ là vấn đề "% APPDATA% / game / map / -110 / 5000.dat" (hoặc một số tên tệp khác nếu bạn muốn bắt đầu nén chúng). Cơ sở dữ liệu chỉ cần một truy vấn. Nếu một đoạn không có bất kỳ dữ liệu nào, bạn không thể lưu trữ bất cứ thứ gì. Một tập tin phẳng duy nhất không cung cấp tốc độ và sự thuận tiện của việc truy cập ngẫu nhiên ngay lập tức.
Trong một tệp có kích thước tùy ý, để truy cập ngẫu nhiên nhanh, bạn phải có sự đảm bảo cho vị trí của bất kỳ khối dữ liệu nào, có nghĩa là sử dụng một chỉ mục (vì tìm kiếm nhị phân thô qua các khối dữ liệu của bạn làm tổn thương hiệu suất và tạo lưới trong tệp có các điểm "trống" cung cấp cho bạn vấn đề của Byte56 ). Khi bạn phát triển một hệ thống lập chỉ mục, cung cấp cho nó hiệu quả và tự viết API, bạn đã tạo lại một cái gì đó như hệ thống tệp hoặc cơ sở dữ liệu. Trừ khi bạn thực sự đạt được điều gì đó khi làm điều đó có thể không đáng để đầu tư. Chẳng hạn, Steam hưởng lợi ồ ạt từ các định dạng tệp GCF / NCF của họ.
Nếu bạn muốn một số bảo mật cho khoản tiết kiệm của mình, bạn vẫn có thể làm điều đó. Chẳng hạn, bạn có thể mã hóa từng đoạn riêng lẻ. Để ngăn chúng bị xóa, bạn có thể có hàm băm trung tâm dựa trên dữ liệu đã lưu. Nếu dữ liệu đã lưu không khớp với hàm băm (và chương trình của bạn không gây ra thay đổi), một đoạn dữ liệu đã bị xóa.