Распределенные вычислительные системы — основное направление развития программного обеспечения. Совершенствование сетевых технологий и процессорных систем позволяет реализовать давнюю мечту программистов — объединить несколько независимых компьютеров в единый вычислительный комплекс. При создании таких вычислительных систем у их разработчиков часто возникает необходимость в передаче данных между приложениями и в их синхронизации. Для этого обычно используют мониторы транзакций. Однако для создания небольших распределенных систем использовать монитор транзакций слишком расточительно.
В некоторых случаях достаточно иметь центральное хранилище информации, через которое можно организовать передачу данных между частями приложений или их синхронизацию. Использовать для этого систему управления базами данных сложно, так как СУБД требует значительных компьютерных ресурсов и кропотливого программирования. Применение более простых систем позволило бы разработчикам упростить работу распределенных приложений. Для синхронизации распределенных вычислительных комплексов предназначена технология T-Space, которая разработана в Алмаденском центре исследований корпорации IBM. Эта технология для организации взаимодействия элементов системы использует язык программирования Java и модель хранения данных, которую можно назвать хранилищем кортежей (tuplespace).
«Хранилище кортежей»
Прежде чем приступать к описанию технологии T-Space, необходимо несколько слов сказать о системе хранения данных в виде хранилища кортежей. Понятие такого хранилища было введено в рамках известного исследовательского проекта Linda. Целью этого проекта была разработка языка параллельных вычислений с помощью добавления в стандартные последовательные языки (такие как, Си и Фортран) элементов взаимодействия с помощью таких структур данных как кортежи. В результате этого проекта должны были появиться такие языки, как C-Linda или Fortran-Linda.
Основной единицей информации в хранилище кортежей является кортеж — последовательность полей, для которых определены значение и тип. Хранилище кортежей представляет собой доступный всем процессам одинаковый набор кортежей, которые любой процесс может получить с помощью определенного шаблона. Шаблон — это кортеж, у которого есть одно или более формальных полей, то есть такое поле, у которого значение не определено, но имеет определенный тип. Выборка кортежей из хранилища выполняется с помощью механизма соответствия хранимых кортежей заданному шаблону. Кортеж соответствует шаблону, если он имеет одинаковое с шаблоном количество полей, значения всех неформальных полей соответствуют значениям соответствующих полей шаблона, а тип всех формальных полей соответствует типу формальных полей шаблона.
Шаблоны (float, «hello», int)
(float, String, 345.0)
Кортежи
<2.24, «hello», 345> Да Нет
<2.24, «hello», 345.0> Нет Да
<> Нет Нет
Принцип соответствия кортежа шаблону проиллюстрирован в примере. В нем первый кортеж не соответствует второму шаблону потому, что целое значение 345 кортежа не равно действительному — 345.0, указанному в шаблоне. Второй же кортеж не соответствует первому шаблону потому, что типы последних значений кортежа и шаблона не совпадают. Пустой кортеж не соответствует ни одному шаблону.
Принципы работы с хранилищем кортежей следующие. Запись кортежей в хранилище выполняется с помощью простой операцией write, которой передается кортеж в качестве аргумента. Чтение выполняется с помощью операции read или take с помощью принципа соответствия — из хранилища выбирается первый кортеж, который соответствует заданному в аргументе шаблону. Операция чтения может быть как с удалением прочитанного кортежа (take), так и без удаления (read). Поскольку модель хранилища не определяет его структуры, то последовательность получения кортежей из хранилища зависит от его реализации. При этом если есть несколько кортежей, соответствующих шаблону, то заранее не определено, какой из них будет выбран первым. Предусмотрены два варианта операций чтения — блокирующее и неблокирующее. В первом случае, при отсутствии кортежа в хранилище, операция чтения будет блокирована до тех пор, пока соответствующий шаблон не будет в него записан. Во втором случае, при тех же условиях операция чтения выдаст сообщение «кортеж не найден».
Хранилище кортежей предполагалось использовать для организации взаимодействия и синхронизации различных процессов. Процесс, которому нужно передать данные другим процессам, просто записывает их в хранилище, а процесс-потребитель может их оттуда получить в любой момент. Причем так можно организовать не только передачу данных от одного процесса другому, но и синхронизовать два или более процессов. Для этого можно использовать механизм блокирующего чтения, при котором функция чтения блокирует выполнение процесса до тех пор, пока другой процесс не запишет в хранилище «разрешающий» кортеж.
Использование хранилища кортежей имеет следующие преимущества по сравнению с передачей сообщений:
Анонимность получателя. При отправлении сообщений, процесс-отправитель должен определить получателя сообщения. Использование же в хранилище кортежей ассоциативного чтения позволяет отправителю не указывать получателя сообщения — он просто помещает данные в хранилище, а кто ими воспользуется — уже не имеет значения.
Масштабируемость. Поскольку при взаимодействии через хранилище кортежей не требуется явная адресация, то оно может быть неограниченно большим: работать на одной машине, кластере или на нескольких отдельных машинах. Использование ассоциативной выборки позволяет избежать проблемы глобальных имен в распределенной системе.
Независимость от времени. Поскольку кортеж внутри хранилища живет своей жизнью, которая не зависит от процесса-отправителя, то через хранилище можно организовать взаимодействие даже между разнесенными во времени процессами.
Фактически, хранилище кортежей является системой передачи сообщений, которая дополнена репозиторием и ассоциативной адресацией. Таким образом, Пространство представляет собой нечто среднее между системой передачи сообщений и СУБД. При этом от системы передачи сообщений наследуется простота составления запроса к системе, а от СУБД — более широкая функциональность.
Несмотря на определенные достоинства, хранилище кортежей имеет и некоторые недостатки. Одним из них является то, что алгоритм соответствия может работать только на одной платформе, поскольку в различных платформах приняты различные способы определения типа объектов. Кроме того, наличие только простых операций чтения и записи не позволяет решать многие проблемы управления накопленными в хранилище данными. Отсутствие определенной структуры хранения кортежей усложняет обработку и анализ большого объема данных, который может содержаться в хранилище кортежей. Попытка решить эти недостатки с помощью языка Java и современных технологий баз данных привели к возникновению T-Space.
T-Space
В качестве платформы в T-Space выбрана Java, которая позволяет работать в различных операционных системах, сохраняя при этом одинаковую типизацию объектов. Кроме того, сетевые возможности Java позволяют реализовать с ее помощью распределенное хранилище кортежей, которое уже будет работать не только как среда передачи данных между процессами или компьютерами, но и частично сможет заменить сервер СУБД. Таким образом, можно будет существенно расширить возможности, заложенные в архитектуре хранилища картежей, объединив в T-Space универсального посредника между распределенными элементами приложений и систему хранения данных. Кроме того, в T-Space предусмотрены различные дополнения, которые позволяют решать с ее помощью более сложные задачи.
Технология T-Space имеет следующие характерные особенности:
Расширенный набор операторов. Кроме стандартных для хранилища кортежей операторов write и read (с различными вариантами исполнения), добавляются и некоторые дополнительные операторы для управления данными, такие как scan и consumingscan.
Динамическое изменение поведения. Кроме дополнительных операторов, технология T-Space предусматривает возможность определять новые операторы, которые можно динамически загружать на сервер T-Space.
Целостность репозитория. В T-Space используется более современный механизм управления хранимыми данными, который похож на аналогичные механизмы в СУБД. Он позволяет выполнять занесение новых данных в репозиторий с сохранением контекста и целостности транзакций.
Индексация и выборка данных, аналогичная СУБД. В T-Space предусмотрены механизмы индексации хранимых данных для более эффективного доступа к ним. Кроме того, выборка данных из репозитория T-Space производиться с помощью запросов, что позволяет улучшить пользовательский интерфейс.
Контроль доступа. Разработчики системы на T-Space могут определять свою политику безопасности для доступа пользователей к данным. Для этого в системе предусмотрены идентификаторы пользователей, их группы, разрешения для каждой операции и иерархия хранилищ.
T-Space может быть использована в тех приложениях, для которых необходимо распространение данных между различными машинами или их хранение на различных машинах, а также в качестве наиболее простой СУБД. Фактически, T-Space можно использовать как базу данных, с неограниченным количеством типов, удобным пользовательским интерфейсом и простым языком составления запросов. Однако, поскольку технология находиться только на начальном этапе развития, то в ней нет механизмов распределенных транзакций, ограничен набор способов хранения информации, а также нет механизмов координации работы нескольких серверов T-Space. Если потребности приложения по использованию элементов базы данных не очень большие, то T-Space дает программистам хорошую возможность обойтись в разработке системы небольшим объемом памяти и упрощенными запросами. При этом сохраняются возможности распределенных вычислений и межплатформенного взаимодействия.
Реализация T-Space
T-Space представляет собой хранилище кортежей, работающее по схеме «клиент-сервер». Клиент в T-Space может послать на сервер любой кортеж, сопроводив его указанием о том, какую именно операцию сервер должен с ним сделать. Определение кортежа в T-Space стандартное — упорядоченная последовательность полей, для каждого из которых определены значение и его тип. Технологию T-Space разделить на три части: интерфейс с приложениями на клиенте, сам клиент и сервер.
Использование и администрирование PPP Павел Храмцов Книга «Using & Managing PPP» посвящена протоколу PPP (Point to Point Protocol) ? ключевой технологии организации удаленного подключения к Internet. Чтобы понять, насколько важен PPP, достаточно сказать, что каждый, кто, покупает карточку
Связывания для объектных языков Эндрю Эйзенберг SQLJ ЧАСТЬ 0, называемая теперь SQL/OLB
Около полутора лет неформальная и открытая группа компаний организовывала совещания, на которых рассматривалось, каким образом язык программирования Java и реляционные базы данных могли бы использоваться совместно.
Управление информационными системами: базовые концепции и тенденции развития Павел Иванов Средства сетевого и системного администрирования никогда не занимали доминирующих позиций в корпоративных информационных системах. Традиционно отводившаяся им вспомогательная роль привела к тому, что структура и функции ПО данного класса оказались
Компонентные технологии в системах промышленной автоматизации Надежда Куцевич Все, имеющие дело с разработкой приложений для систем SCADA (Supervisory Control and Data Acquisition) ощущали недостаток заложенных функциональных возможностей. Ни один законченный продукт не может удовлетворить всех потребностей пользователей