Введение в DB2 9: Часть 1. Сжатие данных в DB2 9

Сократите потребность в дисковом пространстве для хранения данных, повысьте эффективность ввода/вывода и обеспечьте более быстрый доступ к дисковым данным с помощью реализованной в DB2® технологии улучшенного сжатия данных "Venom". В этой статье рассматриваются принципы действия, объясняются преимущества этой технологии и приводятся примеры экономии дискового пространства в результате ее применения. Дополнительную информацию о новых функциях DB2 9 можно найти в других статьях этой серии.

Рав Ахуджа, менеджер по разработке и сопровождению DB2, IBM

Рав Ахуджа (Rav Ahuja) работает в лаборатории IBM Toronto Lab в должности менеджера по разработке и сопровождению DB2 в различных странах мира. Он занимается DB2 для Linux, UNIX и Windows с первой версии, в течение этого времени Рав занимал различные должности, связанные с разработкой, технической поддержкой, маркетингом и товарной стратегией DB2. Работает с клиентами и партнерами по всему миру, помогая им создавать и использовать решения на основе DB2 и сервисов. Рав часто принимает участие в написании технических обзоров, статей и книг по DB2. Имеет ученую степень в области информационных технологий от университета Мак-Гилла и звание магистра в области управления бизнесом от университета Западного Онтарио.



08.06.2007

Введение

Системы дисковых хранилищ часто могут оказаться самыми дорогостоящими компонентами в решении базы данных. Для крупных хранилищ или баз данных с огромными объемами данных стоимость подсистемы хранения может легко превысить общую стоимость аппаратного сервера и программного обеспечения сервера данных. Поэтому даже небольшая экономия на подсистеме хранения может привести к существенному снижению затрат на решение базы данных в целом.

В этой статье рассказывается о технологии DB2 9 (ранее - "DB2 Viper") "Venom", которая позволяет сжать строки данных для снижения потребности в дисковом пространстве, повысить эффективность ввода/вывода и обеспечить более быстрый доступ к данным на диске.

Сжатие строк данных - как это работает

В технологии “Venom” в DB2 9 для сжатия строк данных реализован алгоритм, основанный на использовании словаря. За счет этого в DB2 9 можно сжать строки в таблицах баз данных посредством их сканирования, поиска повторяющихся данных и построения словарей, которые присваивают таким повторяющимся объектам короткие числовые ключи. Текстовые данные обычно хорошо сжимаются благодаря наличию повторяющихся строк, а также данных с большим количеством повторяющихся символов или предшествующих или замыкающих пробелов.

DB2 проверяет на наличие повторяющихся записей или шаблонов целые строки, а не просто отдельные поля или части строк. Для примера рассмотрим следующие две строки:

Таблица 1. Пример строк данных
Имя ОтделОкладГородШтатПочтовый Индекс
Фред50010000ПланоTX24355
Джон50020000ПланоTX24355

В этом примере сжатию подвергаются не только повторяющиеся значения ("500") в столбце "Отдел"; но и повторяющиеся шаблоны ( "Плано, TX, 24355"), объединяющие столбцы Город, Штат и Почтовый индекс, которые сжимаются как одно значение. На рисунке 1 приводится сравнение обычного хранения строк в DB2 и хранения в сжатом формате:

Рисунок 1. Сравнительная диаграмма хранения сжатых и несжатых данных
Сравнительная диаграмма хранения сжатых и несжатых данных

Словарь для поиска сжатых/восстановленных данных хранится в базе данных в скрытых объектах, занимая небольшое дисковое пространство, и кэшируется в оперативной памяти для ускорения доступа. Даже для очень больших таблиц словарь сжатия обычно имеет размер порядка 100 Кбайт. В практике могут встречаться экземпляры, в которых отдельные наборы данных сжимаются плохо или есть условия на размер данных, в результате чего существенное сжатие таких данных оказывается невозможным. В DB2 для выявления подобных случаев применяются интеллектуальные алгоритмы; сжатие не выполняется, если в результате не предвидится экономии дискового пространства.

Функция сжатия строк данных в DB2 для Linux®, UNIX®и Windows® аналогична функциям сжатия в DB2 для z/OS®; однако, она отличается от технологий сжатия на уровне страниц, которые предлагают другие разработчики баз данных, когда словарь сжатия создается для каждой страницы в базе данных. Если словарь сжатия создается на уровне таблицы, а не страницы, то анализируются шаблоны во всей таблице, что обычно выражается в повышении экономии дискового пространства при работе с DB2.

Включение сжатия

Сжатие строк данных в DB2 может быть включено в процессе создании таблицы при помощи параметра COMPRESS YES. Для уже существующей таблицы сжатие можно включить при помощи команды ALTER TABLE. Примеры:

CREATE TABLE Sales COMPRESS YES

Или,

ALTER TABLE Sales COMPRESS YES

Сжатие дает эффект только после создания словаря таблицы, что обычно происходит в фазе перестройки (REORG) таблицы.

Или,

REORG TABLE Sales

При сжатии большой таблицы может оказаться полезным сначала заполнить таблицу небольшим "представительным" набором образцов данных. Процесс построения словаря сжатия может происходить довольно быстро, если набор данных невелик. А если при этом используется хорошая представительная выборка, то сжатие будет отлично работать даже после добавления в таблицу новых данных, при этом DB2 не приходится анализировать новые данные. Однако если тип данных, которые хранятся в таблице, со временем изменится, словарь можно обновить при помощи инструкции REORG.

Предполагаемая экономия

DB2 предоставляет инструмент INSPECT, позволяющий определить предполагаемый коэффициент сжатия для определенной таблицы или набора данных. Этот инструмент собирает образцы данных таблицы и строит на их основе словарь сжатия. Впоследствии этот словарь используется для тестирования сжатия на основе записей, содержащихся в образце. По результатам тестирования оценивается экономия дискового пространства при сжатии.

INSPECT ROWCOMPESTIMATE TABLE NAME Sales … 
		RESULTS KEEP <имя_файла>
	
db2inspf <имя_файла> <выходной_файл>

Для просмотра результаты вывода инструмента INSPECT необходимо отформатировать с помощью утилиты DB2. Файлы находятся в каталоге db2dump. Пример вывода показан ниже.

  DATABASE: TEST  
  VERSION : SQL09010 
  2005-12-01-13.12.21.232959

  Action: ROWCOMPESTIMATE TABLE
  Schema name: RSAHUJA 
  Table name: Sales 
  ... 
      Percentage of bytes saved from compression: 66 
      Compression dictionary size: 2176 bytes. 
  ...

Преимущества сжатия строк данных

Технология сжатия "Venom" может сэкономить до 50% (или даже более) стоимости хранения за счет снижения объема дискового пространства и сокращения периферии дисковой подсистемы, необходимых для хранения данных. Размер журналов базы данных также может уменьшиться, поскольку DB2 сжимает пользовательские данные в записях журнала.

В некоторых случаях эта технология может также повысить производительность, несмотря на вызываемую сжатием/восстановлением данных загрузку ЦПУ. Доступ к данным на диске - это самая медленная операция базы данных. Если на диск сохраняются сжатые данные, то для извлечения или сохранения одного и того же объема данных потребуется меньше операций ввода/вывода. Следовательно, для рабочей нагрузки, связанной с операциями ввода/вывода (например, когда система ожидает/простаивает в ожидании доступа к данным на диске), время обработки запроса может быть заметно сокращено.

Более того, DB2 хранит данные в сжатом виде как на диске, так и в оперативной памяти (буферных пулах DB2), тем самым сокращая потребляемый объем памяти и высвобождая память для других операций базы данных или системы. Это может еще больше повысить производительность выполнения запросов и других операций.

Результаты (пример)

Объем сэкономленного с помощью сжатия строк дискового пространства в DB2 может быть различным в зависимости от свойств данных. Клиенты, работавшие с бета-версиями DB2 9, сообщают об экономии от 50 с лишним до 80 процентов для отдельных объемных установок баз данных. Для набора данных одного из клиентов, размер таблицы в 179.9 Гбайт со страницами по 32 Кбайт, был уменьшен до 42.5 Гбайт: экономия составила 76.4%!

На следующей диаграмме показано еще несколько примеров экономии дискового пространства в различных таблицах с помощью функции сжатия строк данных в DB2:

Рисунок 2. Примеры экономии дискового пространства с помощью сжатия строк данных в DB2
Примеры экономии дискового пространства с помощью сжатия строк данных в DB2

Как пишет Шон Мак-Коун (Sean McCown) в журнале InfoWorld:

"Новый метод сжатия делает возможным непосредственную экономию дискового пространства в среднем от 45 до 75 процентов, в зависимости от типа данных. Чтобы проверить это утверждение, я создал таблицу размером 40 Гбайт (примерно 500 миллионов строк) со смешанными (цифровыми и текстовыми) данными, экспортировал ее в текстовый файл, а затем импортировал в формат сжатой таблицы. Размер сжатой таблицы оказался равным примерно 17.75 Гбайт -- экономия составила 56 процентов.”

Ссылку на полный текст статьи можно найти в разделе Ресурсы.

Другие формы сжатия в DB2

Помимо сжатия строк данных, появившегося в составе технологии "Venom", DB2 предоставляет дополнительные механизмы для еще большего снижения потребности в дисковом пространстве. Среди них:

Сжатие значений NULL и значений по умолчанию

При таком типе сжатия, доступном в DB2 для Linux, UNIX и Windows с версии 8, значения NULL, строки нулевой длины в столбцах переменной длины и системные значения по умолчанию не занимают места на диске.

Сжатие резервных копий базы данных

Этот тип сжатия, доступный после установки пакета исправления Fixpak 4 в DB2 для Linux, UNIX и Windows V8, обусловливает меньший размер образов базы данных, в результате чего не только снижаются потребности в дисковом пространстве, но и облегчается перемещение резервных копий баз данных между системами.

Замена тэгов XML

Вербальный характер XML приводит к тому, что фрагменты и документы XML обычно занимают много места на диске. DB2 9 сохраняет XML-данные в синтаксически разобранном иерархическом формате, заменяя имена тэгов (например, employee) целыми значениями (например, 4). Повторяющимся тэгам присваиваются одинаковые числовые значения. Хранение текстовых тэгов с помощью целых значений не только снижает потребление дискового пространства, но и помогает повысить производительность при запросах к данным. Более того, синтаксический анализ XML (замена целыми значениями), как и сжатие данных, выполняется незаметно для пользователей и приложений и является для них полностью прозрачным.

Многомерная кластеризация

Форма сжатия индексов стала доступной в DB2 для Linux, UNIX и Windows с версии 8.1. Значительной экономии дискового пространства можно добиться с помощью блочных индексов, в которых используется один ключ (или запись в индексе) на тысячи записей (в отличие от одного ключа на одну запись в традиционных индексах).

Заключение

Сжатие строк данных в DB2 9 -это замечательная новая функция, которая может обеспечить значительную экономию дискового пространства и уменьшение стоимости хранения. Загрузите DB2 9 и сами попробуйте поработать с этой функцией, чтобы понаблюдать, сколько дискового пространства можно сэкономить.

Ресурсы

Научиться

Получить продукты и технологии

  • Загрузите DB2 9, чтобы поработать с функциями, описанными в этой статье;
  • Теперь у вас есть возможность использовать DB2 бесплатно. Загрузите DB2 Express-C, бесплатную версию DB2 Express Edition для сообщества разработчиков, которая предлагает все основные возможности работы с данными платной версии DB2 Express Edtion, что обеспечивает солидное основание для создания и размещения приложений;
  • Используйте в своем следующем проекте по разработке ознакомительные версии ПО, которые можно загрузить непосредственно с сайта developerWorks;

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Information Management
ArticleID=229651
ArticleTitle=Введение в DB2 9: Часть 1. Сжатие данных в DB2 9
publish-date=06082007