Главная » 2015 » Май » 7 » Статья 2.
19:30
Статья 2.

Выполнил: Дейнарович Егор Дмитриевич, гр.12710
Проверил: Блам Юрий Шабсович

РАСПРЕДЕЛЕННАЯ ОБРАБОТКА ДАННЫХ.

1.1. Распределенные алгоритмы и их свойства

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

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

    Классическая архитектура, используемая в большинстве сегодняшних приложений баз данных (например, в SAP R/3). Запросы от клиентов направляются балансировщиком нагрузки в одну из доступных машин, на которой выполняются Web-сервер и сервер приложений. Web-сервер обрабатывает (HTTP-) запросы, поступающие от клиентов, а сервер приложений выполняет указанную логику приложения с использованием, например, языков Java или C# со встроенным SQL (или LINQ, или какого-либо другого языка программирования баз данных). Операторы встроенного SQL доставляются на сервер баз данных, который интерпретирует запрос, возвращает результат и, возможно, изменяет базу данных. Для обеспечения персистентности сервер баз данных сохраняет все данные и журналы на устройствах хранения данных. Интерфейс между сервером баз данных и системой хранения данных предполагает пересылку физических блоков данных (например, блоков размером в 64 килобайта) с использованием запросов get и put. В традиционных системах хранения данных используются диски, подключаемые локально к машине, на которой работает сервер баз данных, или объединяемые в сеть устройства хранения данных (storage area network, SAN). На рис. 1 демонстрируется вариант архитектуры, в котором система хранения данных отделена от сервера баз данных (т.е. SAN). Вместо традиционных вращающихся дисков в системах хранения данных следующего поколения, возможно, будут использоваться твердотельные диски (solid-state disk), основная память или комбинация разных носителей.

    Классическая архитектура обеспечивает ряд важных преимуществ. Во-первых, она позволяет использовать на всех уровнях компоненты, являющиеся "лучшими в своем классе" "best-of-breed"). В результате в расчете на каждый из этих уровней образовался жизнеспособный рынок конкурирующих продуктов. Во-вторых, классическая архитектура позволяет добиться масштабируемости иэластичности на уровнях хранения данных и серверов Web и приложений. Например, если требуется скорректировать пропускную способность приложения в соответствии с увеличившейся активностью пользователей, то можно легко увеличить число машин на уровне серверов Web и приложений, чтобы справиться с повысившейся рабочей нагрузкой. Аналогичным образом, при снижении рабочей нагрузки некоторые машины на этом уровне можно отключить или использовать для других целей. На уровне хранения данных можно увеличивать или уменьшать число машин (или дисков) для повышения пропускной способности системы хранения при возрастании рабочей нагрузки и/или для решения проблем, связанных с изменением размеров базы данных.

При использовании сетевых информационных технологий становится возможной реализация территориального распределения производства. Для администрации фирмы становится безразлично, где именно находится производство: в этом здании, за 100 м или за 10 000 км. Появляются совсем другие проблемы, такие как межконтинентальное снабжение, поясное время и т.д., поскольку становится возможным планетарное распределение промышленного производства. Могут создаваться транснациональные компании, реализующие мировой товарный экспорт внутри фирмы. При этом метрополия, вложив 5–7% от суммы оборота в экономику другой страны, получает возможность контролировать 50–60% ее экономики. Объясняется это тем, что за счет вложения наукоемких технологий страна-метрополия получает возможность оказывать влияние и даже осуществлять контроль за экономическим и политическим развитием другой страны. Например, 80% всех международных кредитных операций совершают банки США. Инвалютные резервы центральных банков западных стран на 75% состоят из американских долларов, а 55% расчетов по международной торговле реализуется американскими долларами, т.е. США расплачиваются воспроизводимыми ресурсами: информационными технологиями, научно-техничес­кими знаниями, долларами. Это становится возможным благодаря новейшим сетевым технологиям и развитию коммуникаций.

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

   Программы, общающиеся через сеть, нуждаются в механизме связи. На нижнем уровне по поступлении пакетов подается сигнал, обрабатываемый сетевой программой обработки сигналов. На верхнем уровне работает механизм rendezvous (рандеву), принятый в языке Ада. В NFS используется механизм вызова удаленных процедур (RPC), в котором клиент взаимодействует с сервером (см. Рисунок 1). В соответствии с этим процессом клиент сначала обращается к процедуре, посылающей запрос на сервер. По прибытии пакета с запросом сервер вызывает процедуру его вскрытия, выполняет запрашиваемую услугу, посылает ответ, и управление возвращается клиенту.

 

 

 

 

 

 

 

 

 

 

                                                                                                                      

- Верхний уровень полностью "прозрачен". Программа этого уровня может, например, содержать обращение к процедуре rnusers(), возвращающей число пользователей на удаленной машине. Вам не нужно знать об использовании механизма RPC, поскольку вы делаете обращение в программе.

- Средний уровень предназначен для наиболее общих приложений. RPC-вызовами на этом уровне занимаются подпрограммы registerrpc() и callrpc(): registerrpc() получает общесис темный код, а callrpc() исполняет вызов удаленной процедуры. Вызов rnusers() реализуется с помощью этих двух подпрограмм.

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

Как правило, вам следует пользоваться верхним уровнем и избегать использования нижних уровней без особой необходимости.

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

RPC (Remote Procedure Call, Сервис вызова удаленных процедур) представляет собой интерфейс между удаленными пользователями и определенными программами хоста, которые запускаются по запросам этих пользователей. Сервис RPC какого-либо хоста, как правило, предоставляет клиентам комплекс программ. Каждая из таких программ состоит, в свою очередь, из одной или нескольких удаленных процедур. Например, сервис удаленной файловой системы NFS, который построен на вызовах RPC, может состоять только из двух программ: например, одна программа взаимодействует с высокоуровневыми пользовательскими интерфейсами, а другая - с низкоуровневыми функциями ввода-вывода.

В каждом вызове удаленной процедуры участвуют две стороны: активный клиент, который отправляет запрос вызова процедуры на сервер, и сервер, который отправляет клиенту ответ.

1.2. Языки предметной области

    Предметно-ориентированный язык — язык программирования, специализированный для конкретной области применения, применимому к широкому спектру областей и не учитывающему особенности конкретных сфер знаний). Является ключевым понятием языково-ориентированного программирования.

   Строго говоря, деление языков программирования на языки общего назначения и предметно-ориентированные весьма условно, особенно, если учесть, что формально любой протокол или формат файлов является языком. Существует масса языков общего назначения, применяемых в качестве предметно-ориентированных для определённых задач, и наоборот, предметно-ориентированных языков, применяемых в качестве языков общего назначения. Ярким примером является язык Си, разработанный в качестве кроссплатформенного ассемблера, но на практике применяемый гораздо шире. Язык ML, породивший целое семейство языков общего назначения (включая Haskell, ныне наиболее предпочитаемый разработчиками предметно-ориентированных языков в качестве базового), — изначально разрабатывался в качестве DSL для системы автоматического доказательства теорем LCF. Примером, показывающим условность классификации, служит язык БНФ (и компилятор с него Lex/Yacc): с одной стороны, это яркий пример метаязыка, с другой — он предназначен для одной конкретной задачи.

Ведущие исследователи языково-ориентированного программирования (Мартин Уорд, Пол Хьюдак, Валид Таха и другие) приводят следующие примеры предметно-специфичных языков в качестве классических:

·         TeX/LaTeX для подготовки (компьютерной вёрстки) текстовых документов;

·         Perl для манипулирования текстами;

·         SQL для СУБД;

·         Tcl/Tk для графического интерфейса пользователя;

·         HTML и SGML для разметки документов;

·         Verilog и VHDL для описания аппаратного обеспечения;

·         Mathematica и Maple для символьных вычислений;

·         AutoLisp для компьютерного моделирования (САПР);

·         Prolog для задач, сформулированных в терминах исчисления предикатов;

·         ML и Haskell для задач, сформулированных в терминах функций

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

   Встроенный язык имеет много общих черт с другими языками, такими как Pascal, Java Script, Basic, что облегчает его освоение начинающими разработчиками. Однако он не является прямым аналогом какого-либо из перечисленных языков.

Вот лишь некоторые, наиболее значимые особенности встроенного языка:

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

 

    ANTLR — генератор нисходящих анализаторов для формальных языков. ANTLR преобразует контекстно-свободную грамматику в виде РБНФ в программу на C++JavaC#PythonRuby. Используется для разработки компиляторовинтерпретаторов итрансляторов.

   Преимущества:

·         Свободное программное обеспечение.

·         Использование единой нотации для описания лексических и синтаксических анализаторов.

·         Применение нисходящего, а не восходящего анализа.

·         Удобство работы с абстрактным синтаксическим деревом.

·         Предоставление сообщений об ошибках и восстановление после них.

·         Наличие визуальных сред разработки (ANTLR Works, ANTLR Studio, плагинов к Eclipse), которые позволяют создавать и отлаживать грамматики, поддерживают подсветку синтаксиса, автодополнение, визуальное отображание грамматик, строящееся в реальном времени по мере ввода, отладчикрефакторинг.

1.3. Современные технологии для организации распределенных вычислений

    Название GRID (сеть) взято по аналогии с электрическими сетями - electric power grid. Так же как появление этих сетей в начале прошлого века привело к кардинальному изменению в использовании электрической энергии, а в последние годы Интернет и всемирная паутина WWW стандартизовали поиск и доставку документов, GRID является следующим этапом в этой цепочке революционных преобразований в сфере высоких технологий. Если попробовать сформулировать определение, GRID - это система, которая координирует использование глобальных (мировых) ресурсов при отсутствии централизованного управления этими ресурсами; использует стандартные и универсальные протоколы и интерфейсы; обеспечивает высококлассное обслуживание. Современные GRID-системы уже сейчас объединяют значительные ресурсы, расположенные в различных научных и технологических центрах, институтах, университетах мира. Они включают отдельные компьютеры, кластеры, локальные сети, суперкомпьютеры, хранилища информации, коммуникации, программные пакеты и инструментарий. Хотелось бы подчеркнуть, что на данном этапе речь идет, прежде всего, о глобализации использования ресурсов на качественно новом уровне. Степень развития GRID пока лишь позволяет существенно расширить возможности использования компьютерных ресурсов, но, как правило, не избавляет ученых от необходимости самостоятельно доводить свою задачу до уровня программного продукта - за исключением тех случаев, когда программное приложение уже разработано и внедрено в структуру GRID. Также следует понимать, что глобальные ресурсы объединяются (и эта тенденция, безусловно, будет сохранена и в дальнейшем) по направленности ведущихся исследований: крупные эксперименты физики высоких энергий, биологические разработки, медицинская диагностика и так далее. Такое объединение ресурсов в GRID называется "виртуальная организация" и соответствующим образом администрируется в среде GRID.

В настоящее время выделяют три основных типа грид-систем:

1.     Добровольные гриды — гриды на основе использования добровольно предоставляемого свободного ресурса персональных компьютеров;

2.     Научные гриды — хорошо распараллеливаемые приложения программируются специальным образом (например, с использованием Globus Toolkit);

3.     Гриды на основе выделения вычислительных ресурсов по требованию— обычные коммерческие приложения работают на виртуальном компьютере, который, в свою очередь, состоит из нескольких физических компьютеров, объединённых с помощью грид-технологий.

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

Сегодня можно выделить три типа GRID-проектов:

  1. GRID на основе использования добровольно предоставляемого свободного ресурса персональных компьютеров (Desktop GRID);
  2. Научная GRID;
  3. GRID на основе выделения вычислительных ресурсов по требованию (Enterprise GRID);

   Вначале появились проекты первого типа. Наиболее известными из них были проект SETI (поиск следов внеземных цивилизаций) и проект поиска новых простых чисел.

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

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

   В последнее время появилось большое число реализаций проектов второго типа – научная GRID. Наиболее ярким примером такой GRID является проект, реализованный в европейском ядерном центре CERN. Там накопился огромный объем данных по результатам физических исследований и для его обработки также нужны были огромные   вычислительные мощности, которых у CERN не было.

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

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

В настоящее время крупные вычислительные облака состоят из тысяч серверов, размещенных в центрах обработки данных (ЦОД). Они обеспечивают ресурсами десятки тысяч приложений, которые одновременно используют миллионы пользователей [1]. Облачные технологии являются удобным инструментом для предприятий, которым слишком дорого содержать собственные ERP, CRM или другие серверы, требующие приобретения и настройки дополнительного оборудования.

ERP (Enterprise Resource Planning – планирование ресурсов предприятия) – организационная стратегия интеграции производства и операций, управления трудовыми ресурсами, финансового менеджмента и управления активами, ориентированная на непрерывную балансировку и оптимизацию ресурсов предприятия посредством специализированного интегрированного пакета прикладного программного обеспечения, обеспечивающего общую модель данных и процессов для всех сфер деятельности предприятия.

CRM (Customer Relationship Management) – система управления взаимоотношениями с клиентами, то есть прикладное программное обеспечение, предназначенное для автоматизации стратегий взаимодействия с заказчиками (клиентами), в частности, для повышения уровня продаж, оптимизации маркетинга и улучшения обслуживания клиентов путем сохранения информации о клиентах и истории взаимоотношений с ними, установления и улучшения бизнес-процедур и последующего анализа результатов.

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

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

    Мультитенантность — это возможность изолированно обслуживать пользователей из разных организацией (т.е. независимых подписчиков SaaS) в рамках одного сервиса (одной инсталляции или развертывания). Основным здесь является соблюдение изолированности подписчиков друг от друга. Действительно, клиенты не обрадуются, если данные, которые они хранят в вашем SaaS приложении, будут доступны при поиске для других клиентов. Это явное нарушение изолированности. 

    Сейчас очень часто мультитенатность фигурирует совместно с терминов облачные вычисления, но фактически мультитенантность в некотором своем проявлении была актуальной и раньше, например, для хостинг-площадок. Например, SQL Server и IIS позволяют администрировать базы и сайты независимо: когда вы заходите в IIS Management Console удаленного сервера то, вы видите только свои сайты, аналогично для SQL Server – в Management Console вы видите и управляете только своей базой. Это так же можно назвать вариацией мультитенантности – все клиенты хостинга живут на одном веб-сервере или сервере базы данных, но работают только со своими узлами\элементами\данными. Мультитенантность так же является неотъемлемой частью многих ERP и CRM систем.

    Мультитенантная архитектура является кардинальным способом снижения стоимости вычислительных ресурсов и хранилища для SaaS решений: за счет минимально необходимого количества используемых ресурсов (разделяемой инфраструктуры) и их максимальной загрузки. Наиболее ощутимой выгода становится при сочетании мультитенантности и «неограниченного масштабирования» (когда нет необходимости затрачивать дополнительные средства на провиженинг дополнительных ресурсов или добавления новых серверов). Неограниченное масштабирование можно попробовать реализовать своими силами или использовать облачные PaaS платформы. 

Источники информации.

  1. http://www.osp.ru/dbms/1996/04/13031501/
  2. http://citforum.ru/database/articles/kossmann_sigmod_2010/2.shtml
  3. http://citforum.ru/database/classics/distr_and_paral_sdb/
  4. http://abc.vvsu.ru/Books/inform_tehnolog/page0019.asp
  5. http://citforum.ru/programming/distr/distr01.shtml
  6. http://swsys-web.ru/cloud-computing-basic-concepts-problems.html
  7. http://v8.1c.ru/

 

Просмотров: 443 | Добавил: Егор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Приветствую Вас, Гость!
Воскресенье, 24.11.2024