ГТ.М
Разработчик(и) | ФИС |
---|---|
Первоначальный выпуск | 1986 год |
Стабильная версия | 7.0-000
/ 12 февраля 2021 г |
Репозиторий |
|
Написано в | С , сборка , М |
Операционная система | Линукс , AIX |
Тип | База данных |
Лицензия | AGPLv3 , проприетарный |
Веб-сайт | исходная кузня |
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) в Канаде; Атом Банк ; [ 3 ] Тандем Банк ; Банк Сейнсбери ; [ 4 ] Scottish Widows и Barclays Direct в Великобритании. [ 5 ] Он также используется в качестве серверной части с открытым исходным кодом для системы электронных медицинских карт WorldVistA и других электронных медицинских записей с открытым исходным кодом, таких как 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. Скаляр можно рассматривать как элемент массива с нулевыми индексами. Узлы с различным количеством индексов (включая один узел без индексов) могут свободно сосуществовать в одном массиве. Например, если кто-то хочет представить национальные столицы Соединенных Штатов :
Set Capital("United States")="Washington" Set Capital("United States",1774,1776)="Philadelphia" Set Capital("United States",1776,1777)="Baltimore"
Переменные создаются по требованию при первом назначении. Таким образом, первая команда Set выше создаст переменную Capital
. Переменные имеют область действия в языке и называются локальными переменными . Доступ к базе данных выглядит как доступ к массиву, например:
Set ^Capital("United States")="Washington"
но каретка (^) означает, что это доступ к базе данных. Переменные, используемые для доступа к базе данных, имеют единую глобальную область действия и, конечно же, сохраняются и совместно используются процессами. Их называют глобальными переменными . Важны первые 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 () Set ^Capital("France")="Paris" Set ^Country("Paris")="France" TCommit
реализует транзакцию ACID . GT.M использует оптимистичный контроль параллелизма для управления транзакциями.
Архитектура подключаемых модулей позволяет шифровать базу данных для защиты хранящихся данных. GT.M распространяется с эталонным плагином, использующим GnuPG .
Языковая подсистема
[ редактировать ]Этот раздел может быть слишком техническим для понимания большинства читателей . ( Ноябрь 2019 г. ) |
В отличие от базы данных, где узлы глобальных переменных должны помещаться в блок базы данных, строки локальных переменных могут вырасти до 1 МБ. Среда выполнения GT.M обеспечивает динамическое распределение памяти со сборкой мусора. Количество локальных переменных и количество узлов в локальных переменных ограничено только объемом памяти, доступной процессу. Областью действия локальной переменной по умолчанию является время жизни процесса. Локальные переменные, созданные в подпрограммах с помощью команды «Создать», имеют более ограниченную область действия.
Подпрограммы GT.M динамически компилируются и компонуются для выполнения в адресном пространстве каждого процесса. За исключением 32-битной реализации GT.M для платформы Linux x86, объектные модули также можно размещать в разделяемых библиотеках со стандартом 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 ]
- AIX в системе IBM p
- Linux на архитектурах x86_64 и IA-32 ( x86 ). YottaDB Форк GT.M добавляет поддержку ARM . [ 10 ]
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 ]
Ссылки
[ редактировать ]- ^ «Linux PR: Санчес предлагает пользователям Linux базу данных GT.M в качестве бесплатного программного обеспечения с открытым исходным кодом» . 9 декабря 2000 г. Архивировано из оригинала 9 декабря 2000 г.
- ^ «Результаты сравнительного тестирования профиля» (PDF) . redhat.com . Проверено 9 июля 2023 г.
- ^ «Британские банки-претенденты: кто есть кто (и какие у них технологии)» . Финтех-фьючерсы . 30 мая 2018 г.
- ^ «В банке Sainsbury's произошел сбой в работе систем – IBS Intelligence» . Архивировано из оригинала 13 октября 2019 г.
- ^ http://www.allbusiness.com/banking-finance/banking-lending-credit-services-cash/6129691-1.html [ мертвая ссылка ]
- ^ «Заявки на медицинскую документацию» . Архивировано из оригинала 8 июня 2011 г. Проверено 7 января 2010 г.
- ^ «Технологии с открытым исходным кодом для предприятия» . www.redhat.com .
- ^ «Руководство программиста GT.M — Типы данных» .
- ^ «Примечания к выпуску GT.M V6.3-009» . Tinco.pair.com .
- ^ «Перенос на Linux на ARM · Проблема № 61 · YottaDB/YDB» . Гитхаб .
- ^ «Сравнение систем управления базами данных: MySQL, PostgreSQL, MSSQL Server, MongoDB, Elasticsearch и других» . АльтексСофт . Проверено 8 сентября 2023 г.
Дальнейшее чтение
[ редактировать ]- Игнасио Вальдес (17 ноября 2002 г.), К.С. Бхаскар получает награду LMN за достижения 2002 г. , linuxmednews.com