Файл: Операции, производимые с данными (Операции, производимые с данными).pdf
Добавлен: 01.04.2023
Просмотров: 178
Скачиваний: 1
Введение
Современное человечество существует буквально внутри огромного информационного потока. Сейчас не осталось практически ни одной сферы деятельности человека, где бы огромную роль не играли данные. Во многих направлениях, таких как банковская сфера, образование, торговля и промышленность, работа с информацией занимает решающую роль.
В связи с этим появились и проблемы, о которых нельзя забывать:
- огромный объем данных, циркулирующих в обществе, постоянно увеличивается, что ставит на первый план необходимость в их оптимизации и структуризации;
- необходимость запоминания человеком информации уступает умению управлять ею, используя персональный компьютер или смартфон;
- поддержка актуальности данных так же является решающим фактором в жизни людей.
Из этого следует вывод, что современный человек должен понимать, каким образом данные обрабатываются и как ими управлять в информационной среде, и какие вообще операции над данными можно совершать.
Понятие данных и структур данных
Что же такое «Данные»?
Данные — поддающееся многократной интерпретации представление информации в формализованном виде, пригодном для передачи, связи, или обработки [1]. Говоря простым языком – это совокупность информации, сохраненной на том или ином носителе, с которой можно работать и производить различные операции.
На самом деле, хоть информацию и данные зачастую используют как синонимы, нужно понимать их различие. Информация – это результат преобразования определенных данных.
Данные хранятся в компьютере в двоичном формате, а зачастую они еще и закодированы или зашифрованы, поэтому для того, чтобы их получить, они должны быть обработаны при помощи программ. В качестве выходных данных мы получим информацию, из которой, проанализировав, мы получим знания.
Рис. 1 - Взаимосвязь данных, информации и знаний
Хранение данных в двоичном формате обусловлено составляющими компьютера и способом обмена информацией внутри него. Данные передаются за счет электрических сигналов между комплектующими. Эти сигналы отправляются с определенной частотой и с определенной последовательностью. Наличие сигнала принято обозначать цифрой 1, его отсутствие – 0. С помощью этих цифр можно зашифровать и передать абсолютно любые данные. Такой поток единиц и нулей называют двоичным кодом.
Операции с данными производятся при помощи информационных технологий. Их цель – производство информации в требуемом пользователю формате в результате переработки входных данных.
Рис. 2 - взаимодействие данных с информационными технологиями
Конечно же информация не может храниться в неупорядоченной куче. Для ее хранения и упорядочивания используется такое понятие, как структура данных.
Под структурой данных в общем случае понимают множество элементов данных, множество связей между ними, а также характер их организованности [2]. В качестве примера можно привести такую простейшую структуру данных, как массив – упорядоченная линейная совокупность однородных данных.
Различные виды структур подходят для различных программных решений. Например, такая структура, как «бинарное дерево», больше всего подходит для баз данных, а использование «словаря» (ключ-значение), которое является одной из самых популярных структур, можно использовать для создания адресной книги.
Правильный выбор структуры для разрабатываемого программного обеспечения крайне важен, так как от этого будет напрямую зависеть качество и эффективность приложения, поэтому важно понимать, какие операции над данными можно производить.
Рис. 3 - бинарное дерево
Операции, производимые с данными
Основные операции
Над любыми данными можно произвести пять основных операций:
- создание;
- удаление;
- выбор (доступ, отображение);
- изменение;
- копирование.
Операция создания подразумевает выделение памяти под требуемые данные. При данной операции информационный массив пополняется файлом или структурой данных. С точки зрения программирования память может выделяться при объявлении переменной или при компиляции программы. После создания данных объем информационного массива, а как следствие занятой памяти, увеличивается.
Операция удаления (уничтожения) высвобождает память, очищая хранящиеся данные. Объем информационного массива и занятой памяти уменьшается.
При разработке программ большинство языков программирования подразумевают установку начальных данных и создание указателей к ячейке памяти для возможности обращения к информации. Такой процесс называется инициализацией. При удалении же, уничтожаются не только данные, но и указатели к ним. Раньше данный процесс (выделить память, установить указатель) управлялся разработчиком вручную, что порождало ряд проблем. В лучшем случае в программе оставался указатель на ранее использовавшуюся ячейку памяти, но уже очищенную, что, при обращении к данным, не давало программе далее выполняться и приводило к сбоям. В худшем случае была обратная ситуация: указатель был удален, и программа считала, что таких данных уже нет, но память все так же была занята. Это производило лавинообразный эффект и утечку памяти, что отслеживается довольно сложно. В большинстве современных сред разработки данный процесс автоматизирован и анализируется без участия разработчика, помогая эффективно использовать память.
Операция выбора (доступа, отображения) связан с предоставлением данных пользователю или программе. В первом случае, информация будет доступна на устройстве вывода (например мониторе). В случае обращения к данным программой форма операции доступа будет зависеть от структуры, в которой эти данные будут храниться, но в любом случае при использовании операции выбора в приложении опять используются указатели.
Операция изменения позволяет изменить значение данных в структуре данных. То есть данная операция относится не ко всему элементу в целом (напр. файлу), а к его составляющим (напр. строкам). В качестве примера можно привести изменение ячейки в файле таблицы, а в программировании операцию присваивания переменной. Технология доступа при выполнении операции изменения представлена на рис. 4.
Операция копирования выделяет тот же объем памяти, что и у исходной структуры, и создает копию исходных данных в этой выделенной ячейке.
Эти операции являются обязательными для каждой структуры данных. Помимо них в зависимости от типа структуры могут использоваться и более специфические операции.
Рис. 4 - Технологии доступа при выполнении действий изменения элемента
Специфические операции
В ходе развития научно-технического прогресса данные меняют свой формат, переходят от одного вида к другому с помощью большого количества различных методов. Обработка таких, порой сложных, структур ведет к увеличению трудозатрат и поиску других операций, упрощающих работу с информацией. Причинами этого являются повышение сложности управления различными процессами и возрастающим количеством вариантов носителей информации и способов передачи данных между ними.
Одной из основных операций в современном мире является сбор информации – ее накопление с целью избыточности для принятия решений. Сбор – это аккумулирование различных данных для того, чтобы иметь возможность получить наиболее точные результаты.
В качестве примера можно привести любую научную работу. В начале идет сбор экспериментальных данных, и попытка провести зависимости. Далее, опираясь на ранее полученные знания, выводятся формулы или алгоритмы и сравниваются с собранной ранее информацией. В результате, если погрешность расчетов не удовлетворяет, производится анализ и делается вывод – либо данные не избыточны и требуется дополнительный сбор, либо имеет место ошибка в расчетах. Так или иначе требуется следующая итерация «Сбор-Анализ-Вывод».
Эту же логику можно переложить и на программу. Приложение собирает данные и хранит их в базе данных, потом производит расчеты, далее сравнивает результат и делает следующую итерацию в зависимости от заложенной в него логики.
Но что, если данные требуется с нескольких источников, а приходят они в различном формате? На помощь приходит следующая операция – формализация. Формализация – это процесс приведения данных, полученных из разных источников, к одному формату, чтобы иметь возможность их сопоставить и сделать более доступными.
На самом деле, человек постоянно прибегает к процессу формализации в жизни. Один из самых знакомых способов – приведение физических или, например, химических процессов к общедоступным и общепонятным формулам, что позволяет обмениваться информацией о различных явлениях на одном языке и структурировать и развивать научные знания.
В программировании операции формализации так же играют большую роль. Они постоянно встречаются при приведении значений к определенному типу (целочисленный, вещественный, строчный и т.п.) как просто в коде программы при создании и изменении переменных и констант, так и в собранной информации с различных источников в базе данных.
Зачастую, при работе с большим количеством источников, количество данных не просто избыточно, но и содержит в себе много лишней информации. В такой ситуации применяется операция фильтрации, которая позволяет отсеять лишнее, уменьшив «информационный шум», повысив ценность, достоверность и адекватность данных. Такая операция может быть как заметна пользователю, например вывод информации в таблице по его запросу с требуемыми параметрами, так и происходить внутри программы, например выборка из базы данных значений по определенным критериям и помещение их в массив для дальнейшего анализа.
Процесс фильтрации только лишь отсеивает данные, но не помогает их каким-либо образом систематизировать или упорядочить. За это уже отвечает сортировка – процесс упорядочивания данных по определенному признаку с целью удобства использования и повышения доступности информации.
Знакомый с детства результат сортировки – библиотека, где книги в стеллажах сгруппированы не только по категориям и тематике, но и в каждой категории они рассортированы по подгруппам и, далее, в алфавитном порядке. Это не только упрощает поиск нужной книги, но и значительно ускоряет его, что повышает доступность книг для использования.
В программировании сортировка используется повсеместно. Любые данные для отображения или для удобства использования, как правило, сортируются. Существует масса алгоритмов для операции сортировки: пузырьковая сортировка, сортировка перемешиванием, слиянием, с помощью двоичного дерева и т.д.
Основными критериями оценки для данной операции являются время (или вычислительная сложность), характеризующее быстродействие алгоритма, и память, занимаемая в некоторых алгоритмах для хранения временных значений.
Рис. 5 - Пример сортировки вставками
Что касается оптимизации памяти для хранения данных – тут на помощь выступает операция архивации. Архивация – преобразование данных в другой формат при уменьшении занимаемого объема памяти, но без потери информации.
Сейчас существует множество алгоритмов для архивации, но они все используют в своей основе два решения: метод Хаффмана и метод RLE.
Метод Хаффмана анализирует и учитывает частоту использования символов: чем чаще встречается символ, тем короче последовательность битов, требуемая для его записи. К каждому архиву создается таблица, отображающая соответствия между символами и их кодами [3].
Метод RLE (Run Length Encoding) основан на выделении повторяющихся блоков данных, повторяющихся наборов байтов. Если говорить простым языком, то при архивировании мы получаем команду «повторить этот набор символов n раз». К примеру, из набора символов:
WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW
можно получить:
12W1B12W3B24W1B14W
что занимает гораздо меньше места.
Высокую актуальность сейчас имеет защита данных. Защита данных - организационные, программные и технические методы и средства, направленные на удовлетворение ограничений, установленных для типов данных или экземпляров типов данных в системе обработки данных [4].
Рис. 6 - Классификация методов защиты данных в компьютерных системах
Другими словами, защитой данных называют комплекс операций, направленных на предотвращение незапланированного и несанкционированного удаления, изменения и воспроизведения данных. Такие меры, как правило, направлены на конфиденциальные и персональные данные.
Защита информации включает в себя:
- обеспечение целостности данных, исключая искажения или уничтожение информации. Тут речь идет, к примеру, о данных, представляющих материальную ценность;
- исключение возможности подмены данных, элементов структуры данных, при их сохранении. Например, злоумышленник может подменить сертификаты или ключи доступа, применяемые для авторизации на сервер с «узкими» данными, для несанкционированного доступа;
- ограничение (разграничение) полномочий на проведении операций с данными. С разграничением доступа мы сталкиваемся повседневно – это, например, стандартная система доступа на компьютере «администратор – пользователь – гость» с разными правами;
- ограничение возможностей применения полученных данных в строго оговоренных условиях. Тут имеется ввиду рассмотрение персональных и конфиденциальных данных с юридической точки зрения и закрепление условий посредством расписки/договора/т.п.