You are on page 1of 18

Лекція 7. Робота з базою даних .

Засоби та методи роботи зі стиснутими


даними

1. Поняття бази даних (БД)


2. Системи керування базами даних
3. Переваги застосування системами керування базами даних (СКБД)
4. Функції СКБД. Ролі користувачів, що працюють БД
5. Моделі даних.
6. Методи архівації та стиснення даних
7. Методи архівації та стиснення даних
8. Прийом роботи з програмами-архіваторами
Методи архівації та стиснення даних.
Поняття технології стиснення даних
Розробка алгоритмів стиснення інформації відноситься до однієї з
галузей прикладної математики. В основі цих алгоритмів лежить принцип
усунення природної надмірності.
Стиснення даних — це процедура перекодування даних, яка
проводиться з метою зменшення їхнього обсягу, розміру, об'єму. Стиснення
базується на усуненні надлишку інформації, яка міститься у вихідних
даних. Стиснення даних, які не мають властивості надлишку (наприклад,
випадковий сигнал чи шум), неможливе. Також неможливо стиснути
зашифровану інформацію.
Методи стиснення даних діляться на два класи: стиснення без втрати
інформації (якщо можливе відновлення вихідних даних без спотворень)
та стиснення з втратою інформації (відновлення можливе з незначними
спотвореннями).
Стиснення без втрат — метод стиснення даних, при використанні
якого закодована інформація може бути відновлена з точністю до біта. Для
кожного з типів цифрової інформації, як правило, є свої алгоритми сжати без
втрат. Стискання без втрат використовується при обробці та збереженні
комп'ютерних програм і даних.
Стиснення з втратами інформації — метод стиснення даних, при
якому розпакований файл відрізняється від оригіналу, проте може бути
корисним для використання. Стиснення із втратами найчастіше
використовується для мультимедіа даних (аудіо, відео, зображення),
особливо для потокової передачі даних та телефонії. У цьому контексті такі
методи часто називаються кодеками .
Перевага методів стиснення із втратами над методами стискання без
втрат полягає в тому, що перші істотно перевершують за ступенем
стиснення, продовжуючи задовольняти поставленим вимогам. Методи
стискання із втратами часто використовують для стискання звуку або
зображень. У таких випадках розпакований файл може дуже сильно
відрізнятися від оригіналу на рівні порівняння «біт у біт», але практично не
відрізняється для людського вуха чи ока в більшості практичних застосувань.
Багато методів фокусуються на особливостях будови органів чуття
людини. Психоакустична модель визначає ті, наскільки сильно звук може
бути стиснений без погіршення сприйманої якості звуку. Помітні для
людського вуха чи ока недоліки, що виникли через стиснення із втратами,
відомі як артефакти стискання.
До алгоритмів стиснення з втратою інформації належать такі алгоритми
як JPEG (використовуються при стисненні фотозображень)
та MPEG (використовуються при стисненні відео та аудіо).
Величиною допустимої втрати при стисненні зазвичай можна керувати,
що дозволяє досягти оптимального співвідношення «розмір/якість». На
фотографічних ілюстраціях, призначених для відтворення на екрані, втрата
5% інформації зазвичай некритична, а в деяких випадках можна допустити
втрату в 20-25%.
Методи стиснення без втрати інформації застосовуються при роботі з
текстовими документами та програмами і не можуть допустити втрату
інформації. Вони засновані тільки на усуненні її надлишку.
Приклад 1. В українській мові 33 літери, десять цифр і ще приблизно
півтора десятки спеціальних символів. Для тексту, який записаний тільки
великими літерами (як у телеграмах) цілком вистачило б 60 різних
значень. Проте, кожен символ зазвичай кодується байтом, який містить 8
бітів і може виражати 256 різних кодів. Ця перша основа для надлишку. Для
«телеграфного» тексту цілком вистачило б 6 бітів на символ.

Мал. 1. Абетка Морзе
Приклад 2. У міжнародному кодуванні символів ASCII для кодування
будь-якого символу приділяється однакова кількість бітів (8). Водночас
очевидно, що символи, які найчастіше зустрічаються, мають сенс
кодувати меншою кількістю знаків. Так, наприклад, в азбуці Морзе
літери Е і Т , які зустрічаються часто, кодуються одним знаком
(відповідно це точка і тире). А такі рідкісні букви, як H і C, кодуються
чотирма знаками (рис. 1). Неефективне кодування - інша основа для
появи надлишку.
Програми, що виконують стиснення інформації, можуть вводити своє
кодування (різну для різних файлів) і приписувати до стислого файлу деяку
таблицю (словник), з якої розпаковує програму, дізнається, як у цьому файлі
закодовані ті або інші символи або їх групи.
Наявність фрагментів, що повторюються, — третя основа для
надлишку. У текстах це зустрічається рідко, але в таблицях і у графіці
повторення кодів — звичайне явище. Так, наприклад, якщо число 0
повторюється 20 разів підряд, то немає сенсу ставити 20 нульових
байтів. Замість них ставити один 0 і коефіцієнт 20. Такі алгоритми, що
засновані на виявленні повторів, називають методами кодування довжин
серій ( Run Length Encoding , RLE ). Цей підхід є досить ефективним для
графічних зображень у форматі «байт на піксел» (наприклад,
формати PCX або BMP ).
При створенні резервних копій на жорстких дисках є ще одна
можливість отримання виграшу в робочому просторі при стисненні файлів,
яка пов'язана не з надлишком інформації, а з тим, як організовано файлову
систему комп'ютера. Суть її полягає в тому, що будь-який файл, великий чи
маленький, може займати на диску лише ціле число кластерів. У файловій
системі FAT16 на жорсткому диску не може бути більше 65 536 кластерів
(2 16 ). А це означає, що для дисків розміром від 1 до 2 Гбайт розмір кластера
становить 32 Кбайт.
При ущільненні великої групи файлів в один файл економія складає
щонайменше по 16 Кбайт на кожному файлі тільки за рахунок скорочення
втрат від нераціональної організації файлової системи.
Для FAT32 виграш виявляється меншим, але і в цьому випадку
мінімальний розмір кластера дорівнює 4 Кбайт.
Попри те, що існує чимало різних методів стиснення, є
деякі принципи та правила , які є загальними для всіх методів стиснення. Їх
потрібно знати та правильно використовувати.
1. У будь-якого стиснення є межа , тобто ущільнення раніше
ущільненого файлу в кращому разі не дає виграшу, а в найгіршому випадку
може призвести і до програшу в розмірі результуючого файлу.
2. Для будь-якого методу стиснення можна підібрати файл, щодо якого
цей метод є найкращим .
3. Програми-пакувальники до початку роботи повинні виконувати
попередній перегляд оброблюваних файлів і вибирати той метод упаковки,
який у даному випадку дає найкращий результат .
Стискуватися можуть як один, так і кілька файлів, які в стислому
вигляді поміщаються до так званого архівного файлу або архіву .
Архів — це файл, який містить у собі один або кілька файлів та
метадані. Файли можуть бути як стиснені (без втрат), так і мати початкового
розміру та структури. Метадані можуть містити інформацію про початковий
розмір файлів, інформацію про формат файлів, структуру директорій,
коментарі до файлів, інформацію для відновлення архіву тощо.
Архіви файлів створюються за допомогою спеціалізованих програм —
архіваторів, які можуть бути як окремими програмами, так і частиною інших
програм.
Архіватор — програмне забезпечення, що використовується для
стиснення інформації.
Початковий файл – файл, що піддається стисненню.
Пакувальник – це програма, що перетворює масив символів у деякому
алфавіті в інший, бажано менший розмір. Часто у ролі цього масиву виступає
безструктурний двійковий файл, а у ролі символів вхідного алфавіту – 256
можливих значень байта.
Розпакувальник – програма, що здійснює зворотне однозначне
перетворення, тобто розпаковує архів.
Багатотомний архів – архів, розбитий на кілька частин
(томів). Багатотомні архіви широко використовуються при завантаженні
файлів з Інтернету.
Стиснення з можливістю завдання обсягу томів має ряд переваг:
 дозволяє завантажити файл частинами; у разі пошкодження одного або
кількох томів, проблема може бути усунена без повторного
завантаження всіх томів;
 дозволяє стискати дані за розміром того, для сумісності зі знімними
накопичувачами, наприклад, розбиття архіву на частини по 700 Мб
полегшити запис на CD.
Недоліком багатотомних архівів є те, що при пошкодженні одного з томів
неможливо відкрити повний архів.
Неперервний архів — архів, упакований таким чином, що всі стиснуті
файли розглядаються як один неперервний поток даних. При упаковці
шкірного файлу (крім першого) використовується інформація, що міститься у
попередніх файлах.
До переваг неперервного архіву слід віднести потенційне збільшення
ступеня стиснення. При цьому чим менший середній розмір файлів, більше
самих файлів і більше схожих один на одного файлів, тим більший рівень
стиснення.
Недоліки неперервного архіву:
 зміна неперервного архіву (тобто додавання або вилучення з нього
файлів) відбувається повільніше, ніж звичайного;
 витяг окремого файлу з середини або кінця архіву відбувається
повільніше, ніж з його початку, оскільки для цього доводиться
аналізувати всі попередньо упаковані файли;
 якщо неперервний архів виявиться пошкоджений, то не вдасться
витягти не лише пошкоджений файл, але і всі файли, що йдуть після
нього, тому під час створення неперервних архівів має сенс завжди
додавати інформацію для відновлення.
Критерієм для вибору є надійність носія стислої копії. Якщо
використовується досить надійний носій: жорсткий диск, магнітооптичний
диск, ZIP-накопичувач, JAZZ-накопичувач і т.п., можна використовувати
неперервний архівний файл. Якщо використовується ненадійний
накопичувач: гнучкий магнітний диск або магнітна стрічка стримера,
застосування неперервних архівів не рекомендується.
Саморозпакувальний архів ( self-extracting archive , SFX ) — файл,
комп'ютерна програма, що поєднує в собі архів та виконуваний код для його
розпакування. Він має розширення імені .ЕХЕ . Такі архіви, на відміну від
звичайних, не вимагають окремої програми для їх розпакування (отримання
вихідних файлів, з яких вони створені), якщо виконуваний код можна
виконати у зазначеній операційній системі. Це зручно, коли невідомо, чи є у
користувача, якому передається архів, відповідна програма розпакування.
Дані в архіві можуть бути зашифровані будь-яким способом. При
використанні універсальних архіваторів зазвичай використовується просто
шифрування за паролем.
Коефіцієнт стиснення ( КС ) – характеристика міри стиснення, яка
показує, у скільки разів зменшився обсяг початкового файлу. Визначається як
відношення об'єму стислого файлу V до обсягу початкового
файлу V П , виражене у відсотках:

.
Міра стиснення залежить від використовуваної програми, методу
стиснення та типу початкового файлу. Найдобріше стискаються графічні,
текстові файли та файли даних, для яких міра стиснення може досягати 5-40
%, менше стискаються файли виконуваних програм та завантажувальних
модулів – 60-90 %. Майже не стискаються архівні файли.
Основні формати упаковки даних
Нині застосовується декілька десятків програм-архіваторів, які
відрізняються переліком функцій і параметрами роботи, проте кращі з них
мають приблизно однакові характеристики. З числа найбільш відомих
програм можна виділити ARJ, ICE, HYPER, CAB, ZIP, РАК, ZOO,
EXPAND, RAR, 7Z.
Існує ще один цікавий клас програм, які також можна віднести до
архіваторів. Це пакувальники виконуваних файлів (тобто файлів з
розширенням .com і .ехе). Після упаковки виконувані файли залишаються
працездатними, і їх можна запустити без яких-небудь додаткових операцій.
Міра стиснення досягає 10-50 %. Останнім часом виробники програмних
продуктів упаковують виконувані файли. Крім того, є утиліти стиснення
диска, що упаковують файли «на льоту», у момент запису на диск, і
розпаковують їх в процесі читання. Ці програми прозорі для користувача, і
при роботі з ОС видимих змін не відбувається.
Серед усієї безлічі різних форматів упаковки можна виділити формати,
що найчастіше зустрічаються .ZIP, .RAR і .7Z.
ZIP — формат стиснення та архівації даних. Файл цього формату
зберігає у стиснутому або не стиснутому вигляді один або декілька файлів.
Використовує LZW-стиснення, яке не вносить спотворень і втрат. ZIP є
стандартним форматом в ОС Windows.
ZIP— достатньо простий формат, що окремо стискує кожен файл.
Через це є можливість видобувати окремі файли без читання всього архіву; в
теорії це дозволяє отримати краще стиснення, використовуючи різні
алгоритми для певних типів файлів. Проте, недоліком цього методу є те, що
упакований архів з великою кількістю файлів буде значно більшим, ніж якби
він був стиснений як один файл.
Разом з безліччю утиліт, що працюють з zip-файлами з командного
рядка, в середині 1990-х років з'явилися і графічні zip-програми. Серед них
однією з найпопулярніших стала WinZip.
ZIP став де-факто стандартом для компресії даних. Безліч
конкуруючих архіваторів, крім свого власного, також підтримують
формат ZIP. Цей спосіб стиснення також широко використовується в інших
програмах і навіть в деяких форматах файлів.
RAR — поширений формат стиснення даних і програма-архіватор,
розроблений російським програмістом Євгенієм Рошалом. Він написав
програму-архіватор для пакування/розпаковування RAR, спочатку під DOS,
потім і для інших платформ. Версія для Microsoft Windows
розповсюджується у складі багатоформатного архіватора з графічним
інтерфейсом WinRAR.
Програма WinRAR за споживчими властивостями об'єктивно
перевершує усі інші архіватори. У міжнародному секторі Інтернету цей
формат використовують професіонали. Оскільки WinRAR дозволяє
працювати також з архівами у форматах .ZIP, .ARJ і деяких інших, він
загалом задовольняє більшість потреб користувача в засобах стискування
інформації.
Основные возможности:
 Создание архивов форматов RAR и ZIP.
 Распаковка архивов форматов
CAB, ARJ, LZH, TAR, GZ, ACE,UUE, BZIP2, JAR, ISO, 7z, Z.
 Возможность шифрования архивов с использованием
алгоритма AES  (Advanced Encryption Standard - Улучшенный стандарт
1

шифрования) в режиме CBC с длиной ключа 256 бит (128 бит в версии
4).
 Возможность работы с файлами размером до 8,589 млрд. (примерно 8 x
109) гигабайт.
 Создание самораспаковывающихся, непрерывных и
многотомных архивов.
 Добавление в архивы дополнительных данных для
восстановления архива в случае его повреждения, а также создание
специальных томов для восстановления, позволяющих восстановить
многотомный архив при повреждении или даже полном отсутствии его
отдельных томов.
 Полная поддержка файловой системы NTFS и имён файлов в Юникоде.
 Поддержка командной строки.
7-Zip — файловий архіватор з високим ступенем стиснення. Програма вільно
поширюється. Вона підтримує формати: повністю – 7z, ZIP, gzip, bzip2, tar;
частково (тільки розпаковування і перегляд)
– CAB, RAR, ARJ, cpio, RPM, deb, ar, Z, LZH, Compiled
HTMLHelp, SPLIT.
Є можливості створення саморозпакувальних архівів, багатотомних архівів,
шифрування архівів алгоритмом AES з довжиною ключа 256 біт.
У більшості випадків ступінь стиснення вищий, ніж в RAR, за
винятком деяких мультимедіа даних. Швидкість стиснення при цьому нижче,
але не критично (як правило, не більше ніж на 30 %).
Методи стиснення даних
Методи стиснення текстової інформації мають досить довгу історію. У
основі алгоритмів стиснення подібної інформації лежить принцип мінімізації
надлишку. Фундаментальна теорема Шеннона про кодування
джерел говорить про те, що вартість кодування завжди не менше ентропії
джерела, хоча може бути скільки завгодно близька до неї *. Це твердження
встановлює теоретичні межі стиснення даних.
Основним поняттям теорії інформації є ентропія, яку можна
неформально розглядати як міру кількості інформації в повідомленні.
Під вартістю кодування розуміється середня довжина кодового слова (у
бітах), що доводиться на один символ початкового тексту. Тоді надлишок
кодування дорівнює різниці між вартістю кодування і ентропією
початкового повідомлення в перерахунку на один символ.
Кодування має справу з потоком символів в деякому алфавіті, причому
частоти появи символів різні. Метою кодування є перетворення потоку
символів в потік бітів мінімальної довжини. Це досягається за рахунок
зменшення надлишку вихідного потоку шляхом обліку частоти появи
символів на вході: довжина коду має бути пропорційна інформації, що
міститься у вхідному потоці.
Якщо розподіл частот символів відомий, то можна побудувати
оптимальне кодування. Завдання ускладнюється, якщо цей розподіл
заздалегідь невідомий. В цьому випадку існує два різні підходи:
1) проглянути вхідний потік і побудувати кодування на основі зібраної
статистики (при цьому знадобиться два проходи по файлу). У вихідний потік
у такому разі має бути записана схема застосованого кодування, яка буде
використана потім декодером. Прикладом такого кодування є статичне
кодування Хаффмена;
2) використовувати адаптивний кодер. Ідея полягає в тому, щоб
міняти схему кодування залежно від початкових даних. Такий алгоритм
однопрохідний і не вимагає передачі інформації про використане кодування
в явному виді. Замість цього декодер, який читає кодований потік, синхронно
з кодером змінює схему кодування. Адаптивне кодування дає велику міру
стиснення, оскільки враховуються локальні зміни частот. Прикладом
є динамічне кодування Хаффмена.
Статистичне кодування Хаффмена перетворює вхідні символи, які
закодовані 8-бітовими двійковими послідовностями, у вихідні символи,
закодовані послідовностями 0 і 1 змінної довжини. Довжина коду для
символу пропорційна двійковому логарифму його частоти з негативним
знаком. Кодування Хаффмена є префіксним, що дозволяє його декодувати
однопрохідним алгоритмом.
Префіксний код — це код зі словом змінної довжини, що має таку
властивість: якщо в код входить слово a, то для будь-якого
непорожнього рядка b слова ab в коді не існує. Хоча префіксний код
складається зі слів різної довжини, ці слова можна записувати без
розділового символу. Наприклад, код, що складається з слів 0, 10 і 11, є
префіксним, і повідомлення 01001101110 можна розбити на слова
єдиним чином: 0 10 0 11 0 11 10. Навпаки, код, що складається з слів 0,
10, 11 і 100, префіксним не є, і те саме повідомлення можна трактувати
декількома способами.
Префіксний код зручно представляти у вигляді двійкового дерева, у якого
символи знаходяться в листі, а дуги помічені 0 або 1. Тоді код символу
можна задати як шлях від кореня дерева до листа, що містить цей символ.

You might also like