Разработка сервиса агрегации открытых данных и данных из социальных сетей

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 09.06.2017
Размер файла 129,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

ВВЕДЕНИЕ

За всю историю все сферы жизни человека переживали колоссальные изменения. Считается, что человечество уже давно достигло той отметки, когда главным ресурсом на планете является информация. Соответственно, владение информацией представляет собой основную ценность в бизнесе, политике, военных действиях и множестве других сфер. Именно из этих соображений появилась знаменитая крылатая фраза «Кто владеет информацией, тот владеет миром» Н.М. Ротшильда.

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

Еще одним аспектом повышения важности информации является ее объем. На сегодняшний день генерируется настолько огромное количество информации, что даже появился термин «информационный стресс». Количество информации, которое человек потребляет ежедневно, отличается в тысячи раз по сравнению с тем, сколько потреблял человек полвека назад. По данным IDC, количество информации удваивается каждые два года [26]. Настолько стремительный рост объема данных ставит вопрос о способах их обработке. Именно технологии по работе с большим количеством данных и получили название «большие данные» (BigData). Они положили начало качественно новым подходам к анализу данных. В своей основе они также используют последние достижения в области компьютерных технологий и постоянно снижающуюся стоимость вычислительных ресурсов.

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

Как уже было сказано, владение и грамотное использование информации могут положительно сказаться на экономическом аспекте той ли иной организации. Однако здесь встает вопрос о качестве данных, их полноте и актуальности. В 2005 году Тим О'Рейли предложил новую концепция построения информационных систем, которая была названа «Веб 2.0». Главной особенностью ее являлось то, что контент должен генерироваться и модерироваться самими пользователями. Он считал, что при таком подходе должно увеличиться количество полезной информации, она будет проверенной, а качество будет зависеть от числа пользователей. На данный момент крупнейшими источниками пользовательского контента являются социальные сети. Сам контент в социальных сетях может показаться бесполезным, тем не менее, анализ этих данных может выявить различные закономерности или модели поведения пользователей [12].

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

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

ГЛАВА 1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

1.1 ОТКРЫТЫЕ ДАННЫЕ

Впервые термин открытых данных появился в далеком 1995 году, когда в научном сообществе набирала популярность идея свободного обмена данными через интернет. Идея набирала популярность вместе с ростом всемирной паутины и ее доступностью. Уже в 2007 году на встрече активистов интернета в городе Сан-Франциско были определены основные принципы, лежащие в основе открытых данных. Открытые данные определялись как идея о доступной каждому информации в формате, понятном машинам (компьютерам), без ограничений авторского права. Это значило ровно то, что никакие механизмы контроля не могут быть применены к использованию открытых данных, разумеется, если это не противоречит законодательству государства. Также можно выделить основные принципы открытых данных:

· свободный доступ;

· отсутствие ограничений по использованию данных;

· машиночитаемый формат;

· свободный формат файлов (CSV, XML, JSON);

· актуальность [31].

Сам факт того, что многие страны мира движутся в направлении открытых данных, свидетельствует о том, что они стремятся к максимально открытому государственному управлению. Делая данные открытыми, органы государственной власти стремятся к прозрачной работе, формируя также контроль со стороны граждан страны, а также способствуя созданию новых продуктов и сервисов. Наряду с этим, публикация данных о государственной деятельности является фундаментом для построения системы «Открытое правительство» [6].

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

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

Практика использования открытых данных в бизнесе распространена по всему миру. Существуют даже сайты, где перечислены наиболее популярные проекты, реализованные в виде сервисов. Например, наиболее популярный портал в таком формате - это «OpenData 500», где содержатся тысячи проектов из таких стран, как США, Канада, Австралия, Мексика, Корея и Италия [14]. Также существуют бизнес-инкубаторы для небольших бизнес-компаний, стремящихся построить бизнес на открытых данных. Примером такого бизнес-инкубатора является «ODINE» (Open Data Incubator Europe) [13]. На их сайте можно найти множество компаний из стран Европы, чей бизнес основан на использовании открытых данных. Также он осуществляет поддержку проектов на начальных этапах, что крайне важно для развития бизнеса. Все компании, которые участвуют в программе бизнес-инкубатора, работают по схеме B2B, таким образом, их заказчиками является также бизнес. Можно выделить наиболее показательные проекты: Farm Dog работает с сельскохозяйственным бизнесом и предоставляет свои решения на основе открытых данных. Существует решение Brightbook, нацеленное на облегчения работы с бухгалтерией. CommoPrices дает возможность пользователям в удобной форме следить за ценами на товары. Есть сервис по совместному использованию велосипедов Bike Citizens для горожан велосипедистов. социальный сеть визуализация локация

Открытые данные используются компаниями из многих отраслей. Такие компании представлены почти всеми сферами экономики: от транспорта и здравоохранения до технологий и страхования. На портале «OpenData500» можно найти визуализацию, какие именно открытые данные используются компаниями. Например, проекты в консалтинге, инвестициях и финансах используют данные казначейства [14].

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

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

1.2 ОБЗОР СУЩЕСТВУЮЩИХ РЕШЕНИЙ НА ОСНОВЕ ОТКРЫТЫХ ДАННЫХ

Популярность открытых данных сложно переоценить. Существуют целые портала, посвященные проектам на основе открытых данных. Самым крупным из них является сайт OpenData500. Тот факт, что проект был опубликован на этом портале, уже означает, что он был признан комиссией как подающий надежды или потенциально успешный. Стоит рассмотреть наиболее популярные проекты на основе открытых данных [14].

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

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

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

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

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

Также стоит отметить, что существуют и отечественные разработки. В основном такие проекты стимулируются за счет проведения хакатонов. Тем не менее, их существование нельзя игнорировать. Хакатоны проводятся при поддержке Министерства финансов Российской Федерации, Министерстве экономического развития Российской Федерации и Аналитического центра при правительстве Российской Федерации a[3].

Проект «Datatron» представляет собой экспертную систему, в основе которой лежит нейронная сеть, обученная на открытых данных. Отличительной особенностью программы является то, что она способна отвечать на голосовые вопросы пользователей. Разумеется, тематика вопроса должна быть строго связана с данными о бюджете страны.

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

Проект «Жалобин» представляет собой мобильное приложение для отслеживания цен в аптеках. Пользователь имеет возможность сравнивать цену в той или иной аптеке с максимально допустимой и помогать пресекать нарушения ценовой политики. Достигается это путем отправки обращения в Управление Роспотребнадзора.

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

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

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

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

1.3 СОЦИАЛЬНЫЕ СЕТИ

На сегодняшний день трудно представить себе мир без социальных сетей. Уже вполне можно сказать, что они стали неотъемлемой частью нашей повседневной жизни. Несмотря на то, что широкое распространение социальные сети получили во второй половине нулевых, их истоки уходят в конец прошлого века, а именно в 1995 год. Принято считать, что первой социальной сетью был сайт «Classmates», которая по своей сути больше напоминала базу данных выпускников школ и колледжей США. Однако сама идея социальных сетей зародилась именно в этом проекте, который позволял не только искать своих одноклассников и людей, с которыми вместе учились, но и контактировать с ними. Конечно, функционал того сайта был весьма примитивен по сравнению с современными возможностями социальных сетей, тем не менее, с этого портала началось формирование нового вида информационных систем [1].

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

Наряду с этим социальные сети содержат огромное количество информации. С каждым годом поток нового контента, который генерируют сами пользователи, только растет. В основном это достигается путем увеличения активных пользователей социальных сетей. По состоянию на июль 2016 года в самой крупной социальной сети мира Facebook насчитывалось более 1,7 миллиарда пользователей [30]. Это почти неограниченный источник данных для анализа поведения пользователей. Существуют различные виды анализа поведения, одним из которых является анализ активности пользователей. Его можно назвать одним из ключевых показателей, который характеризует, сколько людей выражает свои мысли. Выражение собственной позиции может быть проанализировано и является важнейшим и одним из основных источников поиска и отслеживания трендов. Это своего рода индикаторы общественных интересов и настроений, которые позволяют улавливать назревающие проблемы еще на этапе их формирования. Помимо этого, активность в социальных сетях помогает компаниям оценивать количество упоминаний брендов. С точки зрения рекламных кампаний такой анализ позволяет понять, по каким каналам и каким образом лучше взаимодействовать с потенциальными покупателями. Чаще всего такими компаниями являются производители одежды и парфюмерии, тем не менее, подобный анализ может быть полезен почти во всех отраслях. Более того, активность пользователей в социальных сетях позволяет применять семантический анализ текстов, которые они публикуют. В результате такого анализа можно вынести множество полезной информации. Например, выделение ключевых слов позволяет построить корреляцию между тем, какие темы затрагиваются в тексте и количеством просмотров и отметок «мне нравится». Однако главное, что можно извлечь из семантического анализа - это тональность текста. Другими словами, это то, как люди реагируют на то или иное событие или проблему. С помощью такого анализа можно выявлять интересы и позицию пользователей. Такая информация в первую очередь полезна государству с точки зрения безопасности, тем не менее, она может найти применение и в бизнесе.

Еще одной особенностью социальных сетей является тот факт, что они представляют собой нечто большее, чем просто большая база данных. Прогресс в информационных технологиях сделал огромный шаг вперед, благодаря чему социальные сети позволяют следить за активностью пользователей в реальном времени. Сейчас такая информация может быть доступна каждому пользователю интернета. Применение такой возможности можно найти в сфере предиктивного поведения [10]. Отслеживание формирования и динамики трендов становится возможным в реальном времени. В контексте маркетинга анализ активности пользователей может предсказывать, будет ли размещение рекламы эффективным в конкретное время или же оно не достигнет своей цели. Также с помощью такой аналитики можно строить прогнозы относительно того, какие настроения будут преобладать в следующий момент времени. Помимо вышеперечисленных примеров использования такой возможности, существует еще один неочевидный способ использования аналитики в реальном времени. Речь идет о предсказывании природных катаклизмов. В настоящее время современные способы заблаговременного оповещения населения о приближающейся природной катастрофе попросту отсутствуют. До сих пор человечеству не удалось найти способ определять землетрясения или извержения вулканов с высокой степенью вероятности. Однако в результате анализа социальных сетей на предмет упоминания природных катастроф было выявлено, что некоторые сообщения были опубликованы до их возникновения. Это может быть объяснено тем, что хозяева питомцев реагировали на странное поведение своих любимцев и делились этим со своими подписчиками в социальной сети. Подобные сообщения были зафиксированы за несколько минут до возникновения землетрясений или извержений вулканов. Исходя из этого, можно сказать, что анализ сообщений пользователей на предмет упоминания природных катастроф в реальном времени может оповестить о надвигающейся угрозе местных жителей, в результате чего это может спасти человеческие жизни.

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

1.4 АНАЛИЗ ИССЛЕДУЕМОЙ ПРОБЛЕМЫ

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

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

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

1.5 ТЕХНОЛОГИИ ОБРАБОТКИ ДАННЫХ

На сегодняшний день технологии обработки данных сделали большой скачок в своем развитии. Существует два основных направления: развитие аппаратного обеспечения, то есть совершенствование процессоров и параллельной работы ядер компьютера, и разработка программного стека. Первое направление уже добилось выдающихся результатов даже в небольших устройствах. Если рассмотреть современные мобильные телефоны, можно увидеть, что они уже обогнали по мощности компьютеры пятилетней давности [20][9]. В скором времени стоит ожидать примерно равных показаний производительности у мобильных устройств и настольных персональных компьютеров. Все это достигается путем развития новых технологий производства микросхем, позволяющих добиться более компактного размещения элементов на плате. Также стоит отметить, что стоимость производства комплектующих компьютеров постоянно падает. Самым дорогим элементом серверов всегда являлась оперативная память. На данный момент она по-прежнему остается таковой, однако ее цена позволяет закупаться в достаточном количестве под конкретные задачи. Наряду с этим, можно заметить, что развитие аппаратного обеспечения шло плавными темпами, причем самые высокие темпы роста выпали на конец прошлого века.

Развитие же программного обеспечения в обработке данных можно назвать скачкообразным, поскольку оно во многом связано с развитием сопутствующих технологий. Изначально был один единственный подход - все вычисления производить на одной машине. Такой способ просуществовал ровно до того момента, когда появились сетевой стек надежные протоколы передачи данных. Сразу же стало ясно, что вычислительных ресурсов персональных машин недостаточно для трудоемких задач, поэтому целесообразно было использовать центральный сервер исключительно для вычислений, а локальные компьютеры оставить пользователям только для взаимодействия и манипуляцией данных [4]. При таком подходе необходимо было иметь только один мощный сервер и локальную сеть. Такая архитектура была названа клиент-серверной, и существует она и по настоящий момент. Оператор компьютера мог написать инструкции по обработке данных, то есть откуда их загрузить, что с ними сделать и куда сохранить, а программный стек осуществлял отправку загруженных данных на сервер, там их обрабатывал и отдавал результат. Наиболее известные программные реализации такого подхода - это RPC (Remote Procedure Call), Java RMI (Java Method Invocation) и CORBA [8].

Следующим витком развития стало использование кластеров вместо одного центрального сервера. В какой-то момент времени даже мощного центрального сервера перестало хватать для определенных видов вычислений. Резко встал вопрос о распараллеливании вычислений между несколькими физическими серверами. Так появился новый фреймворк Hadoop. Появление Hadoop'а стало началом эпохи больших данных, поскольку это был настоящий прорыв в обработке больших массивов информации. Это фреймворк с открытым исходным кодом, написанным на Java. Это обуславливает широкую распространенность за счет огромного сообщества Java-разработчиков и сторонников открытого программного обеспечения. Hadoop спроектирован таким образом, что он способен работать в распределенной среде и обрабатывать такое количество данных, объем которых ограничивается лишь дисковым пространством [19]. В основе этого фреймворка лежит революционный подход к распределенным вычислениям: поскольку при больших объемах данных много времени тратится на транспортировку их по сети, было решено отправлять не данные к обработчику, а код к данным. Это позволило добиться качественного увеличения скорости обработки данных, поскольку обработчики занимают меньше 200Кб и передаются по сети почти мгновенно. Также в стек технологий Hadoop входит распределенная файловая система HDFS (Hadoop Distributed File System). Она позволяет хранить данные на нескольких сетевых узлах, обеспечивая тем самым распределенную работу с данными. HDFS считается надежной распределенной файловой системой, поскольку обеспечивает отказоустойчивую работу в распределенной среде с поддержкой резервного копирования и репликации данных. Это значит, что если какой-либо узел станет недоступен, его с легкостью сможет заменить другой, где продублированы все данные. В качестве основной вычислительной технологии Hadoop использует алгоритм MapReduce, который изначально был разработан компанией Google. Главный принцип этого алгоритма - это принцип «разделяй и властвуй», то есть большие задачи разбивать на подзадачи, и так до тех пор, пока каждая отдельная единица не станет считаться достаточно просто. После разбиения задач на подзадачи необходимо произвести сбор результатов в одно целое, что и будет являться конечным результатом выполнения программы. Еще одной характерной чертой Hadoop является тот факт, что он не зависит от какой-либо компании. Другими словами, это лишь фреймворк с открытым исходным кодом, предоставляющий возможности распределенной платформы по обработке больших массивов данных. Существуют несколько основных поставщиков продуктов на основе Hadoop: это Apache, Hortonworks, Cloudera и MapR. Всех их объединяет то, что, в конечном счете, они выполняют одну и ту же задачу - распределенную обработку данных. Тем не менее, у каждой компании свой подход к построению информационных систем. Более точно, каждой компании требуется решение, ориентированное на эффективное использование вычислительных мощностей их конкретных задач. В то время как Apache предлагает более общий вариант использования Hadoop под широкий спектр задач, Hortonworks стремится к пакетной обработке данных, причем как можно реже. Например, каждый день в базу данных поступают миллионы записей, причем не так важно с какой частотой. Пакетная обработка данных подразумевает, что стоит все поступающие данные сохранять в хранилище данных, где они будут ждать дальнейшей обработки. После того, как система решает, что данных накопилось достаточно, на этом этапе вступает Hadoop. Кластер Hadoop отвечает за загрузку данных из источника (в общем случае из HDFS), производит предопределенные разработчиками операции над данными и сохраняет их в нужном виде обратно в распределенную файловую систему. При таком подходе достигается существенная экономия времени на поднятие кластера и развертывания приложений. Гораздо эффективнее накапливать данные, а потом з один проход осуществлять вычисления над ними, чем каждый раз при поступлении данных их обрабатывать. Это и называется пакетной обработкой информации (batch processing). Тем не менее, также необходимо понимать, что минимальный размер окна расчета данных здесь исчисляется часами, чаще всего это 1 сутки. Проблемы такого подхода очевидны: компании с каждым годом все более ужесточают требования к частоте построения отчетности и аналитики. Из-за этого все чаще встречается требование к анализу в виде обработки данных в реальном времени или в режиме близкому к реальному времени. С такими задачами решения на основе чистого Hadoop справляются крайне плохо. Их можно назвать тяжеловесными и неповоротливыми технологиями, которым нужно время для старта, для развертывания. В современном мире информационных технологий такие решения начинают вытеснять более быстрые фреймворки.

Несмотря на все достоинства использования Hadoop, в современном мире он имеет ряд недостатков. Дело в том, что дизайн его системы проектировался тогда, когда оперативная память была очень дорогой. Из-за недостатка оперативной памяти все результаты вычислений вынуждены сохраняться на диске. Любые операции с диском являются самым медленным звеном в цепочке вычислений. На сегодняшний день цена на оперативную память стала более доступной, а ее скорость в тысячи раз превышает скорость работы с дисковыми накопителями. Именно это дало толчок к развитию новых технологий, производящих вычисления в оперативной памяти. Наиболее популярным решением, которое стремится избавиться от подобной проблемы, является Apache Spark [3]. Данный фреймворк также является проектом с открытым исходным кодом, написан на Scala. Главной особенностью является то, что Spark сочетает в себе гибридную технологию, которая способна при достаточном количестве оперативной памяти весь массив данных держать как можно «ближе» к процессору. За счет этого экономится время на транспортировку данных к обработчику и сохранение результатов вычислений. Тем не менее, если вдруг окажется, что во время выполнения программы памяти оказалось недостаточно, фреймворк сможет перейти на режим работы с диском. Данная особенность позволяет работать максимально быстро при относительно небольших объемов данных, которые ограничены лишь размером оперативной памяти. В то же время Spark является отказоустойчивым решением, поскольку даже при нехватке памяти он будет способен продолжить работу по обработке. Данная технология считается надстройкой над Hadoop, однако это мнение ошибочно. Разработчики этого фреймворка решили в корне пересмотреть подход к обработке данных. В ходе посроения архитектуры системы они ушли от повсеместно используемого классического алгоритма MapReduce и оставили его только на специфический ряд задач. В результате масштабной переработки и переосмысления произведения вычислений синтетические тесты показали, что решения на основе Spark в 100 раз превосходят аналогичные решения на основе Hadoop. Достигается это не только путем максимального использования возможностей оперативной памяти, поскольку если переключить фреймворк в режим работы с диском, то достигается ускорение до 10 раз. Все эти показания справедливы для пакетной обработки данных, но разработчики ввели новую технологию. Поскольку все чаще можно встретить у компаний требования к продукту в виде построения отчетности и аналитике систем в реальном времени, было решено внедрить потоковую обработку данных. Реализована она была в виде модуля Spark Streaming. Основная идея была в том, чтобы эффективно перевести пакетную обработку данных на потоковую обработку путем создания микро пакетов. Здесь необходимо ввести понятие скользящего окна. Было решено, что окном будет называться единица времени, которая важна для приближения анализа к режиму близкому к реальному времени. Другими словами, она равняется количеству времени, сколько готов ждать бизнес для получения результатов после получения данных. Во многих случаях хватает одной минуты, однако создатели фреймворка не ограничивают в величине окна и оставляют его определения на разработчика. Таким образом, данные в течение времени не складируются в хранилище, где ожидают дальнейшей обработки, а поступают сразу к обработчику. Такой потоковый режим значительно упрощает объем вычислений, поскольку существует ряд задач, где легче обрабатывать данные «на лету», чем держать их в хранилище. Еще одним преимущества данного фреймворка является простота в использовании. Из расчета на массовое использование этой технологии создатели позаботились о мультиплатформенности и наличии программных реализации на нескольких языках программирования: Java, Scala, R и Python [22]. Также вниманием не обделили и синтаксис описания обработки данных. Он в чем-то похож на синтаксис структурированного языка запросов SQL. Этот язык является стандартом в отрасли информационных технологий и знаком практически каждому человеку, кто в ней работает. Не смотря на то, что в коде описывается набор данных как единое целое, фреймворк позволяет обращаться к данным, которые располагаются на разных серверах или узлах так, как будто все они расположены локально. Создатели фреймворка также сделали модули для находящихся в тренде технологий: это потоковая обработка данных и машинное обучение. Хоть машинное обучение и не получило до сих пор широкого распространения среди пользователей фреймворка, этот модуль продолжает активно развиваться и, возможно, в ближайшем будущем составит конкуренцию текущим лидерам в этой области. Данный факт является еще одним преимуществом данной технологии: все эти модули идет «из коробки», они легки в настройке и использовании и органично сочетаются между собой. Как уже было сказано, Spark не является надстройкой над Hadoop и может запускаться в самостоятельном режиме. Тем не менее, если требуется запускать Spark задачи на существующем Hadoop кластере, он также умеет это делать. Помимо этого, Spark может запускаться совместно с Cassandra, Mesos, HBase и другими популярными продуктами по распределенной обработке данных и дополнять их. В технологии Spark также не обходится без недостатков. Преимущества фреймворка могут обернуться и большой проблемой для небольших компаний. Заключаются они в том, что для эффективного использования технологии обработки данных внутри оперативной памяти до сих пор узким местом является ее цена и объем. Небольшие компании на сегодняшний день не способны купить дорогостоящую память в достаточном количестве, чтобы обрабатывать даже не очень крупные по меркам больших данных массивы. Это не говоря уже о самостоятельных разработчиках, которые пользуются стационарными компьютерами, где максимальный объем памяти не превышает 16Гб. В какой-то степени проблема может решиться с массовым распространением облачных вычислений и их дальнейшим удешевлением, однако на данный момент она остается.

У всех решений на основе Hadoop или Spark есть один общий недостаток - они преимущественно для масштаба предприятий. Когда речь идет о технологическом стеке Hadoop или Spark, подразумевается, что должна быть развитая информационная инфраструктура. Имеется в виду, что должна быть развернута распределенная файловая система HDFS, распределенные базы данных, например Cassandra, для потоковой обработки данных в качстве источника сообщений используется Kafka. Касательно Kafka также следует отметить, что должен быть еще сервис, который преобразовывает сообщения в записи нужного формата для загрузки в очередь, чаще всего это самостоятельные приложения, на разработку и тестирование которых также необходимо ресурсы и время. Проблема в том, что установка и развертывание всей инфраструктуры - задача сложная и требующая релевантного опыта. К тому же время на развертывание может занимать недели. А поскольку это критически важно для произведения эффективных распределенных вычислений, инфраструктура является ключевым фактором для использования технологий Hadoop и Spark. Еще одним аспектом является не только их развертывание, но и грамотная настройка каждого компонента в отдельности. В распоряжении могут иметься различные сервера с разными характеристиками. Необходимо подобрать подходящую конфигурацию сервера на каждый узел, а не копировать одну и ту же настройку на всех. Иначе может возникнуть ситуация, когда один мощный сервер производит расчеты очень быстро, и дет время простоя, когда ждет результаты от медленного узла. Крайне важно давать релевантную нагрузку на каждый узел с учетом их технических характеристик и вычислительной мощности. Более того, для получения временной выгоды от распределенных вычислений необходимо иметь более одного узла в своей инфраструктуре. Это значит, что для эффективного использования параллельных операций нужно иметь как минимум два физических сервера. Разумеется, это не проблема для компаний любых масштабов, тем не менее, индивидуальным разработчикам не всегда является возможным иметь такую конфигурацию машин. Кроме этого, существуют такие операции над данными, которые плохо подвергаются параллельным вычислениям или невозможны вообще. Такие виды вычислений должны выполняться на одной машине без использования технологий, наподобие Hadoop или Spark.

Еще одним решением по обработке данных стало Java Stream API. Он стал доступен в Java с версии 1.8 и получил широкое распространение в виду ряда причин. В качестве основной идеи данная технология выделила термин канала (pipeline) [2]. Идея в том, что на входе в поток данные могут проходить различные обработчики, которые выполняются исключительно последовательно, но внутренняя реализация каждого допускает и параллельное выполнение. Также характерной особенностью является то, что использование «ленивых» вычислений может радикально сократить время выполнения вычислений. Так, к примеру, если в ходе описания обработчиков на выходе ожидается получить только один элемент, когда на входе был целый массив, нет необходимости проделывать весь ряд операций над всеми элементами массива. Такой обработчик вступает в силу только после выполнения терминальной операции, которая дает понять, что необходимо начать вычисления. В ходе анализа некоторые обработчики могут игнорироваться, если система решит, что они бесполезные. Например, если разработчик по ошибке напишет метод сортировки более одного раза, система проигнорирует остальные обработчики, поскольку появится статус потока как сортированный. Более того, если учитывать архитектурные особенности построения процессора, то можно также получить ощутимый прирост в производительности. Например, требуется над входным массивом провести операцию фильтрации ненужных элементов с последующей сортировкой. В таком случае можно сначала массив отсортировать, а потом, используя правило выбора ветки в процессоре (branch prediction), без проблем пройтись по всем элементам массива и определить, подходят ли они по критерию или нет. Еще одним преимуществом технологии является ее расширяемость. Разработчики могут самостоятельно разрабатывать нужные компоненты, которые сразу же можно будет использовать в потоковой обработке данных. Такой возможности нет ни у Hadoop, ни у Spark, поскольку все возможности фреймворков определяются их создателями. Уже существуют отдельные бесплатные библиотеки с открытым исходным кодом, которые стремятся разнообразить стандартный программный интерфейс и расширить его базовые возможности. Одной из таких является StreamEx, которая сочетает в себе простоту использования и полезные функции. Несмотря на перечисленные преимущества, данная технология не лишена недостатков. Внутреннее устройство Java Stream довольно сложное, и не всегда поведение оказывается очевидным при выполнении. Даже когда версия языка стала публично доступной и имела статус релиза, разработчики находили такие особенности реализации, которые в некоторых случаях оказывались ошибками. Самое опасное для тех разработчиков, которые только начинают знакомиться с возможностями языка и этой технологии в частности, является тот факт, что некоторые ошибки исправляются добавление строки в документацию с пояснением, какие именно странности могут возникнуть при использовании. Дело в том, что не все опытные разработчики прибегают к чтению документации, не говоря уже о спецификации языка, которая изложена на сотнях страниц. Это сделано по одной единственной причине, что Java возлагает на себя ответственность за обратную совместимость версий. Это значит ровно то, что любое написанное приложение должно работать абсолютно одинаково и на новых версиях языка. Также недостатком является тот факт, что Java Stream не определяет, откуда брать данные и куда их складывать. Очень многие функции эта технология перекладывает на разработчика. В таком случае технология может сосредоточиться на качественном выполнении одной конкретной задачи и не нести ответственности за то, что будет дальше. Такой подход содержится в дизайне языка в целом, и здесь это не исключение. Также в потоках существует возможность параллельного выполнения операций, тем не менее такой подход далеко не всегда может принести временную выгоду, к тому же он более требователен к ресурсам компьютера. Дело в том, что технология сама старается распределить вычисления по физическим ядрам процессора, и не всегда она делает это эффективно.

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


Подобные документы

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

    дипломная работа [1,0 M], добавлен 18.11.2017

  • Определение базы данных и банков данных. Компоненты банка данных. Основные требования к технологии интегрированного хранения и обработки данных. Система управления и модели организации доступа к базам данных. Разработка приложений и администрирование.

    презентация [17,1 K], добавлен 19.08.2013

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

    реферат [667,0 K], добавлен 25.12.2012

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

    реферат [1,3 M], добавлен 25.03.2013

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

    дипломная работа [3,9 M], добавлен 06.03.2013

  • Обзор рынка мобильных приложений, социальных сетей, аналогов. Обзор инструментов разработки: Android Studio, Microsoft visual С# 2012, PostgreeSQL, API Открытых данных Вологодской области, API Социальных сетей. Программный код, разработка интерфейса.

    дипломная работа [2,6 M], добавлен 10.07.2017

  • Уровневая архитектура компьютерных ресурсов CMS. Поток данных от детекторов для анализа. Сокращение размера событий: CMS форматы данных и форматы Тир-данных. Иерархия CMS данных. Средства удаленной работы на LINUX машинах в CERN: PUTTY, WinSCP и Xming.

    курсовая работа [3,1 M], добавлен 17.02.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.