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:
- Nekomprimovaná - ak pri jej prikladaní vypnete checkbox "Compress"
- Komprimovaná Huffman algoritmom - ak mala databáza vypnutý príznak "Use LZ1 compression for attachments"
- Komprimovaná LZ1 algoritmom - ak mala databáza zapnutý príznak "Use LZ1 compression for attachments"
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:
- Vložil prílohu a zistil veľkosť dokumentu
- Následne prílohu zozipoval (priamo v Notes dokumente Java agentom) a zistil veľkosť prílohy i celého dokumentu
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