GT.M

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

GT.M ist eine Key-Value Datenbank-Engine, die für die Transaktions-Verarbeitung optimiert ist. GT.M beinhaltet eine Entwicklungsplattform und einen Compiler für die ISO-Standard-M-Programmiersprache, auch bekannt als MUMPS.

GT.M, eine Abkürzung für Greystone Technology M und wurde 1980 bei Greystone Technology Corp entwickelt. Es ist eine Implementierung des ANSI-Standard M für Unix-Systeme und OpenVMS. Zusätzlich zu den traditionellen M-Funktionalitäten, GT.M offeriert auch einen Compiler, der direkt Maschinencode erzeugt.

Die Datenbank-Engine, die im Jahre 2000 als Open Source veröffentlicht wurde, wird von Fidelity Information Services gewartet.

GT.M wird bei der FIS-Profile-Banken Anwendung verwendet, die bei den ING-DIRECT-Banken in den USA, Kanada, Spanien, Frankreich, Italien, Holland und Großbritannien im Einsatz steht.

Technischer Überblick[Bearbeiten]

GT.M besteht aus einer Programmiersprache, einer Datenbank und Dienstprogrammen. Die Programmiersprache und die Datenbank sind zusammen integriert, aber keine ist ohne die andere nützlich. Programmiersprache und Datenbank benützen die gleiche Dateiorganisation und Typisierung.

Datenorganisation und Typisierung[Bearbeiten]

GT.M hat nur zwei Datentypen: Natürliche Zahlen und Strings. Ein String ist eine beliebige Zeichenkette (inklusive Nullen). Ein String wie "42" beinhaltet eine natürliche Zahl. Die Typisierung ist dynamisch und die Umwandlung zwischen den Typen geschieht im Prozessor: 1+"42" ergibt das Resultat 43, und das erste Zeichen von 43 ist 4.

Es gibt nur eine Datenstruktur, multidimensionale Arrays (Key-Value Nodes, Sub-Trees, und Associative Memory sind ebenbürtige Beschreibungen) mit bis zu 32 Subscripts. Ein Scalar kann als ein Array-Element mit 0 Subscripts gedacht werden. Nodes mit verschiedener Anzahl von Subscripts (inklusive ein Node mit keinem Subscript) kann im gleichen Array existieren. Zum Beispiel, wenn jemand die Liste der US-amerikanischen Hauptstädte repräsentieren möchte:

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

Variablen werden bei der ersten Zuweisung bei Bedarf erzeugt. Der erste Set-Befehl oben erzeugt die Variable Hauptstadt. Variablen sind Bestandteil der Programmiersprache und sind sogenannte lokale Variablen. Ein Datenbankzugriff schaut wie ein Array-Zugriff aus, zum Beispiel:

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

aber das Exponentialzeichen (^) bedeutet einen Datenbank Zugriff. Variablen in der Datenbank haben nur einen globalen Bereich und sind natürlich persistent und werden von allen Prozessen gemeinsam benützt. Es sind sogenannte globale Variablen. Die ersten 31 Zeichen eines Variable variable Namen sind signifikant.

Der Kill- und ZKill-Befehl werden benützt um Unterbäume der Variablen zu löschen.

Zahlen in GT.M sind 18 Digits genau (vor oder nach dem Komma). Die Wissenschaftliche Notation werden bei größeren Zahlen verwendet .

GT.M benützt den Unicode (ISO/IEC-10646).

Integrierte Datenbank[Bearbeiten]

Die logische Datenbank eines GT.M-Prozesses enthält einen oder mehrere Globale-Variablen-Namensbereiche, jeder hat eine unbegrenzte Anzahl globaler Variablen. Eine Datenbankdatei besteht bis zu 224M (276,168,704) Datenblöcken. Eine globale Variable kann bis zu 1,792 GB groß werden.

Die Datenbank unterstützt Transaktionen. Der folgende Code implementiert eine ACID-Transaktion:

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

Integrierte Programmiersprache[Bearbeiten]

Lokale Variablen können bis zu einem Megabyte groß werden. Die GT.M-Laufzeitumgebung benützt dynamische Speicherzuteilung und Garbage Collection. GT.M-Routinen werden vor der Ausführung dynamisch compiliert und gelinkt.

Mit wenigen Ausnahmen GT.M beinhaltet die komplette Implementierung des ISO-Standard M.

Das M-Programm kann C-Code aufrufen und umgekehrt, das heißt, als Hauptprogramm kann ein normales C-Hauptprogramm (main()) genutzt werden.

Plattformen[Bearbeiten]

GT.M unterstützt die folgenden Plattformen:

GT.M ist auch für die folgenden Plattformen verfügbar:

Lizenzen[Bearbeiten]

Die GNU/Linux auf x86-64 und IA-32 (x86), und OpenVMS auf Alpha/AXP ist als Free / Open Source Software (FOSS) veröffentlicht unter der Lizenz: GNU Affero General Public License, version 3[1]. Die anderen Plattformen sind proprietär.

SQL- und ODBC-Zugriff auf GT.M werden als kommerzielle Produkte angeboten.

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. GNU Affero General Public License, version 3