Технологии «Больших данных» вышли на битву с данными больших объемов и сложной структуры

Технологии «Больших данных» вышли  на битву с данными больших объемов и сложной структуры

Mark Whitehorn, Contributor

Опубликована: 5 декабря 2011

Термин «большие данные» (Big Data) используется с постоянно увеличивающейся частотой. Он часто применяется для обозначения больших объемов структурированных данных (например, справочник клиентов), а также для описания частично структурированных данных (изображений, документов, сообщений электронной почты и так далее). В данной статье рассматриваются технологии, которые позволят нам хранить, управлять и анализировать в хранилищах данных большие данные обоих типов.

Анализ структурированных данных

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

Customer
CustomerID FirstName LastName DateOfBirth
1 Fred Jones 12/03/1956
2 Sally Smith 25/04/1972
3 Jane Yo 23/05/1987

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

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

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

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

Термин NoSQL (или «не только SQL», что отличается от «не SQL любой ценой») описывает класс систем управления базами данных. NoSQL базы данных вероятнее всего не реляционные, распределенные, с открытым исходным кодом и горизонтально масштабируемые. Как и колоночные базы данных, NoSQL базы данных по сравнению с транзакционными реляционными базами данных более производительны при некоторых видах интенсивных операциях. Это такие операции, как, предоставление веб-страниц или потоковая передача данных. Одним из примеров колоночной базы данных является база данных Cassandra. Это распределенная система управления базами данных с открытым исходным кодом, без единой точки отказа. Она может обрабатывать очень большие объемы данных на кластерах, построенных на обычном серийном оборудовании.

Hadoop является системой с открытым исходным кодом с распределенной файловой системой Hadoop Distributed File System (HDFS) и реализованным алгоритмом анализа MapReduce (см. ниже). HDFS можно масштабировать с одного сервера на тысячи и осуществлять репликацию данных между кластерами, построенными на обычном серийном оборудовании. Очевидным преимуществом Hadoop является то, что если один диск выходит из строя, данные не теряются. Другим преимуществом является стоимость использования обычных серийных комплектующих, обеспечивающих избыточность хранения.

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

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

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