Jeśli są to bardzo małe pliki to rozmiar zip'a wzrośnie przez niepotrzebne nagłówki do niemal pustych plików. To, że plik np. zajmuje 1 bajt to niestety nie oznacza, że system plików nie musi gromadzić dodatkowych danych o nim jak prawa dostępu, daty utworzenia, nazwa itp.
Problemem, który opisałeś w temacie było wpakowanie większej ilości plików w zip'a a nie znalezienie zamiennika dla archiwum - pisanie w takim przypadku o rozwiązaniu problemu jest mylące i sugeruje, że jednak ci się to udało, ale nie powiesz jak.
Jednak baza danych to prawdopodobnie najlepszy sposób do przechowywania takich danych jak określiłeś czyli małych, w dużej ilości. Oczywiście nie podałeś też informacji jak często będziesz zapisywał to do bazy - czy jest to tylko jednorazowy backup czy jednak "żywa" baza z ciągłymi modyfikacjami.
Oczywiście - w ogólnym ujęciu masz rację.
W pierwszym podejściu zasugerowałem się rozwiązaniem, które funkcjonuje w oprogramowaniu konkurencyjnym do tego, dla którego piszę swoją nakładkę (żaden z programów "bazowych" nie jest mojej produkcji - zajmuję się tylko ich serwisowaniem) - tam tworzone jest milion plików ZIP przechowujących dokładnie po jednym pliku XML o rozmiarze 2 kB. W rozwiązaniu konkurencyjnym zysk z tego jest taki, że archiwum jest zahasłowane, ponieważ plik XML zawiera dane wrażliwe.
Ja chciałem napisać podobną funkcjonalność, ale przechowywać wszystkie pliki XML w jednej paczce, ponieważ moja nakładka może równocześnie obsługiwać wiele baz danych, więc pasowało mi, żeby zawartość paczek dawała się łatwo identyfikować. W tym celu oprócz samych plików XML w paczce zip lądował zawsze plik header.xml z informacjami kogo dotyczy dana paczka.
Porządkowanie odbywa się raz dziennie dla każdej bazy danych i polega na tym, że te dane, które aktualnie nie są wykorzystywane przez aplikację macierzystą, a zapychają potężnie bazę danych - lądują w archiwum, a drugim etapie baza napełniana jest danymi z archiwum, co do których zaszła potrzeba wykorzystania.
Oczywiście - całość jest sporo bardziej skomplikowana, ale generalnie całość działała poprawnie na plikach ZIP do czasu aż ze skali mikro (kilkaset testowych rekordów) przeszedłem do skali makro z kilkuset tysiącami plików - ogólna wydajność jest zadowalająca i nie mam co do niej zastrzeżeń.
Oczywiście tak jak piszesz - to nie jest rozwiązanie problemu z plikami ZIP, tylko zmiana sposobu myślenia i tylko pod tym kątem pisałem, że "rozwiązałem problem inaczej".
Owszem przepompowywanie danych z jednej bazy do drugiej ma swoje minusy, ale ma wiele plusów - włącznie z tym, że mogę stosować indeksy, przechowywać wiele plików XML w jednej bazie - rozróżniając je odpowiednimi identyfikatorami pochodzenia i po prostu stosować banalne zapytania SQL w celu wyłuskania niezbędnych danych potrzebnych do zwrotnego przepompowania danych do baz macierzystych.