Службы обработки данных в концепции Windows DNA

Алексей Шуленин, Microsoft

Реферат доклада

Введение

Анализ тенденций развития крупного корпоративного бизнеса как в нашей стране, так и за рубежом объективно свидетельствует о преобладании интереса к внедрению платформенных решений. Ни один изолированный продукт, будь это операционная система, Web-сервер, сервер электронной почты, сервер баз данных и т.д., сам по себе не в состоянии решить весь спектр проблем, возникающих на этапах автоматизации бизнес-процессов современного предприятия. Это приводит к тому, что предпочтения рынка заметно смещаются в сторону комплексных систем, что закономерно. В конечном счете заказчику нужен не набор отдельно взятых программных продуктов, а интегрированное решение на их основе. Microsoft Windows DNA (Distributed interNetwork Architecture) представляет собой интегрированную платформу для построения и внедрения бизнес-решений, преимущественно ориентированных на работу в Интернет/интранет. Подобно молекулам ДНК, составляющим основу всего живого, концепция Windows DNA направлена на то, чтобы служить информационной основой для предприятий самого различного уровня, формы собственности и отраслевой направленности. (В английском языке аббревиатура DNA расшифровывается как DeoxyriboNucleic Acid, т.е. ДНК). Благодаря тому, что Windows DNA базируется на Windows 2000, операционной системе в которую изначально встроены Интернет-сервисы и технологии создания распределенных приложений СОМ+, разработчики могут сфокусироваться непосредственно на бизнес-аспектах своих систем, используя при этом обширное множество языков программирования и средств быстрого построения приложений. Уровень данных, с которым непосредственно взаимодействует слой прикладной бизнес-логики, основывается на сервере баз данных Microsoft SQL Server 2000. Именно он будет рассмотрен в ходе данного доклада.

Основная цель разработки MS SQL Server 2000

Как наверняка знает большинство аудитории, в особенности те из вас, кто интересуется историей создания Microsoft SQL Server или принимает участие в тестировании новых версий этого сервера баз данных, проект разработки SQL Server 2000 получил кодовое наименование Shiloh. Такое название носит город в штате Теннеси, близ которого в апреле 1862 г. произошла решающая битва между войсками Севера и Юга в Гражданской войне США. SQL Server 2000 призван закрепить и развить тот успех, который получила на рынке СУБД 7-я версия этого продукта, а также продемонстрировать свою конкурентоспособность и преимущества в high-end системах. Несмотря на то, что он расценивается в целом как эволюционный релиз, базирующийся на инновационных принципах, заложенных в архитектуру версии 7.0, эти принципы получили мощный импульс дальнейшего развития в направлениях роста производительности, надежности, управляемости и масштабируемости в новой версии SQL Server. Очевидно, что каждый из перечисленных критериев имеет крайне важное значение при проектировании уровня данных в корпоративных системах. Разработка SQL Server 2000 как составной части платформе Windows DNA имела своей целью в первую очередь добиться лидерства в пространстве этих критериев. В рамках настоящего доклада мы рассмотрим только два из перечисленных измерений, а именно, масштабируемость и управляемость.

Масштабируемость

В SQL Server 2000 нашел свое отражение первый этап технологии shared nothing. Рассмотрим две основные тенденции наращивания масштабируемости систем. Наиболее широко распространенным на данный момент является подход, связанный с вертикальным масштабированием (scale-up). К нему можно отнести появившиеся еще в начале 70-х годов SMP-системы, параллельные кластеры на основе общих дисков (несмотря на то, что идея кластеров возникла едва ли не раньше симметричного мультипроцессирования, реально они получают распространение в середине 80-х стараниями, в первую очередь, DEC). Наконец, еще почти десятилетие спустя на арену выходит технология NUMA. В качестве характерной особенности вертикального масштабирования выступает наличие тех или иных общих ресурсов (shared resources). Для многопроцессорных серверов это практически shared everything, т.е. применительно к СУБД - блокировки, журнал транзакций, процедурный кэш, буферный пул, операции ввода/вывода и т.д., для параллельных кластеров - разделение доступа к общим дискам, для ссNUMA - согласование кэша. Таким образом наряду с очевидными преимуществами вертикальное масштабирование имеет свои недостатки, главный из которых - "напряжение" на общих ресурсах. Влияние этого эффекта можно продемонстрировать следующим образом. Если построить условный график масштабируемости scale-up системы, отложив по оси Y, скажем, производительность, а по оси Х - системные ресурсы, например, количество процессоров в SMP-сервере или узлов в кластере, то с ростом Х угол наклона кривой масштабируемости будет уменьшаться, стремясь к горизонтальной линии. При очень больших Х возможно даже ухудшение производительности. Другой слабой стороной является зависимость от аппаратной платформы. Например, в случае SMP мы не можем бесконечно наращивать количество процессоров в сервере сверх того числа, которое на данный момент реально поддерживает производитель данного "железа". Специфика NUMA, поддержку которой обеспечивает довольно ограниченное число поставщиков оборудования, таких как Sequent Computers Inc., Data General Corp. и некоторые другие, требует специальной операционной системы и внесения серьезных изменений на уровне ядра СУБД, не говоря уже о немалой стоимости таких комплексов.

В плане развития своего сервера баз данных Microsoft делает ставку на параллельные архитектуры горизонтального масштабирования (scale-out), основной принцип которой можно сформулировать как "никаких общих ресурсов" (shared nothing). В идеале это означает кластер из группы машин потребительского класса, каждая из которых имеет свои собственные ресурсы в виде процессоров, памяти, дисков, решающих тем не менее совместные задачи, например, работу с распределенной базой данных. Такой подход представляется очень привлекательным по следующим причинам. Во-первых, отсутствие каких бы то ни было общих ресурсов в подобной конфигурации снимает риск возникновения "пробок" на доступе к системе, что обеспечивает практически линейную масштабируемость. Во-вторых, он не требует использования дорогостоящих аппаратных решений, так как виртуальный кластер собирается из обыкновенных серверов. В третьих, масштабируемость вверх и вниз обеспечивается простым увеличением или уменьшением числа узлов. Естественно, что ничто само по себе с неба не падает, и для реализации этой концепции в ее полном объеме Microsoft предстоит разрешить многочисленные довольно трудоемкие технические проблемы. Однако уже первые шаги внедрения этой технологии показали, что игра стоит свеч. Напомню, что в феврале 2000 года, находясь в процессе бета-тестирования, Microsoft SQL Server 2000 установил новый мировой рекорд скорости обработки запросов - 227 079 транзакций в минуту. Измерения производились по официальным тестам TPC-C - см. http://www.tpc.org. Результат был продемонстрирован на кластере из 12 серверов Compaq ProLiant 8500 (8 процессоров Intel Pentium III Xeon 550 МГц каждый) под управлением MS Windows 2000, где в качестве ПО промежуточного слоя использовался Microsoft СОМ+. Несмотря на то, что на первом этапе реализации не поддерживается автоматическое перераспределение данных в случае добавления нового узла в или, наоборот, выхода одного из узлов виртуального кластера из строя, несмотря на многие другие ограничения, хотелось бы подчеркнуть, что на момент подготовки доклада достигнутый показатель является абсолютным рекордом быстродействия среди всех серверов баз данных на любой операционной системе и аппаратной платформе. Данный результат эквивалентен системе, производительность которой равна 575 сайтам Amazon.com и eBay, вместе взятым.

На сегодня редакции SQL Server могут работать на полном спектре операционных систем семейства Windows. Настольные редакции SQL Server 7.0 и выше, а также MSDE, входящий, например, в состав MS Access 2000 как альтернативный по сравнению с Jet механизм обработки данных, устанавливаются на Windows 9х, Windows NT 4.0 Workstation и Windows 2000 Professional. Стандартные редакции SQL Server 7.0 работают на Windows NT 4.0 Server и Windows 2000 Server. Корпоративная редакция SQL Server предназначена для Windows NT 4.0 Enterprise Edition, Windows 2000 Advanced Server и Windows 2000 DataCenter. Следует отметить, что все они базируются на едином коде, тем самым, обеспечивается практически 100%-совместимость приложений. Начав с использования SQL Server Desktop Edition или MSDE, организация по мере роста может переходить на более мощные редакции SQL Server, не переписывая по соображениям совместимости работающие приложения. Основные отличия корпоративной редакции Windows NT 4.0 от стандартной состояли в поддержке отказоустойчивых кластеров, большего числа процессоров (8 по сравнению с 4 непосредственно "из коробки") и возможностью адресации приложениями большего объема памяти (3 Гб по сравнению с 2). SQL Server 2000 Enterprise Edition будет адресовать 8 Гб на Windows 2000 Advanced Server и 64 Гб на Windows 2000 DataCenter. Это достигается благодаря поддержке Address Windowing Extensions (AWE) - набору дополнительных функций управления памятью в составе Win32 API, которые позволяют адресовать больший объем памяти, нежели 4 Гб даже при обычной 32-разрядной адресации за счет его отображения через выделенное "окно" в стандартном адресном пространстве. Эта технология оказывается особеннно эффективной при работе со сверхбольшими базами данных (VLDB), для которой характерны интенсивные по потреблению памяти операции. SQL Server 2000 будет первым продуктом из состава Microsoft BackOffice, для которого выйдет 64-разрядная версия сразу после появления 64-разрядной версии Windows 2000.

Говоря о масштабируемости вниз, следует отметить, что вскоре после выхода SQL Server 2000 Microsoft планирует выпустить мобильную редакцию SQL Server, способную работать на наладонных и карманных компьютерах, а также встраиваемых устройствах, таких как мобильные телефоны, автомагнитолы, видеомагнитофоны и т.д. При этом будет обеспечена совместимость вверх со "взрослыми" редакциями SQL Server за счет использования стандартов OLE DB и ADO и встроенных механизмов репликации. В качестве операционной системы, по всей видимости, будет поддерживаться Windows СЕ 2.11 и выше.

Управляемость и программируемость

Реляционный механизм SQL Server 2000 обеспечивает немало новых возможностей, которые наверняка окажутся полезными разработчикам бизнес-логики на стороне сервера. Не имея сейчас возможности рассмотреть их всех подробно, назову только некоторые из них, наиболее, как мне представляется, существенные.

Несмотря на то, что приведенные примеры иллюстрированы скриптами на Тransact-SQL, для большинства из них, естественно, имеется возможность выполнить аналогичные действия из графического интерфейса. Утилиты графического интерфейса, такие как SQL Enterprise Manager, SQL Query Analyzer, SQL Profiler и др. также претерпели весьма существенные изменения в целях более простого и удобного использования. Например, в состав SQL Query Analyzer вошли встроенный отладчик хранимых процедур и функций и средство просмотра серверных объектов (object browser). В службы преобразования данных были включены возможности сохранения пакетов в виде кода на VBScript, переноса ограничений типа "первичный / внешний ключ" при импорте / экспорте данных в / из гетерогенных источников (Oracle, Sybase, Access, :), поддержки прилинкованных серверов и т.д. В службы тиражирования добавился новый вид репликации - с использованием сервисов очередей сообщений (MSMQ), благодаря чему не требуется он-лайновая доступность издателя в момент обновления данных на подписчике. Кроме того, тиражирование в SQL Server 2000 поддерживает репликацию изменений схемы данных. Средства создания и управления сервером теплого резерва (log shipping), ранее входившие в состав BackOffice Resource Kit на правах самостоятельной утилиты, были встроены в SQL Enterprise Manager (раздел Management). Если говорить об инструментарии администратора, то пожалуй, наиболее существенным моментом здесь является интеграция SQL Server 2000 со службой каталогов Windows 2000. Соответстующие расширения схемы позволяют хранить в службе каталогов свойства сервера, баз данных, объектов тиражирования и других сущностей, благодаря чему приложения, работающие со службой каталогов, получают возможность запрашивать список серверов в домене или отыскивать сервера, удовлетворяющие тем или иным заданным свойствам. Простейшим примером такого приложения является утилита SQL Active Directory Search, позволяющая находить сервера домена по их атрибутам, хранящимся в службе каталогов, таким как имя сервера, версия, имя базы данных, порядок сортировки по умолчанию, работает ли сервер в кластере и т.д.

Заключение

Естественно, список новых технологий, заложенных в SQL Server 2000 не ограничивается тем беглым экскурсом, который мы только что предприняли. Наиболее полно ознакомиться с возможностями новой версии слушатели могут, получив 2-ю бета-версию SQL Server 2000, которая будет свободно доступна на http://www.microsoft.com/sql вплоть до появления окончательного релиза. Мы обязательно продолжим наш разговор в дальнейшем более подробно после официального выхода SQL Server 2000.