ГТ.М

ГТ.М
Разработчик(и)ФИС
Первоначальный выпуск1986 ; 38 лет назад ( 1986 )
Стабильный релиз
7.0-000 / 12 февраля 2021 г. ; 3 года назад ( 2021-02-12 )
Репозиторий
  • [cvs://anonymous:@fis-gtm.cvs.sourceforge.net/cvsroot/fis-gtm fis-gtm .cvs .sourceforge .net /cvsroot /fis-gtm]
Написано вC , сборка , M
Операционная системаLinux , AIX-системы
ТипБаза данных
ЛицензияAGPLv3 , фирменный
Веб-сайтsourceforge.net/projects/fis-gtm/

GT.M — это высокопроизводительная СУБД типа «ключ-значение» , оптимизированная для обработки транзакций . (Этот тип также называют «безсхемным», «без схемы» или « NoSQL ».) GT.M также является платформой разработки приложений и компилятором для стандартного языка ISO M , также известного как MUMPS .

GT.M, аббревиатура Greystone Technology M, была разработана Greystone Technology Corp в 1980-х годах. Это реализация стандарта ANSI M для AIX и Linux . Помимо сохранения традиционных функций M, GT.M также предлагает оптимизирующий компилятор , который создает объектный код, не требующий внутренних интерпретаторов во время выполнения.

Движок базы данных, открытый исходный код которого был создан в 2000 году, [1] поддерживается FIS . GT.M используется в качестве бэкэнда их банковского приложения FIS Profile , [2] и поддерживает банки в Испании , Франции , Италии , Нидерландах , Румынии и Индии ; Capital One 360 ​​в Соединенных Штатах; Tangerine (Scotiabank) в Канаде; Atom Bank ; [3] Tandem Bank ; Sainsbury's Bank ; [4] Scottish Widows и Barclays Direct в Великобритании. [5] Он также используется в качестве бэкэнда с открытым исходным кодом для системы электронных медицинских записей WorldVistA и других открытых EHR, таких как OpenVista от Medsphere. [6] Он указан как партнер Red Hat в области решений для здравоохранения с открытым исходным кодом . [7] Сегодня он состоит примерно из 2 миллионов строк кода. [ нужно обновление? ]

Технический обзор

GT.M состоит из языковой подсистемы, подсистемы базы данных и служебных программ. Языковая подсистема и подсистема базы данных тесно интегрированы, но каждая из них может использоваться без другой. Языковая подсистема и подсистема базы данных имеют общую организацию данных и типизацию.

Организация и типизация данных

Как и MUMPS, GT.M не имеет реального понятия различных типов данных, хотя строки (те, которые не являются полностью числовыми) должны быть заключены в кавычки, чтобы отличать их от переменных. Числа могут рассматриваться как строки цифр, или строки могут рассматриваться как числа числовыми операторами (принудительно, в терминологии MUMPS). Данные обрабатываются на основе контекста и правил GT.M: 1+"42"дает результат 43, первый символ 43равен 4, и 20+"30 DUCKS"равен 50(поскольку нечисловые символы отбрасываются во время числовых операций). [8]

Существует только одна структура данных — многомерные разреженные массивы (ключ-значение узлов, поддеревья и ассоциативная память — все это одинаково допустимые описания) с 32 индексами. Скаляр можно рассматривать как элемент массива с нулевыми индексами. Узлы с различным количеством индексов (включая один узел без индексов) могут свободно сосуществовать в одном массиве. Например, если кто-то хочет представить национальные столицы Соединенных Штатов :

Установить Capital("Соединенные Штаты")="Вашингтон"Установить Capital("Соединенные Штаты",1774,1776)="Филадельфия"Установить Capital("Соединенные Штаты",1776,1777)="Балтимор"

Переменные создаются по требованию при первом назначении. Таким образом, первая команда Set выше создаст переменную Capital. Переменные имеют область действия в языке и называются локальными переменными . Доступ к базе данных выглядит как доступ к массиву, например:

Установить ^Capital("Соединенные Штаты")="Вашингтон"

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

Команды Kill и ZKill используются для удаления поддеревьев значений.

GT.M использует Unicode ( ISO/IEC-10646 ) для поддержки международных наборов символов.

Подсистема базы данных

Логическая база данных процесса GT.M состоит из одного или нескольких пространств имен глобальных переменных , каждое из которых состоит из неограниченного количества глобальных переменных. Для каждого пространства имен глобальных переменных глобальный каталог сопоставляет глобальные переменные с файлами базы данных, где они фактически находятся. Неограниченное количество глобальных переменных может поместиться в один файл базы данных; глобальная переменная должна поместиться в один файл базы данных.

Файл базы данных состоит из блоков базы данных размером до 224 МБ (276 168 704). Блок базы данных кратен 512 байтам, максимальный размер составляет 65 024 байта. Обычно используемые размеры блоков составляют 4 КБ, 8 КБ и 16 КБ, поэтому при размере блока 8 КБ отдельная глобальная переменная может вырасти до 1792 ГБ. Узел глобальной переменной (глобальная переменная, индексы плюс значение) должен помещаться в один блок базы данных, и каждый блок имеет накладные расходы в 16 байт. Таким образом, наибольший узел, который поместится в базу данных с размером блока 4 КБ, составляет 4080 байт. Ключ (глобальная переменная плюс индексы) может иметь размер до 255 байт.

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

Механизм базы данных также поддерживает обработку транзакций . Таким образом, такой код, как:

TStart()  Установить ^Capital("Франция")="Париж"  Установить ^Country("Париж")="Франция"TCommit

реализует транзакцию ACID . GT.M использует оптимистичный контроль параллелизма для управления транзакциями.

Архитектура плагина позволяет шифровать базу данных для защиты данных в состоянии покоя. GT.M распространяется с эталонным плагином, который использует GnuPG .

Языковая подсистема

В отличие от базы данных, где узлы глобальных переменных должны помещаться в блок базы данных, строки локальных переменных могут увеличиваться до 1 МБ. Среда выполнения GT.M обеспечивает динамическое распределение хранилища со сборкой мусора. Количество локальных переменных и количество узлов в локальных переменных ограничены только хранилищем, доступным процессу. Область действия локальной переменной по умолчанию — это время жизни процесса. Локальные переменные, созданные в подпрограммах с помощью команды New, имеют более ограниченную область действия.

Подпрограммы GT.M динамически компилируются и связываются для выполнения в адресном пространстве каждого процесса. За исключением 32-битной реализации GT.M для платформы x86 Linux, объектные модули также могут быть размещены в общих библиотеках с помощью стандартной ldкоманды, в этом случае используемая память является общей. Это важно, поскольку такое приложение, как VistA, имеет более 20 000 подпрограмм, скомпилированный объектный код которых превышает 200 МБ. Крупная больница, работающая под управлением VistA, может иметь тысячи одновременно работающих пользовательских процессов.

За несколькими небольшими исключениями, GT.M включает в себя почти полную реализацию стандарта ISO M (ласково называемого MUMPS по историческим причинам).

В GT.M код M может свободно вызывать код C (или код на других языках с интерфейсом, совместимым с C), а код C может свободно вызывать код M (поэтому программа верхнего уровня может быть C main()). Например, есть модуль GT.M в CPAN, m_python для доступа из Python или привязка EGTM для Erlang .

Веб-сервисы, написанные на GT.M, могут быть развернуты под суперсервером Интернета , таким как inetd или xinetd . Веб-приложения могут использовать многоуровневое программное обеспечение, такое как EWD или CFMumps.

Платформы

GT.M полностью поддерживается на следующих платформах: [9]

GT.M больше не поддерживается на следующих платформах:

  • HP-UX по состоянию на октябрь 2015 г. (V6.2-002A)
  • OpenVMS по состоянию на декабрь 2014 г. (V6.2-001)
  • Solaris по состоянию на декабрь 2015 г. (V6.2-002A)

Кодовая база GT.M для Linux на IA-32 ( x86 ) включает изменения, необходимые для запуска на Cygwin в Microsoft Windows, но эта платформа не поддерживается.

Лицензирование

На Linux на x86-64 и IA-32 ( x86 ) и на OpenVMS на Alpha/AXP GT.M выпускается как свободное программное обеспечение с открытым исходным кодом (FOSS) в соответствии с условиями GNU Affero General Public License, версия 3. На других платформах он доступен по проприетарным лицензиям.

Распространенные приложения

GT.M в основном используется в здравоохранении и сфере финансовых услуг. Первое производственное использование GT.M было в 1986 году в Мемориальном травматологическом центре Элвиса Пресли в Мемфисе, штат Теннесси . Через FIS Profile он обеспечивает работу банков в Соединенных Штатах, Канаде, Испании, Франции и Италии.

Доступ SQL и ODBC к базам данных GT.M существует как отдельные коммерческие продукты. [11]

Ссылки

  1. ^ "Linux PR: Санчес предлагает базу данных GT.M как бесплатное ПО с открытым исходным кодом для пользователей Linux". 9 декабря 2000 г. Архивировано из оригинала 2000-12-09.
  2. ^ "Результаты сравнительного анализа профиля" (PDF) . redhat.com . Получено 9 июля 2023 г. .
  3. ^ "Британские банки-челленджеры: кто есть кто (и какие у них технологии)". FinTech Futures . 30 мая 2018 г.
  4. ^ "Sainsbury's Bank страдает от сбоя в работе систем – IBS Intelligence". Архивировано из оригинала 2019-10-13.
  5. ^ http://www.allbusiness.com/banking-finance/banking-lending-credit-services-cash/6129691-1.html [ мертвая ссылка ]
  6. ^ "Medical Record Applications". Архивировано из оригинала 2011-06-08 . Получено 2010-01-07 .
  7. ^ «Открытые технологии для предприятий». www.redhat.com .
  8. ^ «Руководство программиста GT.M — Типы данных».
  9. ^ "Примечания к выпуску GT.M V6.3-009". tinco.pair.com .
  10. ^ "Порт на Linux на ARM · Выпуск № 61 · YottaDB/YDB". GitHub .
  11. ^ "Сравнение систем управления базами данных: MySQL, PostgreSQL, MSSQL Server, MongoDB, Elasticsearch и другие". AltexSoft . Получено 2023-09-08 .

Дальнейшее чтение

  • Игнасио Вальдес (17 ноября 2002 г.), К.С. Бхаскар получает награду LMN за достижения в 2002 г., linuxmednews.com
  • Страница проекта на SourceForge
  • Документация GT.M
  • YottaDB, форк GT.M
  • EGTM: привязка GT.M для Erlang
  • nodem: привязка GT.M для Node.js
Взято с "https://en.wikipedia.org/w/index.php?title=GT.M&oldid=1238498906"