světNotes.cz

Nie je kompresia ako kompresia...
Novinky
18.03.2009 - Miroslav Uhlár

Teória
Príloha (attachment) v Notes dokumente sa môže z hľadiska komprimovania nachádzať v týchto stavoch:


Huffman komprimovanie sa využívalo už v starších verziách, s verziou R6 prišla možnosť použiť efektívnejší LZ1 (Lempel-Ziv) algoritmus. Mimochodom, aj toto je príspevok IBM laboratórií k Lotus brandu (viď článok).

To, v akom stave sa príloha nachádza, zistíte najjednoduchšie tak, že si vo vlastnostiach dokumentu vyhľadáte item $FILE:




Experiment
Aby som porovnal efektívnosť komprimácie, pripravil som si jednoduchý praktický experiment, kedy som:

Tento postup som realizoval pre prílohu v stave nekomprimovaná, Huffman i LZ1.

Príloha bez komprimovania
Veľkosť prílohy [kB]
Veľkosť dokumentu [kB]
Pred "zipovaním"
1 039
1 039
Po "zipovaní"
176
183
Huffman komprimovanie prílohy
Veľkosť prílohy [kB]
Veľkosť dokumentu [kB]
Pred "zipovaním"
1 039
574
Po "zipovaní"
176
183
LZ1 komprimovanie prílohy
Veľkosť prílohy [kB]
Veľkosť dokumentu [kB]
Pred "zipovaním"
1 039
300
Po "zipovaní"
176
183
Vzorová príloha bola NSF databázou, kde sme zipovaním získali až 90% priestoru. V prípade príloh typu .doc, .pdf, .odt a podobne je efektivita nižšia (v našej reálnej produktovej databáze s podobnými prílohami majú zozipované prílohy okolo 40 - 50% pôvodnej veľkosti).


Závery
Z výsledkov experimentu je možné odvodiť tieto závery:
1. Ak sa rozhodnete dodatočne zozipovať prílohy, tak je jedno, v akom stave komprimovania sú aktuálne uložené.
2. Ak súbory nebudete dodatočne zipovať, tak je najefektívnejšie natívne využiť LZ1 algoritmus.

Stojí teda zato zipovať prílohy? Ak ide primárne o zisk priestoru, tak určite áno. Na druhej strane je však faktom, že takto upravené prílohy sú ťažšie spracovateľné (editovanie, full-text prehľadávanie). Každopádne, ak nemáte archivačný content management systém, tak si týmto spôsobom môžete ponechať "poruke" v Notes databázach aj menej frekventovane používané prílohy (a to už nehovorím o rezervách v mail databázach...).


Tip 1: Ako v existujúcej databáze zabezpečiť komprimovanie všetkých existujúcuich príloh pomocou LZ1 algoritmu?
1. Zapnite voľbu "Use LZ1 compression for attachments" (Advanced database properties). Ak by ste chceli tento príznak zapnúť hromadne na viac databázach, tak použite Domino Administratora (záložka Files) resp. script na báze metódy db.setoption(DBOPT_LZCOMPRESSION, True).
2. Kompaktujte databázu príkazom load compact dbname.nsf -ZU

Tip 2: Ako dodatočne zipovať prílohy v Notes databáze?
Vytvorte si agenta na báze "java.util.zip" knižnice alebo použite aplikáciu ZIPPER, ktorá je dostupná na stránkach fy eDevelopment (sekcia Tipy).

Tip 3: Ako si urobiť prehľad o type komprimovania príloh vo všetkých databázach?
Pre tento účel je veľmi vhodná utilita DAOS Estimator, ktorá bola primárne vytvorená ako podpora pri plánovaní aktivovania DAOS (novinka R8.5, využívame už aj na "ostrých" serveroch, zatiaľ bez problémov - ale o tom možno niekedy nabudúce...). Po spustení analýzy je vytovrený pomerne detailný report, ktorý obsahuje v záverečnej sekcii požadované informácie, napr:

Total DB's analyzed: 273
Total DB's skipped due to errors: 0
Total Size of NSF's Examined: 18.6 GB
Total Attachments found: 51 910
Total Duplicate Attachments found: 8 703
Compression Statistics:
None: 29 631
Huffman: 21 612
LZ1: 667