"Stian Haklev" <[EMAIL PROTECTED]> writes:
> (coba pake 7zip unextract one file dari 7z file dengan sejuta file -
> butuh berapa menit!)...
7z dan zip tidak menyimpan daftar resources di sebuah tempat tertentu
seperti formatmu. Penyimpanan resources di 7z dan di zip seperti
linked list dan tidak ada fasilitas indexing. Daftar resources disebar
keseluruh archive. Kalau resource yang dimaui kebetulan ada di sekitar
EOF, akan lama sekali untuk retrievenya.
Di formatmu ada resource index. Dengan cara ini sebuah resource bisa
di-retrieve dengan cepat.
Mengenai kebesaran filenya, teknik index yang kamu pilih menghasilkan
file yang gampang sekali besarnya sekitar 2**16 biarpun entry-nya
sedikit.
Contohnya:
------------------------------
#pakai zlib karena di sini belum di-install bz2 interface
#tapi seharusnya tidak ada artinya karena datanya hanya "bar"
archive = ZArchive::Writer.new("try.out", ZArchive::METHOD_ZLIB)
archive.add("foo", "bar")
archive.flush
$ stat -c '%n --> %s bytes' try.outg
try.out --> 524338 bytes
------------------------------
Memang untuk koleksi sebesar wikipedia, tidak ada artinya 1/2 MB itu.
Tapi saya penasaran, kenapa tidak memakai library yang sudah jadi?
Pada intinya, yang dimaui adalah some sort of key -> value mapping di
mana key-nya adalah resource identifier dan value-nya adalah lokasi di
file. Untuk hal itu, ada gdbm yang bindingnya comes standard with
ruby. Kalau mau getol SQL2xan, bisa juga pakai sqlite.
YS.