WikiDer > GT.M
Эта статья слишком полагается на Рекомендации к основные источники. (Декабрь 2011 г.) (Узнайте, как и когда удалить этот шаблон сообщения) |
Разработчики) | FIS |
---|---|
изначальный выпуск | 1986 |
Стабильный выпуск | 6.3-009 / 27 июня 2019 г. |
Репозиторий |
|
Написано в | C, сборка, M |
Операционная система | Linux, AIX |
Тип | База данных |
Лицензия | GNU AGPLv3, проприетарный |
Интернет сайт | fis-gtm |
GT.M это высокопроизводительная пара "ключ-значение" база данных двигатель оптимизирован для обработка транзакции. (Это тип, также называемый «без схемы», «без схемы» илиNoSQL. ") GT.M также является платформой для разработки приложений и компилятор для ISO стандарт M язык, также известный как МАМПЫ.
GT.M, сокращение от Greystone Technology M, был разработан Greystone Technology Corp в 1980-х годах. Это реализация стандарта ANSI M для AIX и Linux. В дополнение к сохранению традиционных особенностей M, GT.M также предлагает оптимизирующий компилятор который создает объектный код, не требующий внутреннего переводчики во время исполнения.
Движок базы данных, открытый в 2000 году,[1] поддерживается FIS. GT.M используется как серверная часть их Профиль FIS банковское приложение,[2] и это сила ING DIRECT банки Испании, Франции, Италии, Голландии, Румынии и Индии; Capital One 360 в США; Мандарин (Scotiabank) в Канаде; Атом Банк;[3] Тандем Банк; Sainsbury's Bank;[4] Scottish Widows и Barclays Direct в Великобритании.[5] Он также используется как серверная часть с открытым исходным кодом для Электронная медицинская карта система WorldVistA и другие электронные записи с открытым исходным кодом, такие как OpenVista от Medsphere.[6] Он указан как партнер по решениям для здравоохранения с открытым исходным кодом Красная шляпа.[7] Сегодня он состоит примерно из 2 миллионов строк кода.[нужно обновление?]
Технический обзор
GT.M состоит из языковой подсистемы, подсистемы базы данных и служебных программ. Подсистема языка и подсистема базы данных тесно интегрированы, но каждая из них может использоваться друг без друга. Подсистемы языка и базы данных имеют общую организацию данных и типизацию.
Организация данных и набор
Эта секция не цитировать любой источники. (Ноябрь 2019) (Узнайте, как и когда удалить этот шаблон сообщения) |
В GT.M всего два типа данных - канонические числа и строки. Строка - это любая произвольная последовательность байтов (включая нули). Строка, например "42"
каноническое число. Типизация данных является динамической, и преобразование между двумя типами выполняется по мере необходимости «на лету»: 1+"42"
дает результат 43
, и первый символ 43
является 4
.
Существует только одна структура данных - многомерные разреженные массивы (узлы ключ-значение, поддеревья и ассоциативная память - все равно допустимые описания) с до 32 нижних индексов. Скаляр можно рассматривать как элемент массива с нулевыми индексами. Узлы с различным количеством индексов (включая один узел без индексов) могут свободно сосуществовать в одном массиве. Например, если кто-то хотел представить национальные столицы США:
: Set Capital ("United States") = "Washington": Set Capital ("United States", 1774,1776) = "Philadelphia": Set Capital ("United States", 1776,1777) = "Baltimore"
При первом назначении переменные создаются по запросу. Таким образом, первая команда Set выше создаст переменную Капитал
. Переменные имеют область видимости в языке и называются локальные переменные. Доступ к базе данных выглядит как доступ к массиву, например:
: Set ^ Capital ("United States") = "Вашингтон"
но каретка (^) означает, что это доступ к базе данных. Переменные, используемые для доступа к базе данных, имеют единую глобальную область видимости и, конечно, сохраняются и совместно используются процессами. Они называются глобальные переменные. Первые 31 символ имени переменной имеют значение.
Команды Kill и ZKill используются для удаления поддеревьев значений.
GT.M использует Unicode (ISO / IEC-10646) для поддержки международного набора символов.
Подсистема базы данных
Эта секция не цитировать любой источники. (Ноябрь 2019) (Узнайте, как и когда удалить этот шаблон сообщения) |
В логическая база данных процесса GT.M состоит из одного или нескольких пространства имен глобальных переменных, каждая из которых состоит из неограниченного числа глобальных переменных. Для каждого пространства имен глобальных переменных глобальный каталог отображает глобальные переменные в файлы базы данных, где они фактически находятся. Неограниченное количество глобальных переменных может поместиться в одном файле базы данных; глобальная переменная должна помещаться в один файл базы данных.
Файл базы данных содержит до 224M (276 168 704) блоков базы данных. Блок базы данных кратен 512 байтам, а максимальный размер - 65 024 байта. Обычно используемые размеры блока составляют 4 КБ, 8 КБ и 16 КБ, поэтому при размере блока 8 КБ отдельная глобальная переменная может вырасти до 1792 ГБ. Узел глобальной переменной (глобальная переменная, индексы плюс значение) должен помещаться в один блок базы данных, и каждый блок имеет 16-байтовые накладные расходы. Таким образом, самый большой узел, который поместится в базе данных с размером блока 4 КБ, составляет 4080 байт. Ключ (глобальная переменная плюс индексы) может иметь длину до 255 байт.
Механизм базы данных не имеет демонов, и процессы, обращающиеся к базе данных, работают с обычными идентификаторами пользователей и групп - процесс имеет доступ к файлу базы данных тогда и только тогда, когда владелец и разрешения этого файла базы данных (плюс любое многоуровневое управление доступом, такое как SELinux) разрешает доступ. Каждый процесс имеет в своем адресном пространстве всю логику, необходимую для управления базой данных, а процессы взаимодействуют друг с другом для управления файлами базы данных. Когда файл базы данных ведется в журнал, обновления записываются в файлы журнала перед записью в файлы базы данных, а в случае сбоя системы файлы базы данных могут быть восстановлены из файлов журнала.
Ядро базы данных также поддерживает обработка транзакции. Итак, такой код, как:
TStart () Установить ^ Capital ("France") = "Paris" Set ^ Country ("Paris") = "France" TCommit
реализует КИСЛОТА сделка. GT.M использует оптимистичный контроль параллелизма для управления транзакциями.
Архитектура подключаемого модуля позволяет шифровать базу данных для защиты данных в состоянии покоя. GT.M распространяется со справочным плагином, который использует GnuPG.
Подсистема языка
Эта секция не цитировать любой источники. (Ноябрь 2019) (Узнайте, как и когда удалить этот шаблон сообщения) |
Эта секция может быть слишком техническим для большинства читателей, чтобы понять. Пожалуйста помогите улучшить это к сделать понятным для неспециалистов, не снимая технических деталей. (Ноябрь 2019) (Узнайте, как и когда удалить этот шаблон сообщения) |
В отличие от базы данных, где узлы глобальных переменных должны помещаться в блоке базы данных, строки локальных переменных могут увеличиваться до 1 МБ. Среда выполнения GT.M обеспечивает динамическое выделение памяти со сборкой мусора. Количество локальных переменных и количество узлов в локальных переменных ограничено только хранилищем, доступным процессу. Область видимости локальной переменной по умолчанию - это время жизни процесса. Локальные переменные, созданные в подпрограммах с помощью команды New, имеют более ограниченную область действия.
Подпрограммы GT.M динамически компилируются и связываются для выполнения в адресном пространстве каждого процесса. За исключением 32-битной реализации GT.M для платформы x86 GNU / Linux, объектные модули также могут быть размещены в разделяемых библиотеках со стандартным ld
команда, и в этом случае используется общая память. Это важно, потому что такое приложение, как VistA имеет более 20 000 подпрограмм, скомпилированный объектный код которых превышает 200 МБ. В крупной больнице, где работает VistA, могут одновременно работать тысячи пользовательских процессов.
За некоторыми небольшими исключениями, GT.M включает почти полную реализацию Стандарт ISO M (ласково известный как МАМПЫ по историческим причинам).
В GT.M код M может свободно вызывать код C (или код на других языках с интерфейсом, совместимым с C), а код C может свободно вызывать код M (так что программа верхнего уровня может быть C главный()
). Например, это Модуль GT.M в CPAN, m_python для доступа из Python или же EGTM обязательный для Erlang.
Веб-сервисы, написанные на GT.M, могут быть развернуты под Интернет супер сервер Такие как inetd или же xinetd. Веб-приложения могут использовать многоуровневое программное обеспечение, такое как EWD или же CFMumps.
Платформы
GT.M полностью поддерживается на следующих платформах:[8]
- AIX на IBM System p
- GNU / Linux на x86_64 и IA-32 (x86) архитектуры. YottaDB вилка GT.M добавляет поддержку РУКА.[9]
GT.M больше не поддерживается на следующих платформах:
- HP-UX по состоянию на октябрь 2015 г. (V6.2-002A)
- OpenVMS по состоянию на декабрь 2014 г. (V6.2-001)
- Солярис по состоянию на декабрь 2015 г. (V6.2-002A)
Кодовая база для GT.M на GNU / Linux на IA-32 (x86) включает изменения, необходимые для работы Cygwin на Майкрософт Виндоус но это не поддерживаемая платформа.
Лицензирование
На GNU / Linux на x86-64 & IA-32 (x86) и на OpenVMS на Альфа / AXP, GT.M выпущен как Бесплатное / открытое программное обеспечение (FOSS) в соответствии с условиями Стандартная общественная лицензия GNU Affero, версия 3. На других платформах он доступен по проприетарным лицензиям.
Общие приложения
GT.M преимущественно используется в сфере здравоохранения и финансовых услуг. Первое промышленное использование GT.M было в 1986 году в Мемориальном травматологическом центре Элвиса Пресли в г. Мемфис, Теннесси. Через Профиль FIS, это сила ING DIRECT банки в США, Канаде, Испании, Франции и Италии.[5]
SQL и ODBC доступ к базам данных GT.M существует как отдельный коммерческий продукт.
Рекомендации
- ^ https://web.archive.org/web/20001209123800/http://linuxpr.com/releases/2859.html
- ^ http://www.redhat.com/f/pdf/rhel/Profile_Benchmark_Results_11-17-2007.pdf
- ^ https://www.fintechfutures.com/2018/05/uk-challenger-banks-whos-who-and-whats-their-tech/
- ^ https://ibsintelligence.com/ibs-journal/ibs-news/sainsbury-s-bank-suffers-systems-outage/
- ^ а б http://www.allbusiness.com/banking-finance/banking-lending-credit-services-cash/6129691-1.html
- ^ «Архивная копия». Архивировано из оригинал на 2011-06-08. Получено 2010-01-07.CS1 maint: заархивированная копия как заголовок (связь)
- ^ http://www.redhat.com/solutions/healthcare/partners/GTM/
- ^ [1]
- ^ https://github.com/YottaDB/YottaDB/issues/61
дальнейшее чтение
- Игнасио Вальдес (17 ноября 2002 г.), К.С. Бхаскар получает награду LMN за достижения 2002 года, linuxmednews.com