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

Наиболее часто программы и исходные данные перед вводом в ЭВМ перфорируются на картах. Рассмотрим возможные способы набивки информации на карты.

КОД ХОЛЛЕРИТА

При работе на машинах фирмы IBM стандартным способом перфорации символьной информации на картах является перфорация в коде Холлерита. При этом используются стандартные карты размером 80 на 12. Строки карт пронумерованы сверху вниз в следующем порядке: 12, 11, 0, 1, ... , 9. Каждый столбец предназначен для перфорации одного символа, при этом в строках 12, 11 и 0 перфорируются зонные части, а в позициях 1, ..9 - цифровые части.

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

Почему вы компактны и ремонтируете базу данных

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

Буквам от А до I в коде Холлерита соответствует пробивка в зонной части позиции 12 и в цифровой части - позиций соответственно с 1 по 9, буквам от J до R - пробивка в зонной части позиции 11 и в цифровой части соответственно позиций с 1 по 9, буквам от S до Z - пробивка в зонной части позиции 0 и в цифровой части - позиций с 1 по 9. При кодировании чисел пробивка в зонной части не осуществляется. В цифровой части перфорируется непосредственно требуемая цифра. Заметим, что если в столбце пробита лишь позиция 0, то она не рассматривается как зонная: таким образом кодируется символ, соответствующий цифре 0.

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

Файлы базы данных могут стать поврежденными

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

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

Поскольку в дальнейшем нас будут интересовать в основном числа, возьмем произвольное число, например

и рассмотрим способы его представления в различных форматах. В коде Холлерита данное число выглядит следующим образом:

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

11 = код Холлерита символа «-» в столбце 1

1 = код Холлерита символа «1» в столбце 2

3 = код Холлерита символа «3» в столбце 3

7 = код Холлерита символа «7» в столбце 4

Считается, что число перфорируется, начиная с первого столбца карты.

Код EBCDIC

Я надеюсь, что вы уже заметили сходство между способами представления данных в коде EBCDIC и в коде Холлерита. При считывании карт происходит преобразование данных из кода Холлерита в код EBCDIC; получившаяся после подобного преобразования информация попадает в систему ввода-вывода ЭВМ.

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

Автоматически сжимать и восстанавливать базу данных при ее закрытии

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

Ручная компактность и восстановление базы данных

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

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

Компактность и восстановление базы данных, которая не открыта

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

Создайте ярлык на рабочем столе, который объединяет и ремонтирует определенную базу данных

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

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

Например, в коде Холлерита символ Q имеет вид 11-8. В коде EBCDIC этот же символ выглядит как D8.

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

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

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

Возвращаясь к нашему предыдущему примеру, имеем

Итак, число - 137 в коде EBCDIC выглядит как 60F1F3F7.

Зонный формат

Оставшаяся часть данной главы посвящена в основном способам представления в машине десятичной числовой информации. Одним из основных отличий машинных способов представления числовой информации от более привычных нам является то, что в машине знак числа рассматривается в качестве естественного элемента его внутреннего представления. Например, в случае двоичных целых знаковый бит вообще является частью числа. Напротив, мы больше привыкли к тому, что знак размещается перед цифрами, составляющими непосредственно число. Мы считаем, что число положительно, если перед ним указан знак + (возможно также, что перед числом нет никакого знака). Если же перед числом указан знак -, то считается, что оно отрицательно.

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

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

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

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

Другими словами, если зонная часть последнего символа кода числа, записанного в зонном формате, содержит С или F, TO число считается положительным. Если же знаковая зона содержит D,TO число - отрицательно.

Мы получили, что кодом EBCDIC числа -137 является 60F1F3F7

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

Из-за риска упрощения «Стрелка: Память:: Паркет: Диск». Он также предоставляет библиотеки для растущего числа языков программирования. Это должно быть кусок пирога! Спойлер: нет торта. Кроме того, в некоторых реализациях Паркета были сделаны некоторые довольно странные варианты реализации.

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

Итак, в результате имеем

Чтобы быть совсем точными, нам необходимо заменить код знака -(60) на код нуля (F0):

Можно было просто удалить код знака:

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

Рассмотрим еще несколько примеров. Зонный формат числа

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

Последним вопросом было отсутствие проверок границ для переполнения, которые в противном случае могли бы предотвратить это. Но помните, у нас есть еще один вариант! Это было. И это выглядело устрашающе похожим на проблему со стрелками. Понятно, что мне нужно было работать хотя бы на один подход.

выглядит как

а зонный формат числа

В обоих случаях зонная часть последнего байта содержит С, что указывает на положительность чисел.

Упакованный формат

Вообще говоря, возможно построить ЭВМ, способную выполнять арифметические операции над числами, записанными в зонном формате или даже в коде EBCDIC. Однако нетрудно заметить, что в таком случае около половины всего места, отводимого для записи числа, будут занимать зонные части. Полезную информацию при этом будет нести только содержимое знаковой зоны. Все остальные зоны будут содержать код F. Упакованный десятичный формат - это не что иное, как способ более компактной записи десятичных чисел. Для получения числа в упакованном формате достаточно удалить все не несущие информации зоны из зонного формата десятичного числа. Содержимое знаковой части при этом следует переместить в правый конец числа. Описанный процесс изображен на рис. 15.1.

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

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

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

Мы видели, что в зонном формате число -137 выглядит как

Все это довольно просто. Для буфера, который никогда не превышает определенного размера, все работает нормально, но смещения, упомянутые ранее, были сохранены как простые старые. Это оказалось проблематичным. Два дополнения, а не «два дополнения». Чтобы понять, почему, напомните, что 32-разрядное целое число имеет максимальное значение 2 ^ 31, или около 1 миллиарда.

Большинство современных систем представляют собой целые числа со знаком, используя метод «Два дополнения». Добавление 1 к целому знаку со знаком, текущее значение которого составляет 2 ^ 31, заставляет новое значение быть отрицательным 2 ^ 31 и, как говорят, «переполнено». Хотя целые числа со знаком обозначают первый бит как «знаковый бит», чтобы указать, следует ли интерпретировать следующие 31-биты как положительные или отрицательные, целые числа без знака могут использовать все 32 славных бита.

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

Затем удаляются все зоны, содержащие F:

Рис. 15.1. Преобразование из зонного формата в упакованный. Символ х обозначает произвольную десятичную цифру. Символ S - код знака.

Таким образом, нами получен окончательный результат. Аналогично число, записывающееся в зонном формате как

в упакованном виде выглядит следующим образом:

Если же зонный формат выглядит как

то число в упакованном формате записывается в виде

В последнем случае число спереди дополнено нулем.

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

(в последнем случае использована двоично-десятичная форма записи). Отметим, что двоично-десятичное представление числа в общем случае не совпадает с его двоичным представлением. Имея двоично-десятичную запись числа, уже легко получить его в упакованном формате. Для этого достаточно дополнить двоично-десятичную запись справа кодом знака.

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

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

Двоичная форма записи

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

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

в упакованном формате выглядит как

в зонном формате как

и, наконец, в коде EBCDIC как

Попрактикуйтесь в проведении подобных преобразований.

    РФ специально разрабатывались для хранения реальных изображений, получаемых со сканирующего фотографического или видеооборудования (РФ легко создаются с помощью любого растрового устройства ввода данных)

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

    РФ легко преобразуются для передачи на точечное устройство вывода (легко выводятся на растровые устройства вывода)

Недостатки рф

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

    растровые форматы плохо поддаются масштабированию

Сжатие данных

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

Несколько схем сжатия применяется достаточно часто.

Схемы сжатия

1) RLE– метод группового кодирования.

2) LZW– метод Лемпела-Зива-Велча.

3) CCITT– частный случай алгоритма Хаффмена.

4) DCT– метод дискретных косинус-преобразований. Применяется при сжатииjpeg,mpeg.

5) Фрактальное сжатие.

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

Векторные файлы не имеют своих схем сжатия. Они не сжимаются.

1) т.к. векторные файлы изначально представляют изображение в компактной форме.

2) векторные файлы читаются достаточно медленно, если добавить еще распаковку, то этот процесс существенно замедляется.

3) если векторные файлы все-таки сжать, то сжимается весь файл целиком, включая заголовок (это сжатие архиваторами ZIP,RARи др.)

Степень сжатия изображения определяет отношение объема несжатых данных к объему сжатых данных.

Физическое и логическое сжатие

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

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

Все рассмотренные методы будут физическими.

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

Методы физического сжатия делятся на две категории:

1) Сжатие всего файла

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

2) Сжатие включенное в структуру файла

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



glavpom.ru - Подстанции. Силовая электроника. Экология. Электротехника