GT.M
   HOME

TheInfoList



OR:

GT.M is a high-throughput
key–value database A key–value database, or key–value store, is a data storage paradigm designed for storing, retrieving, and managing associative arrays, and a data structure more commonly known today as a ''dictionary'' or ''hash table''. Dictionaries conta ...
engine optimized for
transaction processing Transaction processing is information processing in computer science that is divided into individual, indivisible operations called ''transactions''. Each transaction must succeed or fail as a complete unit; it can never be only partially compl ...
. (It is a type also referred to as "schema-less", "schema-free", or " NoSQL".) GT.M is also an application development platform and a
compiler In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs tha ...
for the
ISO ISO is the most common abbreviation for the International Organization for Standardization. ISO or Iso may also refer to: Business and finance * Iso (supermarket), a chain of Danish supermarkets incorporated into the SuperBest chain in 2007 * Iso ...
standard M language, also known as MUMPS. GT.M, an abbreviation for ''Greystone Technology M,'' was developed by the Greystone Technology Corp in the 1980s. It is an implementation of ANSI standard M for
AIX Aix or AIX may refer to: Computing * AIX, a line of IBM computer operating systems *An Alternate Index, for a Virtual Storage Access Method Key Sequenced Data Set * Athens Internet Exchange, a European Internet exchange point Places Belgi ...
and
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
. In addition to preserving the traditional features of M, GT.M also offers an
optimizing compiler In computing, an optimizing compiler is a compiler that tries to minimize or maximize some attributes of an executable computer program. Common requirements are to minimize a program's execution time, memory footprint, storage size, and power cons ...
that produces object code that does not require internal
interpreters Interpreting is a translational activity in which one produces a first and final target-language output on the basis of a one-time exposure to an expression in a source language. The most common two modes of interpreting are simultaneous interp ...
during execution. The database engine, made open source in 2000, is maintained by
FIS FIS or fis may refer to: Science and technology * '' Fis'', an ''E. Coli'' gene * Fis phenomenon, a phenomenon in linguistics * F♯ (musical note) * Flight information service, an air traffic control service * Frame Information Structure, a Se ...
. GT.M is used as the backend of their ''FIS Profile'' banking application, and it powers banks in
Spain , image_flag = Bandera de España.svg , image_coat = Escudo de España (mazonado).svg , national_motto = ''Plus ultra'' (Latin)(English: "Further Beyond") , national_anthem = (English: "Royal March") , i ...
,
France France (), officially the French Republic ( ), is a country primarily located in Western Europe. It also comprises of overseas regions and territories in the Americas and the Atlantic, Pacific and Indian Oceans. Its metropolitan area ...
,
Italy Italy ( it, Italia ), officially the Italian Republic, ) or the Republic of Italy, is a country in Southern Europe. It is located in the middle of the Mediterranean Sea, and its territory largely coincides with the homonymous geographical ...
, the
Netherlands ) , anthem = ( en, "William of Nassau") , image_map = , map_caption = , subdivision_type = Sovereign state , subdivision_name = Kingdom of the Netherlands , established_title = Before independence , established_date = Spanish Netherl ...
,
Romania Romania ( ; ro, România ) is a country located at the crossroads of Central, Eastern, and Southeastern Europe. It borders Bulgaria to the south, Ukraine to the north, Hungary to the west, Serbia to the southwest, Moldova to the east, and ...
and
India India, officially the Republic of India (Hindi: ), is a country in South Asia. It is the seventh-largest country by area, the second-most populous country, and the most populous democracy in the world. Bounded by the Indian Ocean on the so ...
; Capital One 360 in the United States; Tangerine (Scotiabank) in Canada; Atom Bank;
Tandem Bank Tandem Money is a company that owns Tandem Bank, one of the UK's original challenger banks. Tandem Bank is a digital bank with a mobile app, and no branches, with a mission to be the UK's greener digital bank. The acquisition of Harrods Bank in ...
;
Sainsbury's Bank Sainsbury's Bank plc, trading as Sainsbury's Bank, is a British bank wholly owned by Sainsbury's, a national supermarket chain in the United Kingdom. The bank began trading on 19 February 1997 as a joint venture between J Sainsbury plc and Bank ...
; Scottish Widows and Barclays Direct in the UK.http://www.allbusiness.com/banking-finance/banking-lending-credit-services-cash/6129691-1.html It is also used as an open source backend for the Electronic Health Record system WorldVistA and other open source EHRs such as Medsphere's OpenVista. It is listed as an open source healthcare solution partner of Red Hat. Today it consists of approximately 2 million lines of code.


Technical overview

GT.M consists of a language subsystem, a database subsystem, and utility programs. The language subsystem and database subsystem are closely integrated, but each is usable without the other. The language and database subsystems share common data organization and typing.


Data organization and typing

Like MUMPS, GT.M has no real concept of different data types, though strings (those which are not fully numeric) must be placed in quotes to differentiate them from variables. Numbers can be treated as strings of digits, or strings can be treated as numbers by numeric operators (coerced, in MUMPS terminology). Data is treated based on context and the rules of GT.M: 1+"42" yields the result 43, the first character of 43 is 4, and 20+"30 DUCKS" is 50 (as non-numeric characters are dropped during numeric operations). There is only one data structure - multi-dimensional sparse arrays (key-value nodes, sub-trees, and associative memory are all equally valid descriptions) with up to 32 subscripts. A scalar can be thought of as an array element with zero subscripts. Nodes with varying numbers of subscripts (including one node with no subscripts) can freely co-exist in the same array. For example, if one wanted to represent the national capitals of the United States:
Set Capital("United States")="Washington"
Set Capital("United States",1774,1776)="Philadelphia"
Set Capital("United States",1776,1777)="Baltimore"
Variables are created on demand when first assigned to. Thus, the first Set command above would create the variable Capital. Variables have scope in the language, and are called ''local variables''. A database access looks like an array access, for example:
Set ^Capital("United States")="Washington"
but the caret (^) means that it is a database access. Variables used for database access have a single global scope, and of course persist and shared between processes. They are called ''global variables''. The first 31 characters of a variable name are significant. The Kill and ZKill commands are used to delete subtrees of values. GT.M uses
Unicode Unicode, formally The Unicode Standard,The formal version reference is is an information technology standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems. The standard, wh ...
( ISO/IEC-10646) for international character set support.


Database subsystem

The ''logical database'' of a GT.M process consists of one or more ''global variable name spaces'', each consisting of unlimited number of global variables. For each global variable name space, a ''global directory'' maps global variables to the database files where they actually reside. An unlimited number of global variables can fit within one database file; a global variable must fit in one database file. A database file consists of up to 224M (276,168,704) database blocks. A database block is a multiple of 512 bytes, with a maximum size of 65,024 bytes. Commonly used block sizes are 4KB, 8KB and 16KB - so, with an 8KB block size, an individual global variable can grow to 1,792GB. A global variable node (global variable, subscripts plus value) must fit in one database block and each block has a 16 byte overhead. So, the largest node that will fit in a database with a 4KB block size is 4,080 bytes. A key (global variable plus subscripts) can be up to 255 bytes. The database engine is daemonless and processes accessing the database operate with normal user and group ids - a process has access to a database file if and only if the ownership and permissions of that database file (plus any layered access control such as
SELinux Security-Enhanced Linux (SELinux) is a Linux kernel security module that provides a mechanism for supporting access control security policies, including mandatory access controls (MAC). SELinux is a set of kernel modifications and user-space ...
) permits access. Each process has within its address space all the logic needed to manage the database, and processes cooperate with one another to manage database files. When a database file is journaled, updates are written to journal files before being written to database files, and in the event of a system crash, database files can be recovered from journal files. The database engine also supports
transaction processing Transaction processing is information processing in computer science that is divided into individual, indivisible operations called ''transactions''. Each transaction must succeed or fail as a complete unit; it can never be only partially compl ...
. So, code such as: TStart () Set ^Capital("France")="Paris" Set ^Country("Paris")="France" TCommit implements an ACID transaction. GT.M uses
optimistic concurrency control Optimistic concurrency control (OCC), also known as optimistic locking, is a concurrency control method applied to transactional systems such as relational database management systems and software transactional memory. OCC assumes that multiple tran ...
to manage transactions. A plug-in architecture allows the database to be encrypted in order to protect data at rest. GT.M is distributed with reference plug-in that uses
GnuPG GNU Privacy Guard (GnuPG or GPG) is a free-software replacement for Symantec's PGP cryptographic software suite. The software is compliant with RFC 4880, the IETF standards-track specification of OpenPGP. Modern versions of PGP are interoperabl ...
.


Language subsystem

Unlike the database where global variable nodes must fit within a database block, local variable strings can grow to 1MB. The GT.M run-time provides dynamic storage allocation with garbage collection. The number of local variables and the number of nodes in local variables are limited only by storage available to the process. The default scope of a local variable is the lifetime of a process. Local variables created within routines using the New command have more limited scope. GT.M routines are dynamically compiled and linked for execution in the address space of each process. With the exception of the 32-bit implementation of GT.M for the x86 Linux platform, object modules can also be placed in shared libraries with the standard ld command, in which case the memory used is shared. This is important because an application such as
VistA Vista usually refers to a distant view. Vista may also refer to: Software *Windows Vista, the line of Microsoft Windows client operating systems released in 2006 and 2007 * VistA, (Veterans Health Information Systems and Technology Architecture) ...
has over 20,000 routines whose compiled object code exceeds 200MB. A large hospital running VistA can have thousands of concurrently running user processes. With a couple of small exceptions, GT.M includes a nearly complete implementation o
ISO standard M
(affectionately known as MUMPS for historical reasons). In GT.M, M code can freely call out to C code (or code in other languages with a C compatible interface), and C code can freely call in to M code (so the top level program can be a C main()). For example, is
GT.M module in CPANm_python
for access from
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
o
EGTM
binding for Erlang. Web services written in GT.M can be deployed under an Internet super server such as
inetd inetd (internet service daemon) is a super-server daemon on many Unix systems that provides Internet services. For each configured service, it listens for requests from connecting clients. Requests are served by spawning a process which runs the ...
or
xinetd In computer networking, xinetd (''Extended Internet Service Daemon'') is an open-source super-server daemon which runs on many Unix-like systems, and manages Internet-based connectivity. It offers a more secure alternative to the older inetd ...
. Web-enabled applications can use layered software such a
EWD
o
CFMumps


Platforms

GT.M is fully supported on the following platforms: *
AIX Aix or AIX may refer to: Computing * AIX, a line of IBM computer operating systems *An Alternate Index, for a Virtual Storage Access Method Key Sequenced Data Set * Athens Internet Exchange, a European Internet exchange point Places Belgi ...
on
IBM System p The IBM System p is a high-end line of RISC (Power)/UNIX-based servers. It was the successor of the RS/6000 line, and predecessor of the IBM Power Systems server series. History The previous RS/6000 line was originally a line of workstations an ...
*
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
on
x86_64 x86-64 (also known as x64, x86_64, AMD64, and Intel 64) is a 64-bit version of the x86 instruction set, first released in 1999. It introduced two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging mo ...
and
IA-32 IA-32 (short for "Intel Architecture, 32-bit", commonly called i386) is the 32-bit version of the x86 instruction set architecture, designed by Intel and first implemented in the 80386 microprocessor in 1985. IA-32 is the first incarnation o ...
(
x86 x86 (also known as 80x86 or the 8086 family) is a family of complex instruction set computer (CISC) instruction set architectures initially developed by Intel based on the Intel 8086 microprocessor and its 8088 variant. The 8086 was intr ...
) architectures. The YottaDB
fork In cutlery or kitchenware, a fork (from la, furca 'pitchfork') is a utensil, now usually made of metal, whose long handle terminates in a head that branches into several narrow and often slightly curved tine (structural), tines with which one ...
of GT.M adds support for
ARM In human anatomy, the arm refers to the upper limb in common usage, although academically the term specifically means the upper arm between the glenohumeral joint (shoulder joint) and the elbow joint. The distal part of the upper limb between th ...
. GT.M is no longer supported on these platforms: * HP-UX as of October 2015 (V6.2-002A) * OpenVMS as of December 2014 (V6.2-001) * Solaris as of December 2015 (V6.2-002A) The code base for GT.M on
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
on
IA-32 IA-32 (short for "Intel Architecture, 32-bit", commonly called i386) is the 32-bit version of the x86 instruction set architecture, designed by Intel and first implemented in the 80386 microprocessor in 1985. IA-32 is the first incarnation o ...
(
x86 x86 (also known as 80x86 or the 8086 family) is a family of complex instruction set computer (CISC) instruction set architectures initially developed by Intel based on the Intel 8086 microprocessor and its 8088 variant. The 8086 was intr ...
) includes changes needed to run on Cygwin on Microsoft Windows but this is not a supported platform.


Licensing

On
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
on
x86-64 x86-64 (also known as x64, x86_64, AMD64, and Intel 64) is a 64-bit version of the x86 instruction set, first released in 1999. It introduced two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging ...
&
IA-32 IA-32 (short for "Intel Architecture, 32-bit", commonly called i386) is the 32-bit version of the x86 instruction set architecture, designed by Intel and first implemented in the 80386 microprocessor in 1985. IA-32 is the first incarnation o ...
(
x86 x86 (also known as 80x86 or the 8086 family) is a family of complex instruction set computer (CISC) instruction set architectures initially developed by Intel based on the Intel 8086 microprocessor and its 8088 variant. The 8086 was intr ...
), and on OpenVMS on Alpha/AXP, GT.M is released as Free / Open Source Software (FOSS) under the terms of th
GNU Affero General Public License, version 3
On other platforms, it is available under proprietary licenses.


Common applications

GT.M is predominantly used in healthcare and financial services industry. The first production use of GT.M was in 1986 at the Elvis Presley Memorial Trauma Center in
Memphis, Tennessee Memphis is a city in the U.S. state of Tennessee. It is the seat of Shelby County in the southwest part of the state; it is situated along the Mississippi River. With a population of 633,104 at the 2020 U.S. census, Memphis is the second-mos ...
. Through ''FIS Profile'', it powers banks in the United States, Canada, Spain, France and Italy. SQL and ODBC access to GT.M databases exists as separate commercial products.


References

{{reflist


Further reading

* Ignacio Valdes (November 17, 2002)
K.S. Bhaskar Receives 2002 LMN Achievement Award
linuxmednews.com


External links


Project page at SourceForge

GT.M documentation

YottaDB
a GT.M fork
EGTM: GT.M binding for Erlang

nodem: GT.M binding for Node.js
MUMPS implementations Free database management systems Structured storage FIS (company) Electronic health record software Software using the GNU AGPL license