Язык программирования, ориентированный на данные
Язык программирования, ориентированный на данные, определяет категорию языков программирования, основной функцией которых является управление данными и манипулирование ими. Язык программирования, ориентированный на данные, включает в себя встроенные примитивы обработки для доступа к данным, хранящимся в наборах, таблицах, списках и других структурах данных и базах данных, а также для конкретных манипуляций и преобразований данных, необходимых программному приложению. Языки программирования, ориентированные на данные, обычно являются декларативными и часто ориентированы на потоки данных и определяют желаемый результат обработки; конкретные шаги обработки, необходимые для выполнения обработки, оставляются на усмотрение компилятора языка. Язык реляционных баз данных SQL является примером декларативного языка, ориентированного на данные. Декларативные языки программирования, ориентированные на данные, идеально подходят для вычислительных приложений с интенсивным использованием данных .
Фон
[ редактировать ]Быстрый рост Интернета и Всемирной паутины привел к появлению огромных объемов информации, доступных в Интернете, и к необходимости возможностей обработки больших данных . Деловые и правительственные организации создают большие объемы как структурированной, так и неструктурированной информации, которую необходимо обрабатывать, анализировать и связывать. [1] Хранение, управление, доступ и обработка этого огромного количества данных представляют собой фундаментальную потребность и огромную проблему для удовлетворения потребностей в поиске, анализе, добыче и визуализации этих данных в виде информации. [2] Декларативные, ориентированные на данные языки все чаще решают эти проблемы, поскольку сосредоточение внимания на данных значительно упрощает выражение этих проблем. [3]
Архитектуры компьютерных систем, такие как Hadoop и HPCC , которые могут поддерживать приложения с параллельными данными, являются потенциальным решением требований к обработке данных в терабайтных и петабайтных масштабах вычислений с интенсивным использованием данных . [4] [5] Кластеры стандартного оборудования обычно используются для решения проблем больших данных. [6] Фундаментальные проблемы приложений больших данных и вычислений с интенсивным использованием данных [7] управляют и обрабатывают экспоненциально растущие объемы данных, значительно сокращая соответствующие циклы анализа данных для поддержки практических и своевременных приложений, а также разрабатывают новые алгоритмы, которые можно масштабировать для поиска и обработки огромных объемов данных. Национальный научный фонд определил ключевые проблемы, связанные с проблемами вычислений с интенсивным использованием данных, такие как абстракции программирования, включая модели, языки и алгоритмы, которые позволяют естественное выражение параллельной обработки данных. [8] Декларативные языки программирования, ориентированные на данные, хорошо подходят для решения этого класса задач.
Языки программирования, ориентированные на данные, обеспечивают подход к обработке, при котором приложения выражаются в виде высокоуровневых операций с данными, а система времени выполнения прозрачно контролирует планирование, выполнение, балансировку нагрузки, связь и перемещение программ и данных по вычислительному кластеру. . [9] Абстракция программирования и языковые инструменты позволяют выразить обработку в терминах потоков данных и преобразований, включающих общие библиотеки общих алгоритмов манипулирования данными, таких как сортировка.
Декларативные языки программирования, ориентированные на данные, по своей сути адаптируются к различным формам распределенных вычислений, включая кластеры и сетки данных, а также облачные вычисления. [10] Использование декларативных, ориентированных на данные языков программирования предполагает нечто большее, чем просто адаптацию к новым вычислительным возможностям, оно также предполагает изменения в мыслительном процессе анализа данных и разработке приложений. [11]
Примеры языков, ориентированных на данные
[ редактировать ]SQL — самый известный декларативный язык программирования, ориентированный на данные. Он используется с 1980-х годов и стал фактическим стандартом для использования с реляционными базами данных. было реализовано множество новых системных архитектур и связанных с ними языков программирования Однако для вычислений с интенсивным использованием данных , приложений больших данных и крупномасштабных приложений анализа данных . Наибольший рост данных происходит за счет данных в неструктурированной форме. [12] и были необходимы новые парадигмы обработки с более гибкими моделями данных. Появилось несколько решений, включая архитектуру MapReduce, впервые разработанную Google и теперь доступную в реализации с открытым исходным кодом под названием Hadoop, используемой Yahoo, Facebook и другими, а также системную архитектуру HPCC, предлагаемую LexisNexis Risk Solutions.
Hadoop-свинья
[ редактировать ]Hadoop — это проект программного обеспечения с открытым исходным кодом, спонсируемый Apache Software Foundation ( http://www.apache.org ), который реализует архитектуру MapReduce. Среда выполнения Hadoop поддерживает дополнительные возможности распределенной обработки данных, которые предназначены для работы с использованием архитектуры Hadoop MapReduce. К ним относятся Pig — язык программирования потоков данных высокого уровня и среда выполнения для вычислений с интенсивным использованием данных. Pig был разработан в Yahoo! предоставить специальный, ориентированный на данные язык обозначения для приложений анализа данных, а также повысить производительность программистов и сократить циклы разработки при использовании среды Hadoop MapReduce. Программы Pig автоматически транслируются в последовательности программ MapReduce, если это необходимо в среде выполнения. Pig предоставляет возможности языка для загрузки, хранения, фильтрации, группировки, дедупликации, упорядочивания, сортировки, агрегирования и объединения операций над данными. [13] На рисунке 1 показан пример программы Pig, а на рисунке 2 показано, как это преобразуется в серию операций MapReduce.
HPCC ECL
[ редактировать ]Платформа вычислений с интенсивным использованием данных HPCC от LexisNexis Risk Solutions включает в себя новый высокоуровневый декларативный, ориентированный на данные язык программирования под названием ECL . ECL позволяет программисту определить, каким должен быть результат обработки данных, а также потоки данных и преобразования, необходимые для достижения результата. Язык ECL включает в себя обширные возможности для определения, фильтрации, управления данными и преобразования данных, а также предоставляет обширный набор встроенных функций для работы с записями в наборах данных, которые могут включать определяемые пользователем функции преобразования. Программы ECL компилируются в оптимизированный исходный код C++, который впоследствии компилируется в исполняемый код и распространяется по узлам обрабатывающего кластера. ECL сочетает представление данных с реализацией алгоритмов и представляет собой сочетание языка запросов и языка параллельной обработки данных.
ECL включает встроенные операции преобразования данных, которые обрабатывают целые наборы данных, включая PROJECT, ITERATE, ROLLUP, JOIN, COMBINE, FETCH, NORMALIZE, DENORMALIZE и PROCESS. Например, функция преобразования, определенная для операции JOIN, получает две записи, по одной из каждого объединяемого набора данных, и может выполнять любые операции с полями в паре записей, а также возвращает выходную запись, которая может полностью отличаться от любой из входные записи. Пример синтаксиса операции JOIN из Справочного руководства по языку ECL показан на рисунке 3. На рисунке 4 показан пример эквивалентного кода ECL для примера программы Pig, показанной на рисунке 1.
Язык программирования ECL также предоставляет встроенные примитивы для обработки естественного языка (NLP) с операторами PATTERN и встроенной операцией PARSE. Операторы PATTERN позволяют определять шаблоны сопоставления, включая регулярные выражения, и использовать их для анализа информации из неструктурированных данных, таких как необработанный текст. Операторы PATTERN можно комбинировать для реализации сложных операций синтаксического анализа или полных грамматик из определений формы Бэкуса – Наура (BNF). Операция PARSE работает с набором данных записей в определенном поле внутри записи. Например, это поле может представлять собой целую строку в текстовом файле. Используя эту возможность языка ECL, можно реализовать параллельную обработку приложений извлечения информации из файлов документов и всех типов неструктурированных и полуструктурированных данных, включая документы на основе XML или веб-страницы. На рис. 5 показан пример кода ECL, используемого в приложении анализа журналов, включающем NLP.
См. также
[ редактировать ]- Язык программирования
- Декларативное программирование
- Вычисления с интенсивным использованием данных
- Параллельные вычисления
- Распределенные вычисления
- Параллелизм данных
- Большие данные ( ECL, язык программирования, ориентированный на данные, для больших данных )
Ссылки
[ редактировать ]- ^ Справочник по облачным вычислениям , «Технологии с интенсивным использованием данных для облачных вычислений», А.М. Миддлтон. Справочник по облачным вычислениям. Спрингер, 2010.
- ^ « Есть данные? Руководство по сохранению данных в век информации » Ф. Бермана. Сообщения ACM, Vol. 51, № 12, 2008 г., стр. 50–66.
- ^ Гамбит , ориентированный на данные, Дж. Хеллерштейн, 2008.
- ^ «Методология проектирования приложений с параллельными данными» Л.С. Найланда, Дж. Ф. Принса, А. Голдберга и П. Х. Миллса. Справочник по облачным вычислениям. Спрингер, 2010.
- ^ " Терамасштабный вызов [ мертвая ссылка ] » Д. Равичандран, П. Пантель и Э. Хови. Материалы семинара KDD по майнингу для семантической сети и из нее, 2004.
- ^ " БУМ: Программирование, ориентированное на данные, в центре обработки данных [ мертвая ссылка ] » П. Альваро, Т. Конди, Н. Конвей, К. Элмелиги, Дж. Хеллерштейн и Р. Сирс. Факультет электротехники и компьютерных наук, Калифорнийский университет в Беркли, Технический отчет, 2009 г.
- ^ « Вычисления с интенсивным использованием данных в 21 веке » И. Гортона, П. Гринфилда, А. Салая и Р. Уильямса. Компьютер IEEE, Vol. 41, № 4, 2008, стр. 30–32.
- ^ Вычисления с интенсивным использованием данных , NSF, 2009.
- ^ Масштабируемые вычисления с интенсивным использованием данных , Р.Э. Брайант, 2008.
- ^ Bamboo: Data-centric, объектно-ориентированный подход к многоядерному программному обеспечению , Дж. Чжоу и Б. Демски. Проектирование и реализация языков программирования, 2010.
- ^ « Даноцентрические вычисления с архитектурой Netezza » Г.С. Дэвисона, К.В. Бояка, Р.А. Захарски, С.К. Хельмрайха и Дж.Р. Коуи. Национальные лаборатории Сандии, Технический отчет, 2006 г.
- ^ «Расширяющаяся цифровая вселенная» Дж. Ф. Ганца, Д. Рейнзеля, К. Чута, В. Шлихтинга, Дж. Макартура, С. Минтона, Дж. Ксенети, А. Тончева и А. Манфредиса. IDC, Белая книга, 2007 г.
- ^ Jump up to: а б с Свиная латынь: не совсем иностранный язык для обработки данных. Архивировано 20 июля 2011 г. в Wayback Machine , авторы: К. Олстон, Б. Рид, У. Шривастава, Р. Кумар и А. Томкинс. Стэнфордский университет, 2008 г.