Saya akan menyarankan agar tidak menggunakan file flat tunggal untuk jumlah data yang secara teori tidak terbatas.
Jika Anda memiliki jumlah data yang tidak terbatas secara teoritis maka Anda memerlukan akses acak , yang berarti banyak file atau database - atau format file datar yang diindeks, yang melibatkan pemecahan masalah indeks yang sudah diselesaikan oleh sistem file atau database.
Jika Anda menyebarkan potongan-potongan Anda di beberapa file, mendapatkan potongan di (-110, 5000) hanya masalah mengatakan "% APPDATA% / game / map / -110 / 5000.dat" (atau nama file lain jika Anda ingin mulai mengompres mereka). Database hanya perlu kueri. Jika sepotong tidak memiliki data, Anda tidak bisa menyimpan apa pun. Satu file datar tidak menawarkan kecepatan dan kenyamanan akses acak langsung.
Dalam satu file ukuran sewenang-wenang, untuk akses acak cepat Anda harus memiliki jaminan untuk posisi setiap potongan data, yang berarti menggunakan indeks (karena pencarian biner mentah melalui potongan data Anda akan merusak kinerja, dan membuat kisi di file dengan "kosong" tempat memberi Anda masalah Byte56 ). Setelah Anda mengembangkan sistem pengindeksan, berikan efisiensi dan tulis sendiri API, Anda telah membuat ulang sesuatu seperti sistem file atau database. Kecuali Anda benar-benar mendapatkan sesuatu dari melakukan itu mungkin tidak sepadan dengan investasi. Misalnya, Steam mendapat manfaat besar-besaran dari format file GCF / NCF mereka.
Jika Anda ingin beberapa keamanan disimpan, Anda masih bisa melakukannya. Misalnya, Anda dapat mengenkripsi setiap potongan individual. Untuk mencegahnya dihapus, Anda dapat memiliki hash pusat berdasarkan data yang tersimpan. Jika data yang disimpan tidak cocok dengan hash (dan program Anda tidak menyebabkan perubahan), sebagian telah dihapus.