Автор: Curt Monash
Дата публикации оригинала: 2008-08-08
Перевод: Олег Кузьменко
Источник: Блог Курта Монаша

Я уже много писал о сжатии данных в СУБД, ориентированных на хранилища данных; поставщики предподносят компрессию как одно из основных достоинств их продуктов, которое приносит непосредственную выгоду клиентам. Наиболее примечательной, вероятно, является короткая статья, которую Майк Стоунбрейкер (Mike Stonebraker) написал для этого блога, о тех преимуществах в области компрессии, которыми обладают СУБД с хранением данных по столбцам перед теми, в которых данные хранятся построчно, еще до того, как он и его коллеги открыли свой блог. Компрессия уже давно играет одну из главных ролей в истории DATAllegro, в то время, как Netezza занялась этим вопросом совсем недавно. Одной из причин, почему Teradata поставлена в невыгодное положение в плане ценовой политики, может служить как раз слабая компрессия. И так далее.

Поставщики универсальных СУБД тоже энергично работают над сжатием данных. Microsoft SQL Server 2008 использует компрессию несколькими способами (хранение данных, репликация и перенос журнала транзакций, создание резервной копии). И Oracle тоже предлагает сжатие данных, смотрите пространную статью Дона Берлесона (Don Burleson).

Если бы мне пришлось подвести итог тому, что мы знаем и не знаем о сжатии в базах данных, я думаю, что я бы начал со следующего:

  • В СУБД с хранением данных по столбцам действительно сжатие выполняется существенно лучше, чем в СУБД, в которых данные хранятся построчно. Вероятно, это происходит по следующим причинам:
    • Большая часть столбца помещается в один блок, поэтому алгоритмы сжатия работают лучше.
    • Используется большее количество схем сжатия (например, дельта-компрессия, сжатие с использованием словаря и токенов, которое также применяется в системах с хранением по строкам).
  • Создается ощущение, что у CУБД, ориентированных на хранилища данных, дела с компрессией обстоят лучше, чем у универсальных СУБД. По-видимому, это происходит благодаря сочетанию двух причин:
    • Их создатели больше стараются.
    • Они используют блоки большего размера.
  • Несмотря на все эти вполне резонные обобщения, разные СУБД, вполне сравнимые между собой по другим параметрам, добились очень разной степени успеха в реализации компрессии.

Сжатие является одной из самых важных характеристик, которой может обладать система управления базами данных, поскольку благодаря сжатию удается сэкономить на емкости системы хранения и иногда добиться неплохого повышения производительности. Поэтому компрессия должна быть одним из ключевых факторов, рассматриваемых при принятии решения о покупке любой СУБД.

Ссылки на статьи Курта по следующим категориям (на английском языке):
Columnar database management, Data warehousing, Database compression


Для удобства отслеживания новых публикаций рекомендуем подписаться на рассылку или на канал RSS.

Читайте также: