Майкл Оти (motey@windowsitpro.com) — технический директор Windows IT Pro и SQL Server Magazine, автор Microsoft SQL Server 2008 New Features (Osborne/McGraw-Hill)

На саммите Ассоциации профессионалов SQL Server (PASS Summit) 2011 года в Сиэтле одним из самых неожиданных заявлений стало сообщение о поддержке компанией Microsoft продукта Apache Hadoop в рамках анонсирования системы SQL Server 2012. Некоторые администраторы баз данных, с которыми я общался, интересовались, как именно система Hadoop должна взаимодействовать с SQL Server и означает ли это, что компания Microsoft отказывается от платформы SQL Server в пользу одного из новых решений класса NoSQL.

Чтобы понять, почему система Hadoop так важна и как она связана с платформой SQL Server, следует выяснить, что на самом деле представляет собой система Hadoop. Прежде всего, решение Hadoop не является реляционной системой базы данных, так что оно не заменит SQL Server. Hadoop является проектом с открытым исходным кодом, которым управляет организация Apache Software Foundation. Данная система была разработана для решения несколько иной проблемы — особенностей работы с большими объемами неструктурированных данных. SQL Server и другие реляционные базы данных главным образом хранят структурированные данные. Информация может храниться в виде таких типов данных как FileStream и XML, но при этом возникают ограничения на размер данных, а кроме того вычислительные мощности, которые могут быть использованы для доступа к данным, также ограничены. Основная технология, лежащая в основе Hadoop, первоначально была разработана компанией Google для того, чтобы получить возможность индексировать все типы текстовой информации. Затем идеи Google были включены в проект с открытым кодом под названием Nutch, а позже компания Yahoo! превратила Hadoop в корпоративное приложение. Решение Hadoop используют несколько известных компаний, из которых, пожалуй, самая узнаваемая — Facebook. В 2010 году компания Facebook владела крупнейшим кластером на основе Hadoop в мире, где хранилось более 20 Пбайт данных.

Система Hadoop написана на языке Java и развертывается на множестве серийных серверов, работающих в кластере по технологии shared-nothing. Вы можете добавлять или удалять серверы из кластера Hadoop в любое время, не прерывая работу службы. Чем больше серверов вы используете, тем большую вычислительную мощность получите. Решение Hadoop состоит из двух основных компонентов: распределенная файловая система Hadoop Distributed File System (HDFS), которая обеспечивает хранение данных на нескольких серверах, и высокопроизводительный механизм параллельной обработки данных, который использует технологию под названием MapReduce. Технология MapReduce, по сути, разделяет задачи обнаружения данных и индексирования, отправляя разные части данных на разные серверы в кластере. Каждый сервер работает со своей частью данных. Полученные результаты затем передаются пользователю в качестве готового набора. В сущности, механизм MapReduce распределяет операцию по всем серверам в кластере и сводит результаты в один набор.

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

Вы можете задуматься о том, как продукт с открытым исходным кодом Hadoop может быть связан с системой Windows. На саммите PASS 2011 представители Microsoft объявили, что компания создала версию системы Hadoop для Windows, способную работать на платформе Windows Server в локальных конфигурациях или на платформе Windows Azure в «облачных» конфигурациях. Кроме того, Microsoft совместно с компанией HortonWorks разрабатывает двунаправленные коннекторы для решений Hadoop и SQL Server. Коннектор SQL Server для Apache Hadoop позволяет клиентам перемещать большие объемы данных между системой Hadoop и системами SQL Server 2008 или SQL Server 2012 R2. Также должен появиться коннектор хранилища параллельных данных SQL Server (Parallel Data Warehouse; PDW) для решения Hadoop, позволяющий передавать данные между Hadoop и SQL Server PDW. Эти новые коннекторы позволят клиентам работать как со структурированными данными SQL Server, так и с неструктурированными данными Hadoop.

. Это позволит расширить набор типов данных, которые вы можете задействовать в своих приложениях, аналогично тому, как это делают службы SQL Server Analysis Services (SSAS) с ядром реляционной базы данных SQL Server. К тому же такой подход поможет продуктам SQL Server более успешно конкурировать как с решениями Oracle, так и с системами DB2 от компании IBM, которые также используют преимущества Hadoop. Тенденция увеличения размера используемых данных набирает обороты, и возможность обрабатывать большие данные в системе SQL Server – ваш козырь. Перейдите по ссылке http://www.microsoft.com/sqlserver/en/us/solutions-technologies/business-intelligence/big-data-solution.aspx, чтобы получить дополнительную информацию о решении Hadoop от компании Microsoft и о взаимодействии данного решения с системой SQL Server.