GT.M

from Wikipedia, the free encyclopedia

GT.M is a key-value database engine that is optimized for transaction processing. GT.M includes a development platform and a compiler for ISO -Standard- M - programming language , also known as MUMPS .

GT.M, an abbreviation for Greystone Technology M , was developed by Greystone Technology Corp in 1980. It is an implementation of the ANSI standard M for Unix systems and OpenVMS . In addition to the traditional M functionalities, GT.M also offers a compiler that generates machine code directly .

The database engine, which was released as open source in 2000 , is maintained by Fidelity Information Services .

GT.M is used in the FIS Profile banking application, which is used by ING-DIRECT banks in the USA, Canada, Spain, France, Italy, Holland and Great Britain.

Technical overview

GT.M consists of a programming language, a database and utilities. The programming language and database are integrated together, but neither is useful without the other. The programming language and database use the same file organization and typing.

Data organization and typing

GT.M only has two data types: natural numbers and strings. A string is any character string (including zeros). A string like contains "42"a natural number. The typing is dynamic and the conversion between types is done in the processor : 1+"42"gives the result 43, and the first character of 43is 4.

There is only one data structure, multidimensional arrays (key-value nodes, sub-trees and associative memory are equal descriptions) with up to 32 subscripts . A scalar can be thought of as an array element with 0 subscripts. Nodes with different numbers of subscripts (including a node with no subscript) can exist in the same array. For example, if someone wants to represent the list of capitals in the United States :

Set Hauptstadt("USA")="Washington"
Set Hauptstadt("USA",1774,1776)="Philadelphia"
Set Hauptstadt("USA",1776,1777)="Baltimore"

Variables are created when required when they are first assigned. The first set command above creates the variable Hauptstadt. Variables are part of the programming language and are so-called local variables . A database access looks like an array access, for example:

Set ^Hauptstadt("USA")="Washington"

but the exponential sign (^) means database access. Variables in the database have only one global area and are of course persistent and shared by all processes. They are so-called global variables . The first 31 characters of a variable variable name are significant.

The Kill and ZKill commands are used to delete subtrees of the variables.

Numbers in GT.M are 18 digits exactly (before or after the decimal point). Scientific notation is used for larger numbers.

GT.M uses the Unicode ( ISO / IEC-10646 ).

Integrated database

The logical database of a GT.M process contains one or more global variable namespaces , each of which has an unlimited number of global variables. A database file consists of up to 224M (276,168,704) blocks of data. A global variable can be up to 1,792 GB in size.

The database supports transactions. The following code implements an ACID transaction:

TStart ()
 Set ^Hauptstadt("Frankreich")="Paris"
 Set ^Land("Paris")="Frankreich"
TCommit

Integrated programming language

Local variables can be up to one megabyte in size. The GT.M runtime environment uses dynamic memory allocation and garbage collection . GT.M routines are dynamically compiled and linked before execution .

With a few exceptions GT.M includes the complete implementation of the ISO standard M.

The M program can call C code and vice versa, that is, a normal C main program ( main()) can be used as the main program .

Platforms

GT.M supports the following platforms:

GT.M is also available for the following platforms:

Licenses

GT.M is released as Free / Open Source Software (FOSS) for GNU / Linux and OpenVMS . License: GNU Affero General Public License, version 3.

The other platforms are proprietary .

SQL and ODBC access to GT.M are offered as commercial products.

Web links

Individual evidence

  1. GNU Affero General Public License, version 3