Открытый мир М-технологии

Дмитрий Носов
1996 г.

Во времена СМ ЭВМ была такая ОС "ДИАМС". Это в советском варианте. На самом деле фирма DEC называла ее аббревиатурой MUMPS, созвучной с английским словом "желтуха". Действительно, прототип системы был разработан для какого-то госпиталя там у них, в штате Массачусетс. С тех пор MUMPS избавилась от своего устрашающего названия, отпочковалась от DEC, стандартизована ANSI и теперь под именем М-технологии приносит большую выгоду как своим владельцам, так и их клиентам.

М-технология сегодня - это популярная во всем мире среда для разработки приложений. Она не является собственностью какого-либо производителя или дистрибьютора, а представляет собой часть стандарта ANSI. Этот стандарт (ANSI X11.1) был принят без каких-либо изменений международной организацией по стандартизации ISO.

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

Стандарты ANSI/ISO включают разделы по переносимости, определяя минимальный набор требований, которым должна удовлетворять М-система, и которые прикладные программисты могут использовать для гарантии переноса приложения между всеми платформами.

М-технология: основные компоненты

Управление данными

М - единственный процедурный язык стандарта ANSI с возможностью создания и манипулирования встроенной базой данных. Данные в М хранятся в разреженных массивах, основанных на В-деревьях, - одном из самых эффективных методов хранения больших объемов данных и текстов.

Управление транзакциями

Возможность управления транзакциями в языке предлагается для поддержки целостности базы данных в случае возникновения аварийных ситуаций в системе, например, в случае сбоев с электроснабжением. В сочетании с реализацией частичного копирования данных или копирования в режиме on-line это позволяет М-технологии поддерживать исключительно надежную и дешевую базу данных.

Встроенная сетевая поддержка

Поддерживаемые возможности включают в себя: распределенную базу данных и управление распределенными процессами, взаимодействие с другими М-системами (с помощью ОМI - Ореn М Interconnectivity, стандарта взаимодействия М-систем), а также АРI, то есть доступ к базе данных и другим возможностям из любой среды программирования. Эти возможности позволяют разработчикам строить открытые М-приложения, которые легко интегрируются в корпоративные архитектуры.

Генераторы и инструментарии

Множество различных инструментов и генераторов приложений, основанных на М, доступно для удовлетворения нужд различного рода требований при разработке приложений. Инструменты имеют широкий диапазон: от SQL/ODBC-серверов, объектно-ориентированных инструментариев, процессоров запросов и генераторов отчетов до генераторов приложений с графическим интерфейсом пользователя.

ЯзыкМ

Язык М является стандартом ANSI с 1977 года. Пересмотренные версии выходили в 1984, 1990 и 1995 годах. Аналогичный стандарт был также адаптирован в ISO и FIPS (Federal Information Processing Standard). Всемирный комитет по развитию М (МDС), поддерживаемый пользователями, продолжает модернизировать стандарт в соответствии с поступающими запросами и предложениями, благодаря чему М-технология позволяет поддерживать такие новые достижения, как распределенные базы данных, Windows и графические интерфейсы пользователя, SQL и архитектуру "клиент-сервер"; при этом стандартом гарантируется совместимость "снизу вверх" для защиты инвестиций.

М - это компактный язык программирования, включающий около 20 команд и поддерживающий более 40 функций. Он имеет мощные возможности по обработке строк и управлению базой данных с поддержкой многопользовательского доступа и встроенной многозадачности. М-код исключительно компактен: обычно он занимает около 8% от размера СОВOL-кода.

М заработал популярность благодаря простой и понятной своей природе. Несмотря на то, что язык включает относительно маленький набор команд, он обеспечивает мощь и гибкость языка 3-го поколения. Он не включает элементы по управлению ресурсами (такие как управление памятью), требуемые другими 3GL-языками.

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

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

М автоматически строит и поддерживает эффективную иерархическую структуру для дискового хранилища, не требующую никакого захвата области под файл, открытия и закрытия файлов или реорганизации дискового пространства. Таким образом, М обеспечивает завершенную систему управления данными. Эти возможности обеспечивают легкость программирования, позволяя опытным программистам, не знакомым с М, достичь исключительной производительности и эффективности в работе. Промышленные тесты демонстрируют 8-12-кратное по сравнению с COBOL увеличение производительности при разработке приложений.

Управление данными

М-технология включает в себя систему управления базой данных, которая основана на иерархической разреженной структуре данных. Иерархическая база данных в М-технологии позволяет представлять последовательную, иерархическую, сетевую и реляционную структуры. М-технология может также организовывать доступ к файлам других баз данных через описанные интерфейсы (АРI). Иерархия данных в М представляется как многомерный массив. Он может быть использован для хранения данных в локальной памяти или на диске, чем обеспечивается эффективная и исключительно легкая в управлении база данных. Полная интеграция базы данных и среды программирования облегчает переносимость приложения, так как, в отличие от большинства других языков программирования, здесь нет необходимости выбирать и интегрировать систему управления базами данных для каждой платформы.

Логическая структура базы данных

Все элементы данных в М являются символьными строками. Типов данных нет. Множества данных могут быть представлены как многомерные массивы. Индексные переменные, такие кaк CUST(“SOUTH”) или CUST(“NORTH”,”JONES”), идентифицируют узлы массива, который может быть представлен в виде древовидного графа.

Неиндексированная переменная, как, например, CUST, также называемая скалярной переменной, является просто корневым узлом дерева.

Деревья в М являются разреженными. Данные существуют только в узлах, которые действительно определены. В предыдущем примере определены только пять узлов, и пространство будет распределено только для этих пяти узлов. Более того, узел может быть логически представлен только существованием узлов-потомков. Например, адрес CUST(“NORTH”,”JONES”) предполагает существование узла-родителя CUST(“NORTH”) даже в случае отсутствия данных в этом узле-родителе.

Узлы идентифицируются уникально ссылками на них. Ссылки, например, CUST(“NORTH”), имеют форму Имя переменной (индекс, индекс,...).

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

Данные, хранящиеся в данном узле, могут быть любой строкой из любых символов, смысл и структура которой определяется М-программой по манипулированию этими данными. Данные в узле могут содержать просто имя или набор данных с фиксированной длиной или переменной длиной, разделенных заданным разделителем.

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

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

Иерархические структуры данных, неотъемлемо поддерживаемые языком М, могут быть как локальными, так и глобальными. Локальные данные существуют в памяти и доступны только для процесса, создавшего их. Локальные данные являются временными и теряются с окончанием работы процесса. Глобальные данные помещаются на диск и с учетом авторизованного доступа могут быть доступны для различных процессов. Хранящиеся на диске глобальные данные постоянны: они-то и представляют собой базу данных М.

В М переменные, имена которых начинаются с символа "^", являются глобальными. Все другие - локальные. Одни и те же команды манипулируют и локальными, и глобальными данными. М не требует открытия файла или декларирования записи.

Физическая структура базы данных

Физически база данных М представляет собой набор дисковых блоков. Каждый блок распределяется для данного глобального массива по мере необходимости. Вся база данных М является динамической: нет необходимости в предопределении дискового пространства для глобальных переменных.

Многие производители реализуют базу данных М в сбалансированных деревьях, включающих три типа блоков: блоки директории, блоки указателей и блоки данных.

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

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

Преимуществами такого подхода являются:

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

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

- Дисковые ресурсы для глобальных массивов распределяются автоматически и высвобождаются, когда они более не требуются для этого массива.

- Для любого глобального массива одно и то же количество физических блоков указателей будет задействовано для поиска элемента данных независимо от его уровня в логической иерархии.

-Узлы данных идентифицируются указателями, которые содержат значения множественных индексов.

- Все ключевые данные хранятся физически в упорядочивающей ASCII-последовательности с применением алгоритмов по сжатию ключа для достижения высокой степени заполнения дискового пространства. Индексы могут быть построены просто добавлением в глобальный массив элементов с необходимыми данными в качестве ключа.

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

Управление транзакциями

Управление транзакциями – это способность назначить группу изменений базы данных, которые должны быть выполнены вместе, чтобы гарантировать логическую целостность базы данных. М включает возможности, позволяющие пользователям определить как начало транзакции, так и точку, в которой изменения должны быть завершены или записаны на диск. Управление транзакциями в языке М обеспечивается командами Tstart, Tcommit, Trollback и Trestart.

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

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

Для критичных систем в реализациях М предусмотрены теневые серверы, которые автоматически поддерживают дублирующую базу данных, позволяя быстро восстановить систему после сбоя.

Сохранение в режиме on-line может выполняться без остановки работы пользователей, с непрерывным доступом к системе в течение 24 часов в сутки.

Поддержка сети

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

База данных М может размещаться на нескольких узлах сети. Целостность базы данных в сети М-система поддерживает автоматически.

Файлы, расположенные на удаленном узле системы, могут быть доступны и заблокированы простым указанием префикса с именем узла к имени файла. Большинство реализаций М позволяет строить явные сетевые ссылки, позволяющие системным администраторам выбирать местонахождение данных независимо от прикладных программ.

Реализации М позволяют другим языкам получать доступ непосредственно к данным М через вызовы функций АРI или ОDВС.

Поддержка SQL

Система управления базой данных в М поддерживает реляционные инструменты и SQL-доступ через ОDВС. Стандарты ANSI М и SQL-92 включают поддержку погруженного SQL в язык М.

Поддержка SQL в М позволяет видеть данные, хранящиеся в базе данных М в виде реляционных таблиц, и работать с ними с помощью SQL-команд.

Поддержка Windows-интерфейсов

Стандарт М включает поддержку оконных интерфейсов через АРI, созданный в сотрудничестве с группой Р1201.1 по разработке стандарта IЕЕЕ. М является первым языком, имеющим встроенную часть стандарта АNSI/ISO по управлению окнами. Уникальной возможностью поддержки окон в М-технологии является то, что она не зависит от типа используемой платформы. Так, М-код, написанный для MS Windows, будет работать без каких-либо изменений в Х-Windows/Motif, Windows NT или другой графической среде. М Windows Application Program Interface (MWAPI) определяет основные оконные возможности, которые могут быть выполнены М-cистемой на любой подходящей оконной платформе.

M-технология: связь с другими стандартами

  • SQL. ANSI-стандарт для SQL-92 включает спецификацию по связи с М, а SQL и М-команды могут совместно использоваться для ее создания. Возможности SQL-сервера и поддержка протоколов SQL-доступа, включая ODBC, позволяют получать данные из других приложений. Интеграция двух стандартизованных ANSI-языков (М и SQL) дает в результате переносимую и мощную среду разработки.
  • MWAPI. Оконный интерфейс программирования в М (MWAPI) был разработан в сотрудничестве с группой IEEE, которая курирует оконные стандарты и обеспечивает не зависимый от платформы интерфейс для менеджеров графического интерфейса пользователя. Язык М –первый язык, который имеет поддержку оконной среды как часть ANSI стандарта. Драйверы, доступные для MWAPI, поддерживают MS Windows (включая DDE), Windows NT, X-Windows/Motif.
  • X-Windows. Для эффективной поддержи протоколов X-коммуникаций в стандарт М включены интерфейсы для вызова программ (пакетов) X-Windows.
  • X3.64. M включает поддержку символьных устройств, описанную в стандарте ANSI 3.64 (также известного как VT-100). Использование такой поддержки в М не обязательно, но рекомендовано для реализации аппаратной независимости и переносимости.
  • GKS. Поддержка стандарта графического интерфейса, описанного в стандарте GKS (ядро графической системы), также позволяет М-разработчикам получить аппаратно-независимые возможности для работы с графическими дисплеями, плоттерами и принтерами.

Взаимодействие М и других приложений

М предполагает множество АРI-средств для возможности вызовов приложением функций управления в среде М. Например, приложение может вызвать М для доступа к глобальной базе данных или вызвать М-программу.

В частности, эти возможности собраны в связке М и Visual Basic (таким образом, возникает среда разработки с двумя языками). Во-первых, М-процессы могут быть вызваны и модернизированы из среды Visual Basic. Во-вторых, М-код может получать доступ для контроля над процедурами Visual Basic и переключаться событиями Visual Basic. Поэтому можно построить GUI-приложение в среде Visual Basic, написав только М-код. Такие возможности, которые объединяют мощь базы данных и продуктивность программирования в М и возможности графического интерфейса Visual Basic, позволяют разработчикам создавать гибкие и мощные Windows-приложения.

* * *

М поддерживается множеством ассоциаций пользователей (МТА) или групп пользователей в Соединенных Штатах, Великобритании, странах Европы (включая и Восточную Европу) и Южной Америке. Это некоммерческие группы, которые не зависят от производителя и объединяют лучших членов со стороны аппаратных и программных производителей, академических заведений и коммерческих конечных пользователей.

В Европе МТА-Е действует как объединяющая организация, координирующая деятельность различных локальных групп, включающих Бельгию, Францию, Финляндию, Германию, Нидерланды, Испанию, Швейцарию, Великобританию и Ирландию. МТА-Е ежегодно организует конференции, в которых принимают участие производители М-инструментариев и услуг, разработчики прикладных систем, VAR'ы и конечные пользователи. Конференция преследует как научные, так и коммерческие цели, предоставляя возможность для презентаций технических и обучающих материалов с участием в большой выставке. Кроме того, каждая локальная группа проводит национальные и региональные встречи.

(С использованием материалов “Technical Brief” Европейской ассоциации пользователей М-технологии.)


Новости    О компании   Продукты   Технологии   Партнеры   Проекты   Обучение   Пресса   Контакты    Цены   Содержание

© Copyright 2021-2022
ЗАО
Информ Икс  Москва