Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD-2007-0.doc
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
2.68 Mб
Скачать

9.3.8.4. Эффективная загрузка данных

Основные принципы процедуры загрузки данных можно определить следующим образом.

  • Массовая загрузка данных всегда предпочтительнее построчной, так как в этом случае индекс не обновляется, а заполняется в конце процедуры загрузки.

  • Загрузка в таблицу, не имеющую индекса, производится быстрее, чем загрузка в индексированную таблицу. При наличии индекса добавление производится не только в саму таблицу, но и в индекс, модифицируемый при каждом добавлении новых записей.

  • Короткие операторы SQL обрабатываются быстрее длинных: их синтаксический анализ происходит быстрее и собственно передача по сети происходит быстрее.

Из этих принципов следуют конкретные приемы повышения эффективности загрузки данных.

  • Оператор LOAD DATA всегда эффективнее оператора INSERT потому, что он загружает данные в массе. Обновление индекса при этом происходит значительно реже, а серверу нужно обработать только один оператор.

  • Оператор LOAD DATA эффективнее оператора LOAD DATA LOCAL. В первом случае сервер считывает файл непосредственно с диска, а во втором клиент считывает файл и отсылает его по сети на сервер, а это значительно медленней.

  • При необходимости использования оператора INSERT лучше воспользоваться формой, которая позволит произвести загрузку нескольких строк с помощью одного оператора. Например,

INSERT INTO tbl_name VALUES (…), (…), …

  • Максимально используйте возможность вставки значений по умолчанию. Опускайте в операторе INSERT те столбцы, которые можно ввести по умолчанию. Ваши операторы станут короче, уменьшится количество пересылаемых символов по сети на сервер.

  • При добавлении проиндексированных таблиц для уменьшения нагрузки можно воспользоваться пакетной вставкой (оператор LOAD DATA или многострочный оператор INSERT). Это уменьшит нагрузку на систему от обновления индекса. Индекс будет обновляться только после добавления всех строк.

  • Процедуру загрузки данных можно существенно ускорить, создав сначала таблицу без индексов, затем – загрузив данные, и только после этого создав индекс.

  • Значительно эффективнее перед загрузкой данных в проиндексированную таблицу сначала удалить индекс, затем загрузить данные и создать индекс снова.

9.3.8.5. Оптимизация для администратора

Оптимизация оставляет поле деятельности и для системных администраторов, которые управляют сервером MySQL или машиной, на которой он работает. Есть параметры (переменные), которые администратор может настроить.

  • Delayed_queue_size. Эта переменная определяет количество строк оператора INSERT DELAYED, которые могут храниться в очереди до тех пор, пока клиенты, выполняющие другие операторы INSERT DELAYED, не будут заблокированы. Увеличение значения этой переменной позволит серверу принимать больше строк запроса этого типа. И больше клиентов сможет работать без блокировки.

  • Key_buffer_size. Это размер буфера, в котором хранятся блоки индекса. Если на сервере достаточно памяти, увеличение этого значения сократит время создания и модификации индексов. Чем больше этот размер, тем больше можно одновременно хранить индексных блоков. Это увеличивает вероятность выборки ключевых значений без подкачки новых блоков с диска.

Дополнительные средства и возможности администратора, касающиеся аппаратной платформы, позволяющие увеличить производительность сервера:

  • Добавление оперативной памяти. Это увеличит размеры КЭШа и буферов сервера. Тем самым можно добиться более частого использования информации, хранящейся в памяти, при уменьшении необходимости подкачки информации с диска.

  • Для сокращения задержек операций ввода/вывода поставьте более быстродействующие диски. Время поиска является наиболее критическим фактором, влияющим на производительность.

  • Старайтесь разделить дисковые операции между различными физическими устройствами. Использование различных логических разделов будет недостаточно. Это не поможет, так как логические разделы будут конкурировать за один и тот же физический ресурс (головки диска).

  • Если достаточно оперативной памяти для свопинга, переконфигурируйте свою систему таким образом, чтобы убрать все другие устройства свопинга. (Свопинг – это обмен виртуальными страницами между оперативной памятью и жестким диском).

Проблемы сжатия информации на современном этапе.

Развитие Internet, прогресс в технологии производства цифровых камер, сканеров, принтеров привели к широкому использованию цифровых изображений.

Отсюда интерес к улучшению алгоритмов сжатия данных, представляющих изображения. Сжатие данных важно как для скорости передачи, так и эффективности хранения.

Выявление структуры данных – ключевой аспект эффективного представления и хранения этих данных. Методы фрактального кодирования и витвлет-преобразования используют два различных подхода к обнаружению структуры в данных изображения.

Барнсли и Слоун впервые увидели возможность применения теории систем итерируемых функций к проблеме сжатия изображений (1990).

Джеквин (1991) представил метод фрактального кодирования, в котором используются системы доменных и ранговых блоков изображения. Этот подход стал основой для большинства методов фрактального кодирования, изменяемых сегодня.

Он был усовершенствован Фишером и др.

В соответствии с данным методом изображение разбивается на множество неперекрывающихся ранговых подызображений и определяется множество перекрывающихся доменных подызображений. Для каждого рангового блока алгоритм кодирования подходит наиболее подходящий доменный блок и аффинное преобразование, которое переводит этот доменный блок в данный ранговый блок. Структура изображения отображается в систему ранговых блоков, доменных блоков и преобразований.

Сегодня основная проблема заключается в сокращении времени кодирования. Оказались эффективными два метода: метод выделения особенностей (feature extraction) и метод классификации доменов (classification of domains).

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

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

В качестве конкурирующей технологии сжатия можно назвать технологию JPEG (Joint Photographic Experts Group).

С математической точки зрения, изображение в градациях серого можно представить как вещественную функцию f двух вещественных переменных х и у.

Функция изображений f(x,y) обычно определяется в прямоугольной области плоскости. Т.к. изображение ‘не знает’ в какой области оно определено, обычно считается, что эта область - единичный квадрат [0.1] x [0.1].

Значения градаций серого – это вещественные числа.

Полноцветным изображениям соответствуют векторные функции на плоскости.

Есть различные способы представления цветовой информации.

Электронные системы представления, компьютерное представление, представляют цвет как комбинацию красного, зеленого и синего цветов (RGB). Печатающие системы для передачи цвета в дополнение к черному используют голубой, красный и желтый (СМУК). В любом случае цвет представляется как трехмерный вектор.

Алгоритмы кодирования, которые применяются для изображений в градациях серого, могут применяться к каждому из компонентов цветного изображения.

Можно было бы ожидать, что задача позирования цветного изображения втрое труднее, - чем задача кодирования изображения в градациях серого, но в действительности все не так сложно. Можно использовать особенности человеческого восприятия цвета, чтобы снизить требования к кодированию полноцветных изображений.

Человеческое восприятие изображений – аналоговый процесс, а мир компьютеров – это цифровой мир. Компьютерное представление изображения в градациях серого – это двумерный массив неотрицательных чисел. Каждый элемент массива – это пиксел изображения. Можно сопоставить каждому пикселу неотрицательное целое число из ограниченного диапазона. Этот диапазон может быть представлен как 256 градаций серого или в терминах количества бит, необходимых для представления значения, как 8 бит на пиксел.

Рис.2.27. Схема процесса сжатия информации

Цифровое изображение – это массив значений пикселов, который можно представить в виде списка чисел. Задача сжатия состоит из двух основных частей: кодирования и декодирования.

Кодирование – исходный список чисел, такой, чтобы, по возможности, сократить требуемый под массив объем памяти. Декодирование – обратный процесс.

Если декодирование изображения всегда в точности соответствуют исходному изображению, то алгоритм кодирования-декодирования называется алгоритмом без потерь, если отличается, то алгоритм с потерями. Фрактальный и вейвлет-методы – это алгоритмы с потерями, как и большинство алгоритмов сжатия.

Есть два способа, которыми можно сжать набор данных, представленный в виде списка чисел.

Можно сделать список короче (меньшее количество чисел) или сделать короче сами числа, чтобы они использовали в среднем меньшее количество бит для представления каждого числа. Полные схемы сжатия применяют оба эти подхода. На рис.2.25 представлен первый из этих подходов.

Этот класс алгоритмов включает методы преобразования Фурье и дискретного косинус-преобразования (DCT), которые являются основой большинства методов сжатия JPEG. Он также включает вейвлет-преобразование и фрактальные методы.

Идея методов преобразования состоит в том, чтобы преобразовать данные изображения к другому виду, где легче определить часть данных, которую можно было бы безболезненно удалить. Это позволяет отбросить значительную часть данных с небольшой потерей качества изображения. В случае преобразования Фурье это обычно высокочастотные сигналы. Для вейвлет-преобразования это данные, соответствующие мелким деталям. Фрактальные методы пытаются непосредственно представить информацию об изображении в компактной форме.

Результат алгоритмичного кодирования может быть, затем сжат путем компактного представления закодированных чисел. Дискретизация (квантование) может дать как уменьшение количества чисел в списке, так и уменьшение количества бит, необходимых для записи числа.

Цифровые изображения по своему определению уже являются дискретизированными некоторым образом еще до этапа кодирования.

Энтропийные методы кодирования, такие как методы Хаффмана, и арифметическое кодирование проверяют распределение значений, чтобы достичь эффективного представления в битах каждого значения. Значениям, которые встречаются в списке чаще, сопоставляется меньшее количество бит, а более редко встречающимся значениям сопоставляется большее количество бит.

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

Информация, энтропия, моделирование данных

Пусть А - некоторое событие появляющееся с вероятностью Р(А).

Тогда информация, сопоставленная А, определяется как

(1)

Когда Р(А) величина, то i(A) мало, а когда Р(А)=1, i(A)=0.

Маловероятные события несут очень много информации, в то время как достоверные события несут очень мало информации.

Например, если сказать что на Чукотке найдет снег, то вы не дадите много информации. Но если вы скажете, что в Африке найдет снег, то потом, возможно, станете свидетелем бума на рынке апельсинового сока.

В литературе по теории информации процесс, который порождает случайные события Аj, называется источником.

Предположим, что имеется множество независимых событий Аj, появляющихся с вероятностями Р(Аj). Энтропия источника, сопоставленного этим событиям,- это средняя информация:

(2)

Будем рассматривать изображения в качестве источников.

Предположим, что Аj, j=1,2,…,n представляет последовательность пикселов изображения, и пусть Х, основание логарифмической функции в (1), равно 2.

Тогда энтропия изображения – это мера среднего количества бит, необходимых, чтобы закодировать значения пикселов.

Вообще, мы не можем знать истинную энтропию источника, т.к. мы не знаем истинные значения Р(Аj) в (2). Мы можем оценить значения Р(Аj) и использовать (2), чтобы получить оценки явной энтропии (apparent entropy) источника.

Распознавание структуры данных может уменьшать явную энтропию. Например, книга Клайда Сейвуда.

Начинаем с последовательности

12123333123333123312

Если мы игнорируем структуру и рассмотрим числа по отдельности, то увидим три символа 1,2,3, которые появляются со следующими вероятностями:

Р(1)=5/20=0,25

Р(2)=5/20=0,25

Р(3)=10/20=0,5

Явная энтропия будет

-(0,25log2(1/4)+0.25log2(1/4)+0.5 log2(1/2)=1.5 бит на символ

Однако, если мы рассмотрим числа последовательности по два, то обнаружим структуру: 12 и 33 всегда появляются вместе, и полная последовательность состоит только из этих двух символов. Кроме того,

Р(12)=5/10=0,5

Р(33)=5/10=0,5

и явная энтропия

-(0,5 log2(1/2)+0,5 log2(1/2))=1 бит на символ

В первом случае требуется (1,5) (20)=30 бит чтобы закодировать последовательность, во втором – 10бит .

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

Методы преобразований (например, вейвлет-методы) структурируют область преобразования, что тоже уменьшает явную энтропию и приводит к сжатию.

Энтропия – основа методов кодирования Хаффмана и арифметического кодирования. Имея любую последовательность значений данных, например, результат применения фрактальной или вейвлетной схемы сжатия, можно всегда применить к ней энтропийный метод кодирования, например, метод Хаффмана или др. Эти методы исследуют распределение значений данных и присваивают низкий битрейт (bit rates – скорость потока) часто встречающимся значениям и высокий битрейт редко встречающимся значениям.

Скалярное и векторное квантование

Другой способ сокращения объема записанной информации – квантование.

Скалярное квантование сокращает точность скалярных параметров до некоторого определенного уровня. Например, 16- или 32-битные числа могут быть сокращены до 8 бит. В этом случае мы имеем 256 уровней квантования. Квантование может быть равномерным и неравномерным.

Равномерное квантование располагает уровни квантования равномерно по диапазону числовых значений. Этот вид квантования лучше всего работает, когда квантируемые значения распределены равномерно.

Если значения распределены неравномерно, может быть полезно, сконцентрировать большее количество уровней квантования в области наивысшей плотности числовых значений.

Децимация – один из примеров неравномерного квантования. Децимация состоит в обнулении части числовых значений. Эта часть может быть определена или как некоторый % от общего количества значений, или с помощью проверки порогового значения.

Например, один из подходов к вейвлет-сжатию изображений заключается в том, чтобы положить равным нулю некоторый процент, например, 90%, вейвлет-коэффициентов. Квантование оставшихся значений состоит просто в сохранении этих значений. Количество уровней будет равным нулю плюс количество различных значений из 10% оставшихся коэффициентов (этих оставшихся 10% коэффициентов достаточно, чтобы получить после восстановления вполне удовлетворительное декодированное изображение).

При векторном квантовании массив значений заменяется единственным квантованным числом. Векторное квантование удобно при кодировании цветных изображений. В цветных изображениях цвет пиксела обычно представляется триплетом значений. В системе RGB этот триплет состоит из значений красного, зеленого, голубого цветов. Для воспроизведения цветного изображения должен быть сохранен весь вектор (R, G, B). В 24-битном цветном изображении на каждое из трех значений для каждого пикселя отводится 8 бит. В этом случае данному пикселу может быть поставлено в соответствие любое значение из трехмерного RGB-пространства. Однако хорошее приближенное к исходному изображению может быть получено и в том случае, если мы ограничим множество значений цвета пиксела некоторым конечным списком RGB-векторов. Такая схема называется цветовой картой (color map) или, в Windows приложениях, палитрой (palett). Например, цветовая карта или палитра, может содержать 256 значений, поэтому для хранения индекса такого списка требуется только 8 бит. В этом списке, т.к. цветовая карта известна, каждый пиксел может быть представлен 8 битами вместо исходных 24.

Выбор цветовой карты влияет на качество аппроксимируемого изображения. В общем списке при векторном квантовании выбор наилучшего списка, называемого в основных приложениях векторного квантования кодовой книгой (codebook), является нетривиальным. Один подход заключается в использовании адаптивной кластеризации данных. Согласно этому подходу, значения кластеров становятся элементами кодовой книги. При векторном квантовании кодовая книга должна быть известна декодеру и обычно зависит от данных. Это означает, что кодовая книга должна храниться вместе с декодированными данными, что уменьшает эффективность сжатия.

Рис.2.28. Схема применения векторного квантования к цветному RGB изображению.

Значения красной (R), зеленой (G) и синей (B) составляющих цвета пиксела образуют вектор длиной 3. При кодировании отыскивается ближайший элемент из таблицы векторов, называемой кодовой книгой. Сохраняется только индекс элемента в таблице.

При декодировании этот индекс преобразуется снова в вектор. Декодеру необходимо знать таблицу кодовой книги. Нахождение оптимальной кодовой книги – нейтральная задача.

Методы преобразования

JPEG – наиболее распространенный стандарт сжатия изображения. Те, кто используют JPEG, могут выбрать или версию сжатия без потерь, или один из нескольких вариантов сжатия с потерями. Версии сжатия с потерями обеспечивают лучшую степень сжатия.

Коэффициент сжатия и качество восстановленного изображения могут регулироваться путем выбора параметра. Основа для версий сжатия JPEG с потерями – дискретное косинус- преобразование, которое является разновидностью преобразования Фурье. Для достижения сжатия к коэффициентам преобразования применяется квантование.

Сжатие JPEG без потерь применяет линейно-предсказывающее кодирование (liner predictive coding). Линейное предсказание для достижения сжатия использует соотношение между соседними пикселами. Это пример поиска внутренней структуры в изображении, и, следовательно, сокращение явной энтропии.

У метода JPEG есть видеособрат, формат MPEG (Moving Picture Experts Group).

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

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

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

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

Так, фрактальные методы подходят к моделированию фундаментальной структуры изображения с совершенно новых позиций.

Комитет по стандартизации JPEG признал, что первоначальный стандарт JPEG, разработанный более 10 лет назад, должен быть обновлен, чтобы удовлетворять вопросы пользователей, работающих с цифровыми изображениями.

Комитет активно разрабатывает стандарт JPEG 2000, который использует вейвлет-технологию вместо методов сжатия, основанных на дискретном косинус-преобразовании Фурье первоначального стандарта JPEG.

Цветные изображения

Цвета пикселов цифрового цветного изображения определяются тремя значениями – красный, зеленый, синий – в системе RGB, используемой для большинства дисплеев (системы печати используют для рисунков голубой, малиновый, желтый цвета и дополнительно черный СМУК).

Благодаря человеческому восприятию цвета, значения RGB можно преобразовать, и это обеспечивает большую степень сжатия.

Значения RGB преобразуются к значениям YIQ, где Y – это яркость (luminance), I – цвет (hue), Q – насыщенность (saturation). Обозначения I и Q возникли из терминов из области обработки сигналов: in-phase (I) – синфазный и quadrature (Q) – квадратура.

Оказывается, что каналы I и Q могут быть значительно сжаты с неощутимой потерей количества.

В целом степень сжатия цветного изображения оказывается большей, чем возможная степень сжатия для изображения в градациях серого в 2-2,7 раза. Преобразования из RGB в YIQ и обратно являются линейными.

Например, матрица, представляющих преобразование и его инверсию:

Цветное телевидение в Северной Америке использует представление YIQ.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]